diff options
Diffstat (limited to 'source/GameObject.hpp')
-rw-r--r-- | source/GameObject.hpp | 94 |
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); -}; |