aboutsummaryrefslogtreecommitdiff
path: root/source/Game/GameObject.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Game/GameObject.hpp')
-rw-r--r--source/Game/GameObject.hpp102
1 files changed, 0 insertions, 102 deletions
diff --git a/source/Game/GameObject.hpp b/source/Game/GameObject.hpp
deleted file mode 100644
index f975803..0000000
--- a/source/Game/GameObject.hpp
+++ /dev/null
@@ -1,102 +0,0 @@
-#pragma once
-
-#include "EditorAttachment.hpp"
-#include "Material.hpp"
-#include "Renderer.hpp"
-#include "VertexIndex.hpp"
-
-#include <MacrosCodegen.hpp>
-#include <PodVector.hpp>
-
-#include <rapidjson/fwd.h>
-#include <glm/glm.hpp>
-#include <glm/gtc/quaternion.hpp>
-#include <span>
-#include <vector>
-
-namespace Tags {
-enum class GameObjectKind {
- KD_Generic,
- KD_Player,
- KD_SimpleGeometry,
- KD_Building,
- KD_LevelWrapper,
- KD_COUNT,
-};
-BRUSSEL_ENUM(GameObjectKind, ToString FromString ExcludeHeuristics);
-} // namespace Tags
-
-class GameWorld;
-class GameObject {
-public:
- using Kind = Tags::GameObjectKind;
- using enum Tags::GameObjectKind;
-
-private:
- std::unique_ptr<EditorAttachment> mEditorAttachment;
- GameWorld* mWorld;
- GameObject* mParent;
- PodVector<GameObject*> mChildren;
- glm::quat mRot;
- glm::vec3 mPos;
- glm::vec3 mScale;
- Kind mKind;
-
-protected:
- bool mStopFreePropagation : 1 = false;
-
-public:
- static void FreeRecursive(GameObject* object);
-
- // TODO allow moving between worlds
- GameObject(GameWorld* world);
- GameObject(Kind kind, GameWorld* world);
- virtual ~GameObject();
-
- GameObject(const GameObject&) = delete;
- GameObject& operator=(const GameObject&) = delete;
- GameObject(GameObject&&) = default;
- GameObject& operator=(GameObject&&) = default;
-
- Kind GetKind() const;
-
- GameWorld* GetWorld() const;
- GameObject* GetParent() const;
- const PodVector<GameObject*>& GetChildren() const;
- void AddChild(GameObject* child);
- GameObject* RemoveChild(int index);
- GameObject* RemoveChild(GameObject* child);
- void RemoveSelfFromParent();
- PodVector<GameObject*> RemoveAllChildren();
-
- EditorAttachment* GetEditorAttachment() const { return mEditorAttachment.get(); }
- void SetEditorAttachment(EditorAttachment* attachment) { mEditorAttachment.reset(attachment); }
-
- const glm::vec3& GetPos() const;
- void SetPos(const glm::vec3& pos);
-
- const glm::quat& GetRotation() const;
- void SetRotation(const glm::quat& rotation);
-
- const glm::vec3& GetScale() const;
- void SetScale(const glm::vec3& scale);
-
- // Visuals
- virtual std::span<const RenderObject> GetRenderObjects() const;
-
- // Lifetime hooks
- virtual void OnInitialized();
- virtual void Awaken();
- virtual void Resleep();
- virtual void Update();
-
- static rapidjson::Value Serialize(GameObject* obj, rapidjson::Document& root);
- static std::unique_ptr<GameObject> Deserialize(const rapidjson::Value& value, GameWorld* world);
- virtual void ReadSaveFormat(const rapidjson::Value& value);
- virtual void WriteSaveFormat(rapidjson::Value& value, rapidjson::Document& root);
-
-protected:
- void SetParent(GameObject* parent);
-};
-
-#include <generated/GameObject.gh.inl>