diff --git a/engine/src/Components/GameObject.cpp b/engine/src/Components/GameObject.cpp index 295217c5..06b6acc8 100644 --- a/engine/src/Components/GameObject.cpp +++ b/engine/src/Components/GameObject.cpp @@ -22,6 +22,7 @@ GameObject::GameObject(const std::string& name) } GameObject::~GameObject() { + GetGlobalRegistry().erase(m_id); if (m_transform) { delete m_transform; m_transform = nullptr; diff --git a/tests/Scene/test_scene_manager.cpp b/tests/Scene/test_scene_manager.cpp index 7b057a1d..81518eef 100644 --- a/tests/Scene/test_scene_manager.cpp +++ b/tests/Scene/test_scene_manager.cpp @@ -60,14 +60,14 @@ TEST(SceneManager_Test, GetScene_NotExists) { TEST_F(SceneManagerTest, GetAllScenes_ReturnsAll) { SceneManager& sm = SceneManager::Get(); - size_t initialCount = sm.GetAllScenes().size(); - sm.CreateScene("Scene1"); - sm.CreateScene("Scene2"); - sm.CreateScene("Scene3"); + size_t beforeCount = sm.GetAllScenes().size(); + sm.CreateScene("GetAllScenes_TestScene1"); + sm.CreateScene("GetAllScenes_TestScene2"); + sm.CreateScene("GetAllScenes_TestScene3"); auto scenes = sm.GetAllScenes(); - EXPECT_EQ(scenes.size(), initialCount + 3); + EXPECT_EQ(scenes.size(), beforeCount + 3); } TEST(SceneManager_Test, SetActiveScene) { @@ -123,13 +123,14 @@ TEST(SceneManager_Test, UnloadScene_ByName) { TEST(SceneManager_Test, OnSceneLoaded_Event) { SceneManager& sm = SceneManager::Get(); bool eventFired = false; - sm.OnSceneLoaded().Subscribe([&eventFired](Scene*) { + uint64_t subId = sm.OnSceneLoaded().Subscribe([&eventFired](Scene*) { eventFired = true; }); sm.CreateScene("TestScene"); EXPECT_TRUE(eventFired); + sm.OnSceneLoaded().Unsubscribe(subId); } TEST(SceneManager_Test, OnActiveSceneChanged_Event) { @@ -138,13 +139,14 @@ TEST(SceneManager_Test, OnActiveSceneChanged_Event) { Scene* scene2 = sm.CreateScene("Scene2"); bool eventFired = false; - sm.OnActiveSceneChanged().Subscribe([&eventFired](Scene*) { + uint64_t subId = sm.OnActiveSceneChanged().Subscribe([&eventFired](Scene*) { eventFired = true; }); sm.SetActiveScene(scene2); EXPECT_TRUE(eventFired); + sm.OnActiveSceneChanged().Unsubscribe(subId); } TEST(SceneManager_Test, CreateScene_MultipleScenes) {