#pragma once #include "EditorAttachment.hpp" #include "EditorResources.hpp" #include "GameObject.hpp" #include "Ires.hpp" #include "RcPtr.hpp" #include "Sprite.hpp" #include "World.hpp" #include #include class App; class EditorInstance { public: enum InspectorTargetType { ITT_GameObject, ITT_Shader, ITT_Material, ITT_Ires, ITT_None, }; private: App* mApp; GameWorld* mWorld; // TODO store more fields for ITT void* mSelectedItPtr = nullptr; RcPtr mSpriteView_Instance; EditorContentBrowser mEdContentBrowser; InspectorTargetType mSelectedItt = ITT_None; bool mEdContentBrowserVisible = false; public: EditorInstance(App* app, GameWorld* world); ~EditorInstance(); void Show(); void* GetSelectedItPtr() const { return mSelectedItPtr; } InspectorTargetType GetSelectedItt() const { return mSelectedItt; } void SelectIt(void* ptr, InspectorTargetType itt); private: void ShowWorldProperties(); void ShowInspector(Shader* shader); void ShowInspector(Material* material); void ShowInspector(const std::string& path, IresObject* ires); void ShowInspector(GameObject* object); void ShowGameObjecetFields(GameObject* object); void ShowGameObjectInTree(GameObject* object); void OpenSpriteViewer(Sprite* sprite); void ShowSpriteViewer(); };