minor changes
[carveJwlIkooP6JGAAIwe30JlM.git] / player_walk.c
index c43e7bffaac8e52d8e5290f5bcc616f0b380169d..40b836c26db55a85b065922e51d7f2f2da5287a6 100644 (file)
@@ -50,7 +50,7 @@ static void player_walk_generic_to_skate( enum skate_activity init, f32 yaw ){
    v3_copy( v, player_skate.state.cog_v );
    v3_copy( v, localplayer.rb.v );
 
-   player__begin_holdout();
+   player__begin_holdout( (v3f){0.0f,0.0f,0.0f} );
    player__skate_reset_animator();
    player__skate_clear_mechanics();
    rb_update_transform( &localplayer.rb );
@@ -67,7 +67,7 @@ static void player_walk_drop_in_to_skate(void){
    player_skate.state.activity_prev = k_skate_activity_ground;
    player_skate.state.activity = k_skate_activity_ground;
 
-   player__begin_holdout();
+   player__begin_holdout( (v3f){0.0f,0.0f,0.0f} );
    player__skate_clear_mechanics();
    player__skate_reset_animator();
 
@@ -617,9 +617,9 @@ static void player__walk_update(void){
       }
    }
 
-   ent_gate *gate = 
-      world_intersect_gates( world, localplayer.rb.co, w->state.prev_pos );
-   if( gate ){
+   u32 id = world_intersect_gates(world, localplayer.rb.co, w->state.prev_pos);
+   if( id ){
+      ent_gate *gate = mdl_arritm( &world->ent_gate, mdl_entity_id_id(id) );
       m4x3_mulv( gate->transport, localplayer.rb.co, localplayer.rb.co );
       m3x3_mulv( gate->transport, localplayer.rb.v,  localplayer.rb.v );
 
@@ -628,7 +628,7 @@ static void player__walk_update(void){
       q_mul( transport_rotation, localplayer.rb.q, localplayer.rb.q );
 
       rb_update_transform( &localplayer.rb );
-      player__pass_gate( gate );
+      player__pass_gate( id );
    }
    rb_update_transform( &localplayer.rb );
 }
@@ -962,4 +962,21 @@ static void player__walk_reset( ent_spawn *rp ){
    w->state.outro_start_time = 0.0;
 }
 
+static void player__walk_animator_exchange( bitpack_ctx *ctx, void *data ){
+   struct player_walk_animator *animator = data;
+
+   bitpack_qv3f( ctx, 24, -1024.0f, 1024.0f, animator->root_co );
+   bitpack_qquat( ctx, animator->root_q );
+   bitpack_qf32( ctx, 8, 0.0f, 1.0f, &animator->fly );
+   bitpack_qf32( ctx, 8, 0.0f, 1.0f, &animator->run );
+   bitpack_qf32( ctx, 8, 0.0f, 1.0f, &animator->walk );
+   bitpack_qf32( ctx, 16, 0.0f, 120.0f, &animator->walk_timer );
+
+   bitpack_bytes( ctx, 8, &animator->outro_type );
+   if( animator->outro_type ){
+      bitpack_bytes(ctx, sizeof(animator->foot_anchor), animator->foot_anchor );
+      bitpack_qf32( ctx, 8, 0.0f, 1.0f, &animator->outro_t );
+      bitpack_qf32( ctx, 8, 0.0f, 1.0f, &animator->commit_t );
+   }
+}
 #endif /* PLAYER_DEVICE_WALK_H */