From 921f756855b9e19363cb79355d12bb8d683ffc06 Mon Sep 17 00:00:00 2001 From: hnOsmium0001 Date: Sat, 7 May 2022 17:27:01 -0700 Subject: Reduce dependency between editor headers and main game headers --- source/EditorCore.hpp | 112 ++++++++------------------------------------------ 1 file changed, 18 insertions(+), 94 deletions(-) (limited to 'source/EditorCore.hpp') diff --git a/source/EditorCore.hpp b/source/EditorCore.hpp index b73152a..15bd100 100644 --- a/source/EditorCore.hpp +++ b/source/EditorCore.hpp @@ -1,114 +1,38 @@ #pragma once -#include "EditorAttachment.hpp" -#include "EditorCommandPalette.hpp" -#include "EditorUtils.hpp" -#include "GameObject.hpp" -#include "Ires.hpp" -#include "RcPtr.hpp" -#include "Sprite.hpp" -#include "World.hpp" - #include -#include -// TODO move inspector drawing to this class -struct EditorInspector { +class App; +class SpriteDefinition; + +class IEditorInspector { +public: enum TargetType { ITT_GameObject, ITT_Ires, ITT_None, }; - std::string renamingScratchBuffer; - void* selectedItPtr = nullptr; - TargetType selectedItt = ITT_None; - bool renaming = false; - - void SelectTarget(TargetType type, void* object); -}; - -class EditorContentBrowser { -private: - enum Pane { - P_Settings, - P_Ires, - }; - - static constexpr float kSplitterThickness = 3.0f; - static constexpr float kPadding = 4.0f; - - // - static constexpr float kLeftPaneMinWidth = 200.0f; - static constexpr float kRightPaneMinWidth = 200.0f; - - EditorInspector* mInspector; - Pane mPane = P_Settings; - float mBrowserHeight = 0.5f; - float mSplitterLeft = kLeftPaneMinWidth; - float mSplitterRight = 0.0f; - bool mDocked = true; - public: - EditorContentBrowser(EditorInspector* inspector); - ~EditorContentBrowser(); - - void Show(bool* open = nullptr); + virtual ~IEditorInspector() = default; + virtual void SelectTarget(TargetType type, void* object) = 0; }; -struct GuizmoState { - ImGuizmo::OPERATION currOperation = ImGuizmo::TRANSLATE; - ImGuizmo::MODE currMode = ImGuizmo::LOCAL; - glm::mat4 cubeMatrix; - float snap[3] = { 1.f, 1.f, 1.f }; - float boundsSnap[3] = { 0.1f, 0.1f, 0.1f }; - bool useSnap = false; - bool boundSizing = false; - bool boundSizingSnap = false; +class IEditorContentBrowser { +public: + virtual ~IEditorContentBrowser() = default; }; -// TODO editor undo stack -class App; -class EditorInstance { -private: - App* mApp; - GameObject* mPopupCurrent_GameObject = nullptr; - Camera mEditorCamera; - RcPtr mSpriteView_Instance; - EditorCommandPalette mEdCommandPalette; - EditorInspector mEdInspector; - EditorContentBrowser mEdContentBrowser; - GuizmoState mGuizmo; - glm::vec3 mDragCam_CamInitial; - ImVec2 mDragCam_CursorInitial; - int mSpriteView_Frame; - bool mSpriteView_OpenNextFrame = false; - bool mWindowVisible_ImGuiDemo = false; - bool mWindowVisible_CommandPalette = false; - bool mWindowVisible_Inspector = true; - bool mWindowVisible_ContentBrowser = true; - bool mWindowVisible_WorldStructure = true; - bool mWindowVisible_WorldProperties = true; - bool mDragCam_Happening = false; - bool mMoveCamKeyboard = false; - +class IEditor { public: - EditorInstance(App* app); - ~EditorInstance(); - - void OnGameStateChanged(bool running); - void Show(); - - EditorInspector& GetInspector() { return mEdInspector; } - EditorContentBrowser& GetContentBrowser() { return mEdContentBrowser; } - - void OpenSpriteViewer(SpriteDefinition* sprite); + static std::unique_ptr CreateInstance(App* app); + virtual ~IEditor() = default; -private: - void ShowWorldProperties(); + virtual void OnGameStateChanged(bool running) = 0; + virtual void Show() = 0; - void ShowInspector(IresObject* ires); - void ShowInspector(GameObject* object); + virtual IEditorInspector& GetInspector() = 0; + virtual IEditorContentBrowser& GetContentBrowser() = 0; - void ShowSpriteViewer(); + virtual void OpenSpriteViewer(SpriteDefinition* sprite) = 0; }; -- cgit v1.2.3-70-g09d2