aboutsummaryrefslogtreecommitdiff
path: root/source/GameObject.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/GameObject.hpp')
-rw-r--r--source/GameObject.hpp94
1 files changed, 0 insertions, 94 deletions
diff --git a/source/GameObject.hpp b/source/GameObject.hpp
deleted file mode 100644
index 77488b9..0000000
--- a/source/GameObject.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-#pragma once
-
-#include "EditorAttachment.hpp"
-#include "Material.hpp"
-#include "PodVector.hpp"
-#include "Renderer.hpp"
-#include "VertexIndex.hpp"
-
-#include <rapidjson/fwd.h>
-#include <glm/glm.hpp>
-#include <glm/gtc/quaternion.hpp>
-#include <span>
-#include <vector>
-
-class GameWorld;
-class GameObject {
-public:
- enum Kind {
- KD_Generic,
- KD_Player,
- KD_SimpleGeometry,
- KD_Building,
- KD_LevelWrapper,
- KD_COUNT,
- };
-
-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;
-
- static std::string_view ToString(Kind kind);
- static Kind FromString(std::string_view name);
- 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);
-};