aboutsummaryrefslogtreecommitdiff
path: root/source/World.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-04-08 22:30:12 -0700
committerrtk0c <[email protected]>2022-04-08 22:30:12 -0700
commite7ef3f208c109357538b1f68af10bcd78db95c95 (patch)
tree066d614ae0f079e53602d7c0fd972998c546c8c1 /source/World.cpp
parentf163e8f37123e651ea80b690793845b31ddb8639 (diff)
Changeset: 3 More work
Diffstat (limited to 'source/World.cpp')
-rw-r--r--source/World.cpp31
1 files changed, 24 insertions, 7 deletions
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 <glad/glad.h>
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;
+}