‪Black Ops 3 Source Code Explorer  0.1
‪An script explorer for Black Ops 3 by ZeRoY
All Data Structures Files Functions Variables Macros
_gadget_vision_pulse.csc
Go to the documentation of this file.
1 #using scripts\codescripts\struct;
2 
3 #using scripts\shared\callbacks_shared;
4 #using scripts\shared\clientfield_shared;
5 #using scripts\shared\duplicaterender_mgr;
6 #using scripts\shared\filter_shared;
7 #using scripts\shared\visionset_mgr_shared;
8 #using scripts\shared\util_shared;
9 
10 #using scripts\shared\abilities\_ability_player;
11 #using scripts\shared\abilities\_ability_power;
12 #using scripts\shared\abilities\_ability_util;
13 
14 #insert scripts\shared\duplicaterender.gsh;
15 #insert scripts\shared\shared.gsh;
16 #insert scripts\shared\version.gsh;
17 #insert scripts\shared\abilities\gadgets\_gadget_vision_pulse.gsh;
18 
19 #using scripts\shared\system_shared;
20 
21 #namespace gadget_vision_pulse;
22 
23 ‪REGISTER_SYSTEM( "gadget_vision_pulse", &‪__init__, undefined )
24 
25 function ‪__init__()
26 {
27  if ( !SessionModeIsCampaignGame() )
28  {
30 
33  }
34 
37 }
38 
39 function ‪on_localplayer_spawned( localClientNum )
40 {
41  if( self == GetLocalPlayer( localClientNum ) )
42  {
43  self.vision_pulse_owner = undefined;
44  ‪filter::init_filter_vision_pulse( localClientNum );
45 
46  self gadgetpulseresetreveal();
47  self ‪set_reveal_self( localClientNum, false );
48  self ‪set_reveal_enemy( localClientNum, false );
49  self thread ‪watch_emped( localClientNum );
50  }
51 }
52 
53 function ‪watch_emped( localClientNum )
54 {
55  self endon( "entityshutdown" );
56 
57  while( 1 )
58  {
59  if( self IsEMPJammed() )
60  {
61  self thread ‪disableShader( localClientNum, 0 );
62  self notify ( "emp_jammed_vp" );
63  break;
64  }
66  }
67 }
68 
69 function ‪disableShader( localClientNum, duration )
70 {
71  self endon ("startVPShader" );
72  self endon( "death" );
73  self endon( "entityshutdown" );
74  self notify( "disableVPShader" );
75  self endon( "disableVPShader" );
76 
77  wait( duration );
78 
80 }
81 
82 function ‪watch_world_pulse_end( localClientNum )
83 {
84  self notify ( "watchworldpulseend" );
85  self endon ( "watchworldpulseend" );
86  self ‪util::waittill_any( "entityshutdown", "death", "emp_jammed_vp" );
87  ‪filter::set_filter_vision_pulse_constant( localClientNum, ‪FILTER_INDEX_VISION_PULSE, ‪VISION_PULSE_CONSTID_RADIUS, getvisionpulsemaxradius( localClientNum ) + 1 ); // Weird thing needed by the shader
88 }
89 
90 function ‪do_vision_world_pulse( localClientNum )
91 {
92  self endon( "entityshutdown" );
93  self endon( "death" );
94 
95  self notify( "startVPShader" );
96 
97  self thread ‪watch_world_pulse_end( localClientNum );
98 
104 
105  ‪startTime = GetServerTime( localClientNum );
106 
108  amount = 1.0;
109  irisAmount = 0.0;
110  pulsemaxradius = 0;
111  while( ( GetServerTime( localClientNum ) - starttime ) < ‪VISION_PULSE_DURATION )
112  {
113  elapsedTime = ( GetServerTime( localClientNum ) - starttime ) * 1.0;
115  {
116  irisAmount = elapsedTime / ( ‪VISION_PULSE_DURATION * ‪VISION_PULSE_FADE_RAMP_IN );
117  }
119  {
120  irisAmount = 1.0 - elapsedTime / ( ‪VISION_PULSE_DURATION * ‪VISION_PULSE_FADE_RAMP_OUT );
121  }
122  else
123  {
124  irisAmount = 0.0;
125  }
126  amount = 1.0 - elapsedTime / ‪VISION_PULSE_DURATION;
127  pulseRadius = getvisionpulseradius( localClientNum );
128  pulseMaxRadius = getvisionpulsemaxradius( localClientNum );
133  }
134 
135  ‪filter::set_filter_vision_pulse_constant( localClientNum, ‪FILTER_INDEX_VISION_PULSE, ‪VISION_PULSE_CONSTID_RADIUS, pulseMaxRadius + 1 ); // Weird thing needed by the shader
136 
137  self thread ‪disableShader( localClientNum, ‪VISION_PULSE_REVEAL_TIME / 1000 );
138 }
139 
141 {
142  if( isDefined( owner ) && ( owner isPlayer() ) && isAlive( owner ) )
143  {
144  return true;
145  }
146 
147  return false;
148 }
149 
150 function ‪watch_vision_pulse_owner_death( localClientNum )
151 {
152  self endon( "entityshutdown" );
153  self endon( "death" );
154  self endon( "finished_local_pulse" );
155  self notify ( "watch_vision_pulse_owner_death" );
156  self endon ( "watch_vision_pulse_owner_death" );
157 
158  owner = self.vision_pulse_owner;
159  if( ‪vision_pulse_owner_valid( owner ) )
160  {
161  owner ‪util::waittill_any( "entityshutdown", "death" );
162  }
163 
164  self notify ( "vision_pulse_owner_death" );
166  self thread ‪disableShader( localClientNum, ‪VISION_PULSE_REVEAL_TIME / 1000 );
167  self.vision_pulse_owner = undefined;
168 }
169 
170 function ‪do_vision_local_pulse( localClientNum )
171 {
172  self endon( "entityshutdown" );
173  self endon( "death" );
174  self endon ( "vision_pulse_owner_death" );
175 
176  self notify( "startVPShader" );
177 
178  self notify( "startLocalPulse" );
179  self endon( "startLocalPulse" );
180 
181  self thread ‪watch_vision_pulse_owner_death( localClientNum );
182 
183  origin = getrevealpulseorigin( localClientNum );
184  //pulseMaxRadius = getrevealpulsemaxradius( localClientNum );
191 
192  ‪startTime = GetServerTime( localClientNum );
193  while( ( GetServerTime( localClientNum ) - starttime ) < ‪VISION_PULSE_REVEAL_TIME )
194  {
195  if( (GetServerTime( localClientNum ) - starttime ) < ‪VISION_PULSE_DURATION )
196  {
197  pulseRadius = ( (GetServerTime( localClientNum ) - starttime ) / ‪VISION_PULSE_DURATION) * 2000;
198  }
199  //pulseRadius = GetRevealPulseRadius( localClientNum );
201 
203  }
204 
206  self thread ‪disableShader( localClientNum, ‪VISION_PULSE_REVEAL_TIME / 1000 );
207  self notify ( "finished_local_pulse" );
208  self.vision_pulse_owner = undefined;
209 }
210 
211 function ‪vision_pulse_changed( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
212 {
213  if ( newVal )
214  {
215  if( self == GetLocalPlayer( localClientNum ) )
216  {
217  if ( IsDemoPlaying() && (bnewent || oldval == newval ) )
218  {
219  return;
220  }
221 
222  self thread ‪do_vision_world_pulse( localClientNum );
223  }
224  }
225 }
226 
227 function ‪do_reveal_enemy_pulse( localClientNum )
228 {
229  self endon( "entityshutdown" );
230  self endon( "death" );
231 
232  self notify( "startEnemyPulse" );
233  self endon( "startEnemyPulse" );
234  ‪startTime = GetServerTime( localClientNum );
235  currTime = ‪startTime;
236 
237  self MapShaderConstant( localclientnum, 0, ‪VISION_PULSE_ENT_SCRIPT_VECTOR, 0.0, 0, 0, 0 );
238  while( ( currTime - starttime ) < ‪VISION_PULSE_REVEAL_TIME )
239  {
240  if( ( currTime - starttime ) > ( ‪VISION_PULSE_REVEAL_TIME - ‪VISION_PULSE_RAMP_OUT_TIME ) )
241  {
242  value = float( ( currTime - starttime - ( ‪VISION_PULSE_REVEAL_TIME - ‪VISION_PULSE_RAMP_OUT_TIME ) ) / ‪VISION_PULSE_RAMP_OUT_TIME );
243  self MapShaderConstant( localclientnum, 0, ‪VISION_PULSE_ENT_SCRIPT_VECTOR, value, 0, 0, 0 );
244  }
245 
247  currTime = GetServerTime( localClientNum );
248  }
249 }
250 
251 function ‪set_reveal_enemy( localClientNum, on_off )
252 {
253  if( on_off )
254  {
255  self thread ‪do_reveal_enemy_pulse( localClientNum );
256  }
257  self ‪duplicate_render::update_dr_flag( localClientNum, "reveal_enemy", on_off );
258 }
259 
260 function ‪set_reveal_self( localClientNum, on_off )
261 {
262  if( on_off && ( self == GetLocalPlayer( localClientNum ) ) )
263  {
264  self thread ‪do_vision_local_pulse( localClientNum );
265  }
266  else if( !on_off )
267  {
269  }
270 }
271 
272 function ‪gadget_visionpulse_reveal(localClientNum, bReveal)
273 {
274  self notify( "gadget_visionpulse_changed" );
275 
276  player = GetLocalPlayer( localClientNum );
277  //player motionpulse_enable( true );
278  if( !isDefined( self.visionPulseRevealSelf ) && player == self )
279  {
280  self.visionPulseRevealSelf = false;
281  }
282 
283  if( !isDefined( self.visionPulseReveal ) )
284  {
285  self.visionPulseReveal = false;
286  }
287 
288  if(player == self)
289  {
290  owner = self gadgetpulsegetowner( localClientNum );
291  if ( ( self.visionPulseRevealSelf != bReveal ) || ( isDefined( self.vision_pulse_owner ) && isDefined( owner ) && ( self.vision_pulse_owner != owner ) ) )
292  {
293  self.vision_pulse_owner = owner;
294  self.visionPulseRevealSelf = bReveal;
295  self ‪set_reveal_self( localClientNum, bReveal );
296  }
297  }
298  else
299  {
300  if ( self.visionPulseReveal != bReveal )
301  {
302  self.visionPulseReveal = bReveal;
303  self ‪set_reveal_enemy( localClientNum, bReveal );
304  }
305  }
306 }
‪VISION_PULSE_CONSTID_IRIS_FADE
‪#define VISION_PULSE_CONSTID_IRIS_FADE
Definition: _gadget_vision_pulse.gsh:22
‪startTime
‪class AnimationAdjustmentInfoZ startTime
‪VISION_PULSE_DURATION
‪#define VISION_PULSE_DURATION
Definition: _gadget_vision_pulse.gsh:34
‪VISION_PULSE_VISIONSET_ALIAS
‪#define VISION_PULSE_VISIONSET_ALIAS
Definition: _gadget_vision_pulse.gsh:44
‪vision_pulse_owner_valid
‪function vision_pulse_owner_valid(owner)
Definition: _gadget_vision_pulse.csc:140
‪enable_filter_vision_pulse
‪function enable_filter_vision_pulse(localClientNum, filterid)
Definition: filter_shared.csc:841
‪do_reveal_enemy_pulse
‪function do_reveal_enemy_pulse(localClientNum)
Definition: _gadget_vision_pulse.csc:227
‪CF_CALLBACK_ZERO_ON_NEW_ENT
‪#define CF_CALLBACK_ZERO_ON_NEW_ENT
Definition: version.gsh:103
‪VERSION_SHIP
‪#define VERSION_SHIP
Definition: version.gsh:36
‪disable_filter_vision_pulse
‪function disable_filter_vision_pulse(localClientNum, filterid)
Definition: filter_shared.csc:853
‪watch_emped
‪function watch_emped(localClientNum)
Definition: _gadget_vision_pulse.csc:53
‪REVEAL_MATERIAL_SELF
‪#define REVEAL_MATERIAL_SELF
Definition: _gadget_vision_pulse.gsh:4
‪DR_TYPE_OFFSCREEN
‪#define DR_TYPE_OFFSCREEN
Definition: duplicaterender.gsh:6
‪FILTER_INDEX_VISION_PULSE
‪#define FILTER_INDEX_VISION_PULSE
Definition: shared.gsh:492
‪VISION_PULSE_CONSTID_VIEWMODEL_ORIGIN_Y
‪#define VISION_PULSE_CONSTID_VIEWMODEL_ORIGIN_Y
Definition: _gadget_vision_pulse.gsh:29
‪VISION_PULSE_ENT_SCRIPT_VECTOR
‪#define VISION_PULSE_ENT_SCRIPT_VECTOR
Definition: _gadget_vision_pulse.gsh:41
‪VISION_PULSE_FADE_RAMP_OUT
‪#define VISION_PULSE_FADE_RAMP_OUT
Definition: _gadget_vision_pulse.gsh:39
‪register_visionset_info
‪function register_visionset_info(name, version, lerp_step_count, visionset_from, visionset_to, visionset_type=VSMGR_VISIONSET_TYPE_NAKED)
Definition: visionset_mgr_shared.csc:50
‪__init__
‪function __init__()
Definition: _gadget_vision_pulse.csc:25
‪gadget_visionpulse_reveal
‪function gadget_visionpulse_reveal(localClientNum, bReveal)
Definition: _gadget_vision_pulse.csc:272
‪set_reveal_self
‪function set_reveal_self(localClientNum, on_off)
Definition: _gadget_vision_pulse.csc:260
‪set_filter_vision_pulse_constant
‪function set_filter_vision_pulse_constant(localClientNum, filterid, constid, value)
Definition: filter_shared.csc:848
‪set_reveal_enemy
‪function set_reveal_enemy(localClientNum, on_off)
Definition: _gadget_vision_pulse.csc:251
‪DR_CULL_NEVER
‪#define DR_CULL_NEVER
Definition: duplicaterender.gsh:15
‪VISION_PULSE_CONSTID_MAX_RADIUS
‪#define VISION_PULSE_CONSTID_MAX_RADIUS
Definition: _gadget_vision_pulse.gsh:32
‪VISION_PULSE_CONSTID_HIGHLIGHT_ENEMIES
‪#define VISION_PULSE_CONSTID_HIGHLIGHT_ENEMIES
Definition: _gadget_vision_pulse.gsh:23
‪CF_HOST_ONLY
‪#define CF_HOST_ONLY
Definition: version.gsh:102
‪waittill_any
‪function waittill_any(str_notify1, str_notify2, str_notify3, str_notify4, str_notify5)
Definition: util_shared.csc:375
‪VISION_PULSE_CONSTID_VIEWMODEL_PULSE_WIDTH
‪#define VISION_PULSE_CONSTID_VIEWMODEL_PULSE_WIDTH
Definition: _gadget_vision_pulse.gsh:25
‪on_localplayer_spawned
‪function on_localplayer_spawned(localClientNum)
Definition: _gadget_vision_pulse.csc:39
‪REGISTER_SYSTEM
‪#define REGISTER_SYSTEM(__sys, __func_init_preload, __reqs)
Definition: shared.gsh:204
‪init_filter_vision_pulse
‪function init_filter_vision_pulse(localClientNum)
Definition: filter_shared.csc:835
‪watch_world_pulse_end
‪function watch_world_pulse_end(localClientNum)
Definition: _gadget_vision_pulse.csc:82
‪do_vision_world_pulse
‪function do_vision_world_pulse(localClientNum)
Definition: _gadget_vision_pulse.csc:90
‪VISION_PULSE_CONSTID_VIEWMODEL_PULSE_POSITION
‪#define VISION_PULSE_CONSTID_VIEWMODEL_PULSE_POSITION
Definition: _gadget_vision_pulse.gsh:30
‪VISION_PULSE_CONSTID_VIEWMODEL_ORIGIN_X
‪#define VISION_PULSE_CONSTID_VIEWMODEL_ORIGIN_X
Definition: _gadget_vision_pulse.gsh:28
‪VISION_PULSE_VISIONSET_STEPS
‪#define VISION_PULSE_VISIONSET_STEPS
Definition: _gadget_vision_pulse.gsh:46
‪disableShader
‪function disableShader(localClientNum, duration)
Definition: _gadget_vision_pulse.csc:69
‪set_dr_filter_offscreen
‪function set_dr_filter_offscreen(name, priority, require_flags, refuse_flags, drtype1, drval1, drcull1, drtype2, drval2, drcull2, drtype3, drval3, drcull3)
Definition: duplicaterender_mgr.csc:177
‪VISION_PULSE_CONSTID_EDGE_WIDTH
‪#define VISION_PULSE_CONSTID_EDGE_WIDTH
Definition: _gadget_vision_pulse.gsh:21
‪VISION_PULSE_RAMP_OUT_TIME
‪#define VISION_PULSE_RAMP_OUT_TIME
Definition: _gadget_vision_pulse.gsh:36
‪VISION_PULSE_CONSTID_RADIUS
‪#define VISION_PULSE_CONSTID_RADIUS
Definition: _gadget_vision_pulse.gsh:19
‪vision_pulse_changed
‪function vision_pulse_changed(localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump)
Definition: _gadget_vision_pulse.csc:211
‪update_dr_flag
‪function update_dr_flag(localClientNum, toset, setto=true)
Definition: duplicaterender_mgr.csc:221
‪register
‪function register()
Definition: _ai_tank.gsc:126
‪VISION_PULSE_CONSTID_PULSE_WIDTH
‪#define VISION_PULSE_CONSTID_PULSE_WIDTH
Definition: _gadget_vision_pulse.gsh:20
‪VISION_PULSE_CONSTID_VIEWMODEL_EDGE_WIDTH
‪#define VISION_PULSE_CONSTID_VIEWMODEL_EDGE_WIDTH
Definition: _gadget_vision_pulse.gsh:26
‪VISION_PULSE_VISIONSET
‪#define VISION_PULSE_VISIONSET
Definition: _gadget_vision_pulse.gsh:43
‪VISION_PULSE_CONSTID_VIEWMODEL_IS_PULSED
‪#define VISION_PULSE_CONSTID_VIEWMODEL_IS_PULSED
Definition: _gadget_vision_pulse.gsh:27
‪REVEAL_MATERIAL_ENEMY
‪#define REVEAL_MATERIAL_ENEMY
Definition: _gadget_vision_pulse.gsh:3
‪WAIT_CLIENT_FRAME
‪#define WAIT_CLIENT_FRAME
Definition: shared.gsh:266
‪VISION_PULSE_FADE_RAMP_IN
‪#define VISION_PULSE_FADE_RAMP_IN
Definition: _gadget_vision_pulse.gsh:38
‪VISION_PULSE_REVEAL_TIME
‪#define VISION_PULSE_REVEAL_TIME
Definition: _gadget_vision_pulse.gsh:35
‪do_vision_local_pulse
‪function do_vision_local_pulse(localClientNum)
Definition: _gadget_vision_pulse.csc:170
‪watch_vision_pulse_owner_death
‪function watch_vision_pulse_owner_death(localClientNum)
Definition: _gadget_vision_pulse.csc:150