feat: Editor Gizmo——ImGuizmo 平移/旋转/缩放操纵杆
- ImGuizmo 接入:Lib/ImGuizmo(src/ 布局)静态库,IMGUI_DEFINE_MATH_OPERATORS - ViewportPanel:Vulkan→GL 投影转换(Y 翻回 + 深度 [-1,1])、 SetDrawlist/SetRect 叠加绘制、decompose 写回 TransformComponent - W/E/R 切换(UE 语义);拖拽中 BlockingMouse 门控(输入归 Gizmo) - Dynamic 刚体选中提示:物理每帧写回,编辑被覆盖 - 修复:GizmoState.op 初值 0 无轴位(ImGuizmo::TRANSLATE=7)导致杆不绘制 - 点击拾取门控:抓杆时(IsOver/IsUsing)不发 pick 请求
This commit is contained in:
+3
-2
@@ -47,8 +47,8 @@ public:
|
||||
// 键盘:编辑器形态 = Viewport 持焦且不在文本输入中;游戏形态
|
||||
// (Fullscreen)只在文本输入中让位(打字不触发快捷键)
|
||||
bool BlockingKeyboard() const;
|
||||
// 鼠标:编辑器形态 = 悬停 Viewport 才放行;游戏形态沿用
|
||||
// WantCaptureMouse(UI 隐藏时自动放行)
|
||||
// 鼠标:编辑器形态 = 悬停 Viewport 才放行;Gizmo 拖拽中一律拦截
|
||||
// (抓杆时相机不能吃鼠标);游戏形态沿用 WantCaptureMouse
|
||||
bool BlockingMouse() const;
|
||||
|
||||
// 请求退出(弹确认框;窗口关闭事件走这里)
|
||||
@@ -77,6 +77,7 @@ private:
|
||||
EditorContext m_Ctx{};
|
||||
|
||||
ViewportInputState m_VpInput{}; // Viewport 面板 hover/focus(每帧刷新)
|
||||
GizmoState m_Gizmo{}; // 视口操纵杆状态(op/拖拽中)
|
||||
|
||||
std::unique_ptr<HierarchyPanel> m_Hierarchy;
|
||||
std::unique_ptr<InspectorPanel> m_Inspector;
|
||||
|
||||
Reference in New Issue
Block a user