fix: errors when reloading scenes
parent
528db9415c
commit
e2d56ed6d4
|
@ -120,7 +120,7 @@ Level3D *GameRoot3D::load_level_at(gd::Ref<gd::PackedScene> level, gd::Transform
|
|||
// store and add to tree at desired transform
|
||||
// if this is the first level containing a game mode currently active use it's gamemode as a prototype
|
||||
gd::Ref<gd::PackedScene> game_mode_prototype{instance->get_game_mode_prototype()};
|
||||
bool const switch_game_mode{!this->game_mode || this->game_mode->get_scene_file_path() != game_mode_prototype->get_path()};
|
||||
bool const switch_game_mode{!this->game_mode || (this->game_mode == nullptr) != game_mode_prototype.is_null() || this->game_mode->get_scene_file_path() != game_mode_prototype->get_path()};
|
||||
if(switch_game_mode) {
|
||||
this->set_game_mode(instance->get_game_mode_prototype());
|
||||
}
|
||||
|
@ -139,7 +139,8 @@ void GameRoot3D::unload_all_levels() {
|
|||
gd::HashMap<gd::StringName, Level3D*> levels = this->get_levels();
|
||||
for(gd::KeyValue<gd::StringName, Level3D*> &kvp : levels)
|
||||
kvp.value->call_deferred("queue_free");
|
||||
this->get_levels().clear();
|
||||
this->levels.clear();
|
||||
this->spawn_points.clear();
|
||||
this->reset_game_mode();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue