1 #using scripts\shared\animation_debug_shared;
2 #using scripts\shared\clientfield_shared;
3 #using scripts\shared\flag_shared;
4 #using scripts\shared\flagsys_shared;
5 #using scripts\shared\postfx_shared;
6 #using scripts\shared\shaderanim_shared;
7 #using scripts\shared\system_shared;
9 #insert scripts\shared\shared.gsh;
10 #insert scripts\shared\version.gsh;
14 #define ANIM_NOTIFY "_anim_notify_"
39 function first_frame( animation, v_origin_or_ent, v_angles_or_tag )
41 self thread
play( animation, v_origin_or_ent, v_angles_or_tag, 0 );
44 function play( animation, v_origin_or_ent, v_angles_or_tag, n_rate = 1, n_blend_in = .2, n_blend_out = .2, n_lerp, b_link =
false )
46 self endon(
"entityshutdown" );
47 self thread
_play( animation, v_origin_or_ent, v_angles_or_tag, n_rate, n_blend_in, n_blend_out, n_lerp, b_link );
48 self waittill(
"scriptedanim" );
51 function _play( animation, v_origin_or_ent, v_angles_or_tag, n_rate = 1, n_blend_in = .2, n_blend_out = .2, n_lerp, b_link =
false )
53 self endon(
"entityshutdown" );
55 self notify(
"new_scripted_anim" );
56 self endon(
"new_scripted_anim" );
64 if ( IsVec( v_origin_or_ent ) && IsVec( v_angles_or_tag ) )
66 self AnimScripted(
ANIM_NOTIFY, v_origin_or_ent, v_angles_or_tag, animation, n_blend_in, n_rate );
70 if ( IsString( v_angles_or_tag ) )
72 Assert( isdefined( v_origin_or_ent.model ),
"Cannot align animation '" + animation +
"' to tag '" + v_angles_or_tag +
"' because the animation is not aligned to a model." );
74 v_pos = v_origin_or_ent GetTagOrigin( v_angles_or_tag );
75 v_ang = v_origin_or_ent GetTagAngles( v_angles_or_tag );
83 self AnimScripted(
ANIM_NOTIFY,
self.origin,
self.angles, animation, n_blend_in, n_rate );
87 v_angles = ( isdefined( v_origin_or_ent.angles ) ? v_origin_or_ent.angles : ( 0, 0, 0 ) );
88 self AnimScripted(
ANIM_NOTIFY, v_origin_or_ent.origin, v_angles, animation, n_blend_in, n_rate );
116 level endon(
"demo_jump");
124 if ( isdefined( e_align ) )
135 DEFAULT( v_origin_or_ent,
self.origin );
136 DEFAULT2( v_angles_or_tag,
self.angles, ( 0, 0, 0 ) );
140 if ( IsVec( v_origin_or_ent ) )
142 Assert( IsVec( v_angles_or_tag ),
"Angles must be a vector if origin is." );
144 s.origin = v_origin_or_ent;
145 s.angles = v_angles_or_tag;
151 if ( IsString( v_angles_or_tag ) )
153 s.origin = e_align GetTagOrigin( v_angles_or_tag );
154 s.angles = e_align GetTagAngles( v_angles_or_tag );
158 s.origin = e_align.origin;
159 s.angles = e_align.angles;
168 function play_siege( str_anim, str_shot =
"default", n_rate = 1, b_loop =
false )
170 level endon(
"demo_jump");
171 self endon(
"entityshutdown" );
177 self SiegeCmd(
"set_anim", str_anim,
"set_shot", str_shot,
"pause",
"goto_start" );
181 self SiegeCmd(
"set_anim", str_anim,
"set_shot", str_shot,
"unpause",
"set_playback_speed", n_rate,
"send_end_events",
true, ( b_loop ?
"loop" :
"unloop" ) );
184 self waittill(
"end" );
192 DEFAULT( level._animnotifyfuncs, [] );
194 Assert( !isdefined( level._animnotifyfuncs[ funcname ] ),
"Notetrack function already exists." );
196 level._animnotifyfuncs[ funcname ] = func;
201 DEFAULT( level._animnotetrackhandlers, [] );
202 DEFAULT( level._animnotetrackhandlers[ str_note ], [] );
204 ARRAY_ADD( level._animnotetrackhandlers[ str_note ],
array( func, vararg ) );
209 if ( isdefined( level._animnotetrackhandlers ) && isdefined( level._animnotetrackhandlers[ str_note ] ) )
211 foreach ( handler
in level._animnotetrackhandlers[ str_note ] )
219 self [[ func ]]( args[0], args[1], args[2], args[3], args[4], args[5] );
222 self [[ func ]]( args[0], args[1], args[2], args[3], args[4] );
225 self [[ func ]]( args[0], args[1], args[2], args[3] );
228 self [[ func ]]( args[0], args[1], args[2] );
231 self [[ func ]]( args[0], args[1] );
234 self [[ func ]]( args[0] );
239 default: AssertMsg(
"Too many args passed to notetrack handler." );
266 level endon(
"demo_jump");
267 self endon(
"entityshutdown" );
273 if ( str_note !=
"end" && str_note !=
"loop_end" )
284 #define CF_CRACKS_RED 1
285 #define CF_CRACKS_BLUE 2
286 #define CF_CRACKS_GREEN 3
287 #define CF_CRACKS_ALL 4
289 #define SHADER_VEC_RED "scriptVector1"
290 #define SHADER_VEC_GREEN "scriptVector2"
291 #define SHADER_VEC_BLUE "scriptVector3"
331 function cf_cracks_on( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )
356 function cf_cracks_off( localClientNum, oldVal, newVal, bNewEnt, bInitialSnap, fieldName, bWasTimeJump )