clear runs when respawning
[carveJwlIkooP6JGAAIwe30JlM.git] / player.c
index 12f8cbdc1bf11e7dcba48e2dd263c3fd4b9738cd..399de519620f7e2a428f92e01eeb536c9979dfdd 100644 (file)
--- a/player.c
+++ b/player.c
@@ -165,7 +165,7 @@ void player__pass_gate( player_instance *player, ent_gate *gate )
    m4x3_mulv( gate->transport, player->cam.pos, player->cam.pos );
 
    if( gate->flags & k_ent_gate_nonlocal )
-      world_static.active_instance = gate->target;
+      world_set_active_instance( gate->target );
 
    audio_lock();
    audio_oneshot( &audio_gate_pass, 1.0f, 0.0f );
@@ -246,7 +246,8 @@ PLAYER_API void player__im_gui( player_instance *player ){
                      (const char *[]){ [k_skaterift_menu]      = "menu",
                                        [k_skaterift_replay]    = "replay",
                                        [k_skaterift_ent_focus] = "ent_focus",
-                                       [k_skaterift_default]   = "default" 
+                                       [k_skaterift_default]   = "default",
+                                       [k_skaterift_respawning]= "respawning",
                      } [skaterift.activity] );
    player__debugtext( 1, "time_rate: %.4f", skaterift.time_rate );
 
@@ -282,8 +283,18 @@ PLAYER_API void player__spawn( player_instance *player, ent_spawn *rp ){
    player->immobile = 0;
    player->gate_waiting = NULL;
    world_static.last_use = 0.0;
+   world_static.focused_entity = 0;
+   world_static.challenge_target = NULL;
+   world_static.challenge_timer = 0.0f;
    world_entity_unfocus();
 
+   for( u32 i=0; i<vg_list_size(world_static.instances); i++ ){
+      world_instance *instance = &world_static.instances[i];
+      if( instance->status == k_world_status_loaded ){
+         world_routes_clear( instance );
+      }
+   }
+
    if( _player_reset[ player->subsystem ] )
       _player_reset[ player->subsystem ]( player, rp );
 }