‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
sound_shared.gsc
Go to the documentation of this file.
1 #using scripts\shared\util_shared;
2 
3 #insert scripts\shared\shared.gsh;
4 
5 #namespace sound;
6 //TODO T7 - investigate "sounddone" notify and if we should get MP to support it
7 function ‪loop_fx_sound( alias, origin, ender )
8 {
9  org = ‪Spawn( "script_origin", ( 0, 0, 0 ) );
10  if( isdefined( ender ) )
11  {
12  thread ‪loop_delete( ender, org );
13  self endon( ender );
14  }
15  org.origin = origin;
16  org PlayLoopSound( alias );
17 }
18 
19 function ‪loop_delete( ender, ent )
20 {
21  ent endon( "death" );
22  self waittill( ender );
23  ent Delete();
24 }
25 
36 function ‪play_in_space( alias, origin, master )
37 {
38  org = ‪Spawn( "script_origin", ( 0, 0, 1 ) );
39 
40  if( !isdefined( origin ) )
41  {
42  origin = self.origin;
43  }
44  org.origin = origin;
45  org PlaySoundWithNotify( alias, "sounddone" );
46  org waittill( "sounddone" );
47 
48  if( isdefined( org ) )
49  {
50  org Delete();
51  }
52 }
53 
66 function ‪loop_on_tag( alias, tag, bStopSoundOnDeath )
67 {
68  org = ‪Spawn( "script_origin", ( 0, 0, 0 ) );
69  org endon( "death" );
70  if ( !isdefined( bStopSoundOnDeath ) )
71  {
72  bStopSoundOnDeath = true;
73  }
74  if ( bStopSoundOnDeath )
75  {
76  thread ‪util::delete_on_death( org );
77  }
78  if( isdefined( tag ) )
79  {
80  org LinkTo( self, tag, ( 0, 0, 0 ), ( 0, 0, 0 ) );
81  }
82  else
83  {
84  org.origin = self.origin;
85  org.angles = self.angles;
86  org LinkTo( self );
87  }
88  // org endon( "death" );
89  org PlayLoopSound( alias );
90  // println( "playing loop sound ", alias, " on entity at origin ", self.origin, " at ORIGIN ", org.origin );
91  self waittill( "stop sound" + alias );
92  org StopLoopSound( alias );
93  org Delete();
94 }
95 
108  //TODO T7 - change these calls over to use the code function PlaySoundOnTag once available
109 function ‪play_on_tag( alias, tag, ends_on_death )
110 {
111  /*if ( ai::is_dead_sentient() )
112  {
113  return;
114  }*///TODO T7 - will we add this check back?
115 
116  org = ‪Spawn( "script_origin", ( 0, 0, 0 ) );
117  org endon( "death" );
118 
119  thread ‪delete_on_death_wait( org, "sounddone" );
120  if ( isdefined( tag ) )
121  {
122  org.origin = self GetTagOrigin( tag );
123  org LinkTo( self, tag, ( 0, 0, 0 ), ( 0, 0, 0 ) );
124  }
125  else
126  {
127  org.origin = self.origin;
128  org.angles = self.angles;
129  org LinkTo( self );
130  }
131 
132  org PlaySoundWithNotify( alias, "sounddone" );
133 
134  if ( isdefined( ends_on_death ) )
135  {
136  assert( ends_on_death, "ends_on_death must be true or undefined" );
138  /*if( ai::is_dead_sentient() )
139  {
140  org StopSounds();
141  }*///TODO T7 - will we add this check back?
142  ‪WAIT_SERVER_FRAME; // stopsounds doesnt work if the org is deleted same frame
143  }
144  else
145  {
146  org waittill( "sounddone" );
147  }
148  org Delete();
149 }
150 
161 function ‪play_on_entity( alias )
162 {
163  ‪play_on_tag( alias );
164 }
165 
167 {
168  self endon( "death" );
169  org waittill( "sounddone" );
170 }
171 
182 function ‪stop_loop_on_entity( alias )
183 {
184  self notify( "stop sound" + alias );
185 }
186 
198 function ‪loop_on_entity( alias, offset )
199 {
200  org = ‪Spawn( "script_origin", ( 0, 0, 0 ) );
201  org endon( "death" );
202  thread ‪util::delete_on_death( org );
203  if( isdefined( offset ) )
204  {
205  org.origin = self.origin + offset;
206  org.angles = self.angles;
207  org LinkTo( self );
208  }
209  else
210  {
211  org.origin = self.origin;
212  org.angles = self.angles;
213  org LinkTo( self );
214  }
215  // org endon( "death" );
216  org PlayLoopSound( alias );
217  // println( "playing loop sound ", alias, " on entity at origin ", self.origin, " at ORIGIN ", org.origin );
218  self waittill( "stop sound" + alias );
219  org StopLoopSound( 0.1 );
220  org Delete();
221 }
222 
223 function ‪loop_in_space(alias, origin, ender)
224 {
225  org = ‪Spawn("script_origin",(0,0,1));
226 
227  if(!isdefined(origin))
228  {
229  origin = self.origin;
230  }
231 
232  org.origin = origin;
233  org PlayLoopSound(alias);
234 
235  level waittill(ender);
236 
237  org StopLoopSound();
238  wait 0.1;
239  org Delete();
240 }
241 
242 function ‪delete_on_death_wait( ent, sounddone )
243 {
244  ent endon( "death" );
245  self waittill( "death" );
246  if( isdefined( ent ) )
247  {
248  /*if ( ent IsWaitingOnSound() )//TODO T7 - need this added to MP, not necessary if we don't add "sounddone" support
249  {
250  ent waittill( sounddone );
251  }*/
252 
253  ent Delete();
254  }
255 }
256 
257 function ‪play_on_players( sound, team )
258 {
259  assert( isdefined( level.players ) );
260 
261  if ( level.splitscreen )
262  {
263  if ( isdefined( level.players[0] ) )
264  level.players[0] PlayLocalSound(sound);
265  }
266  else
267  {
268  if ( isdefined( team ) )
269  {
270  for ( i = 0; i < level.players.size; i++ )
271  {
272  player = level.players[i];
273  if ( isdefined( player.pers["team"] ) && (player.pers["team"] == team))
274  player PlayLocalSound(sound);
275  }
276  }
277  else
278  {
279  for ( i = 0; i < level.players.size; i++ )
280  level.players[i] PlayLocalSound(sound);
281  }
282  }
283 }
‪stop_loop_on_entity
‪function stop_loop_on_entity(alias)
Definition: sound_shared.gsc:182
‪play_on_entity
‪function play_on_entity(alias)
Definition: sound_shared.gsc:161
‪loop_delete
‪function loop_delete(ender, ent)
Definition: sound_shared.gsc:19
‪loop_on_entity
‪function loop_on_entity(alias, offset)
Definition: sound_shared.gsc:198
‪play_on_players
‪function play_on_players(sound, team)
Definition: sound_shared.gsc:257
‪loop_on_tag
‪function loop_on_tag(alias, tag, bStopSoundOnDeath)
Definition: sound_shared.gsc:66
‪play_in_space
‪function play_in_space(alias, origin, master)
Definition: sound_shared.gsc:36
‪delete_on_death_wait
‪function delete_on_death_wait(ent, sounddone)
Definition: sound_shared.gsc:242
‪play_on_tag
‪function play_on_tag(alias, tag, ends_on_death)
Definition: sound_shared.gsc:109
‪loop_in_space
‪function loop_in_space(alias, origin, ender)
Definition: sound_shared.gsc:223
‪Spawn
‪function Spawn(parent, onDeathCallback)
Definition: _flak_drone.gsc:427
‪loop_fx_sound
‪function loop_fx_sound(alias, origin, ender)
Definition: sound_shared.gsc:7
‪wait_for_sounddone_or_death
‪function wait_for_sounddone_or_death(org)
Definition: sound_shared.gsc:166
‪delete_on_death
‪function delete_on_death(ent)
Definition: util_shared.gsc:1796
‪WAIT_SERVER_FRAME
‪#define WAIT_SERVER_FRAME
Definition: shared.gsh:265