#pragma once #include "GameObject.hpp" #include "World.hpp" #include #include class App; namespace ImGui { const char* GetKeyNameGlfw(int key); } // namespace ImGui class EditorGameObjectAttachment { public: std::string name; public: static std::unique_ptr Create(GameObject* object); virtual ~EditorGameObjectAttachment() = default; }; class EditorInstance { private: App* mApp; GameWorld* mWorld; GameObject* mSelectedGameObject = nullptr; public: EditorInstance(App* app, GameWorld* world) : mApp{ app } , mWorld{ world } {} void Show(); private: void ShowWorldProperties(); void ShowInspector(); void ShowGameObjecetFields(GameObject* object); void ShowGameObjectInTree(GameObject* object); };