{ &player_skate.anim_ollie, "ollie" },
{ &player_skate.anim_ollie_reverse,"ollie_reverse" },
{ &player_skate.anim_grabs, "grabs" },
- { &player_skate.anim_handplant, "handplant" }
+ { &player_skate.anim_handplant, "handplant" },
};
for( u32 i=0; i<vg_list_size(bindings); i++ )
static void player__skate_pre_update(void){
struct player_skate_state *state = &player_skate.state;
+#if 0
+ if( button_down(k_srbind_devbutton) ){
+ state->activity = k_skate_activity_popoff;
+ state->handplant_t = 0.0f;
+ v3_copy( localplayer.rb.co, state->store_co );
+ v3_copy( localplayer.rb.v, state->air_init_v );
+ v4_copy( localplayer.rb.q, state->store_q );
+ v3_copy( state->cog, state->store_cog );
+ v3_copy( state->cog_v, state->store_cog_v );
+ v4_copy( state->smoothed_rotation, state->store_smoothed );
+ }
+#endif
+
if( state->activity == k_skate_activity_handplant ){
state->handplant_t += vg.time_delta;
mdl_keyframe hpose[32];
+ struct skeleton_anim *anim = player_skate.anim_handplant;
+
int end = !skeleton_sample_anim_clamped(
- &localplayer.skeleton, player_skate.anim_handplant,
+ &localplayer.skeleton, anim,
state->handplant_t, hpose );
if( state->reverse < 0.0f )
m3x3_mulv( transfer, state->air_init_v, localplayer.rb.v );
m3x3_mulv( transfer, state->store_cog_v, state->cog_v );
+
m4x3_mulv( transfer, state->store_cog, state->cog );
v3_muladds( state->cog, localplayer.rb.to_world[1],
-state->handplant_t*0.5f, state->cog );
else return;
}
- if( button_down( k_srbind_use ) ){
+ if( button_down(k_srbind_use) && (v3_length2(state->trick_vel) < 0.01f) ){
localplayer.subsystem = k_player_subsystem_walk;
v3f angles;
v3_add( newpos, (v3f){0.0f,-1.0f,0.0f}, newpos );
v3_sub( localplayer.rb.co, newpos, offset );
v3_copy( newpos, localplayer.rb.co );
+ v3_muladds( localplayer.rb.co, localplayer.rb.to_world[1], -0.1f,
+ localplayer.rb.co );
player__begin_holdout( offset );
player__skate_kill_audio();
- player__walk_transition();
+ player__walk_transition( k_walk_activity_ipopoff, state->trick_euler[0] );
return;
}
}
#endif
+
if( animator->activity == k_skate_activity_handplant ){
+ struct skeleton_anim *anim = player_skate.anim_handplant;
+
mdl_keyframe hpose[32];
- skeleton_sample_anim_clamped( sk, player_skate.anim_handplant,
- animator->handplant_t, hpose );
+ skeleton_sample_anim_clamped( sk, anim, animator->handplant_t, hpose );
if( animator->reverse < 0.0f )
player_mirror_pose( hpose, hpose );
v3_copy( world_view[3], pose->root_co );
f32 t = animator->handplant_t,
- frames = player_skate.anim_handplant->length-1,
- length = frames / player_skate.anim_handplant->rate,
+ frames = anim->length-1,
+ length = animator->activity == k_skate_activity_handplant?
+ frames / anim->rate:
+ 999999,
end_dist = vg_minf( t, length - t )/k_anim_transition,
blend = vg_smoothstepf( vg_minf(1,end_dist) );
}
-
-
-
/* trick rotation */
v4f qtrick, qyaw, qpitch, qroll;
q_axis_angle( qyaw, (v3f){0.0f,1.0f,0.0f}, animator->board_euler[0] );