Fix crash when unloading scene that has been already unloaded

This commit is contained in:
Wojtek Figat
2021-08-05 13:14:57 +02:00
parent cb5c716fdb
commit c5b9654547

View File

@@ -425,16 +425,19 @@ class UnloadSceneAction : public SceneAction
{
public:
Scene* TargetScene;
Guid TargetScene;
UnloadSceneAction(Scene* scene)
{
TargetScene = scene;
TargetScene = scene->GetID();
}
bool Do() const override
{
return unloadScene(TargetScene);
auto scene = Scripting::FindObject<Scene>(TargetScene);
if (!scene)
return true;
return unloadScene(scene);
}
};
@@ -1344,6 +1347,7 @@ bool Level::UnloadScene(Scene* scene)
void Level::UnloadSceneAsync(Scene* scene)
{
CHECK(scene);
ScopeLock lock(_sceneActionsLocker);
_sceneActions.Enqueue(New<UnloadSceneAction>(scene));
}