From e7ef3f208c109357538b1f68af10bcd78db95c95 Mon Sep 17 00:00:00 2001 From: rtk0c Date: Fri, 8 Apr 2022 22:30:12 -0700 Subject: Changeset: 3 More work --- source/World.cpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'source/World.cpp') diff --git a/source/World.cpp b/source/World.cpp index 907f056..49aa58f 100644 --- a/source/World.cpp +++ b/source/World.cpp @@ -1,5 +1,8 @@ #include "World.hpp" +#include "GameObject.hpp" +#include "PodVector.hpp" + #include namespace ProjectBrussel_UNITY_ID { @@ -34,35 +37,49 @@ struct GameWorld::RenderData { GameWorld::GameWorld() : mRender{ new RenderData() } - , mRoot(this) { + , mRoot{ new GameObject(this) } { } GameWorld::~GameWorld() { - delete mRender; - for (auto child : mRoot.GetChildren()) { - GameObject::FreeRecursive(child); + if (mAwakened) { + Resleep(); } + + delete mRender; + delete mRoot; } +const GameObject& GameWorld::GetRoot() const { + return *mRoot; +}; + void GameWorld::Awaken() { if (mAwakened) return; - ProjectBrussel_UNITY_ID::CallGameObjectRecursive(&mRoot, [](GameObject* obj) { obj->Awaken(); }); + ProjectBrussel_UNITY_ID::CallGameObjectRecursive(mRoot, [](GameObject* obj) { obj->Awaken(); }); mAwakened = true; } void GameWorld::Resleep() { if (!mAwakened) return; - ProjectBrussel_UNITY_ID::CallGameObjectRecursive(&mRoot, [](GameObject* obj) { obj->Resleep(); }); + ProjectBrussel_UNITY_ID::CallGameObjectRecursive(mRoot, [](GameObject* obj) { obj->Resleep(); }); mAwakened = false; } void GameWorld::Update() { - ProjectBrussel_UNITY_ID::CallGameObjectRecursive(&mRoot, [this](GameObject* obj) { + ProjectBrussel_UNITY_ID::CallGameObjectRecursive(mRoot, [this](GameObject* obj) { obj->Update(); }); } void GameWorld::Draw() { } + +GameObject& GameWorld::GetRoot() { + return *mRoot; +} + +bool GameWorld::IsAwake() const { + return mAwakened; +} -- cgit v1.2.3-70-g09d2