aboutsummaryrefslogtreecommitdiff
path: root/source/EditorCore.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/EditorCore.hpp')
-rw-r--r--source/EditorCore.hpp112
1 files changed, 18 insertions, 94 deletions
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 <memory>
-#include <string>
-// 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;
-
- // <root>
- 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<SpriteDefinition> 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<IEditor> 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;
};