From 242317c1f7f2a6abdfbdbc99d5297539bbdc842f Mon Sep 17 00:00:00 2001 From: hnOsmium0001 Date: Sat, 30 Apr 2022 13:55:20 -0700 Subject: Add ImGuizmo for GameObjects, start to make things actually render --- source/EditorCore.hpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'source/EditorCore.hpp') diff --git a/source/EditorCore.hpp b/source/EditorCore.hpp index af35616..785fc6b 100644 --- a/source/EditorCore.hpp +++ b/source/EditorCore.hpp @@ -2,6 +2,7 @@ #include "EditorAttachment.hpp" #include "EditorCommandPalette.hpp" +#include "EditorUtils.hpp" #include "GameObject.hpp" #include "Ires.hpp" #include "RcPtr.hpp" @@ -55,16 +56,38 @@ public: void Show(bool* open = nullptr); }; +class EditorTransformEdit { +private: + ImGuizmo::OPERATION mCurrentGizmoOperation = ImGuizmo::TRANSLATE; + ImGuizmo::MODE mCurrentGizmoMode = ImGuizmo::LOCAL; + glm::mat4 cubeMatrix; + float snap[3] = { 1.f, 1.f, 1.f }; + float bounds[6] = { -0.5f, -0.5f, -0.5f, 0.5f, 0.5f, 0.5f }; + float boundsSnap[3] = { 0.1f, 0.1f, 0.1f }; + float camDistance = 8.f; + bool useSnap = false; + bool boundSizing = false; + bool boundSizingSnap = false; + bool showGrid = false; + +public: + void ShowWorld(float* cameraView, float* cameraProjection); + bool ShowObjectInspector(float* cameraView, float* cameraProjection, glm::vec3* pos, glm::quat* rotation, glm::vec3* scale); + bool ShowObject(float* cameraView, float* cameraProjection, glm::vec3* pos, glm::quat* rotation, glm::vec3* scale); +}; + class App; class EditorInstance { private: App* mApp; - GameWorld* mWorld; + RendererFrameInfo mFallbackFrameInfo; + const RendererFrameInfo* mCurrentFrameInfo; GameObject* mPopupCurrent_GameObject = nullptr; RcPtr mSpriteView_Instance; EditorCommandPalette mEdCommandPalette; EditorInspector mEdInspector; EditorContentBrowser mEdContentBrowser; + EditorTransformEdit mEdTransformEdit; int mSpriteView_Frame; bool mSpriteView_OpenNextFrame = false; bool mWindowVisible_ImGuiDemo = false; @@ -75,9 +98,11 @@ private: bool mWindowVisible_WorldProperties = true; public: - EditorInstance(App* app, GameWorld* world); + EditorInstance(App* app); ~EditorInstance(); + void OnUpdate(); + void OnDraw(const RendererFrameInfo& frameInfo); void Show(); EditorInspector& GetInspector() { return mEdInspector; } -- cgit v1.2.3-70-g09d2