PIE: viewport-embedded playback with UE-style main toolbar
Play no longer switches to fullscreen direct rendering: PIE now keeps the editor UI alive and renders the primary camera into the Viewport panel (new SceneRenderer::SetGameView flag; kDisplayDirect stays a manual fullscreen preview for later release form). Editor camera stops being driven during PIE, and viewport click-pick is gated off while playing (clicks are game input now). The Play/Stop buttons move out of the menu bar into a dedicated main toolbar row below it (centered, UE Main Toolbar semantics): green Play when idle; Pause (yellow, highlighted while paused) + Stop (orange) while playing. Ctrl+P hotkey kept. Stats "Pause Simulation" merged into the toolbar Pause; viewport overlay shows PAUSED accordingly.
This commit is contained in:
+9
-3
@@ -57,12 +57,16 @@ public:
|
||||
// 请求退出(弹确认框;窗口关闭事件走这里)
|
||||
void RequestQuit() { m_ShowQuitConfirm = true; }
|
||||
|
||||
// ---- PIE(Play-In-Editor,UE 工具栏语义)----
|
||||
// ---- PIE(Play-In-Editor,UE 主工具栏语义)----
|
||||
bool IsPlaying() const { return m_Playing; }
|
||||
// Play:内存快照当前场景 → 切游戏渲染(primary 相机)→ 解冻时间;
|
||||
bool IsPaused() const { return m_Paused; }
|
||||
// Play:内存快照当前场景 → 切 gameView(Viewport 内嵌 primary 相机
|
||||
// 渲染,UE PIE 语义;不切全屏)→ 解冻时间;
|
||||
// Stop:快照原子换血恢复 → 回编辑器渲染 → 冻结时间。
|
||||
// 编辑器态默认 timeScale=0(物理冻结 = UE 语义),Play 解冻
|
||||
void TogglePlay();
|
||||
// PIE 暂停切换(UE Pause 语义):timeScale 0 ↔ 1
|
||||
void TogglePause();
|
||||
|
||||
private:
|
||||
void DoPlay(); // TogglePlay 的 Play 半程(快照 + 切渲染 + 解冻)
|
||||
@@ -86,7 +90,8 @@ private:
|
||||
entt::entity GetSelected() const { return m_Selected; }
|
||||
|
||||
private:
|
||||
void DrawMenuBar(); // host 窗口内顶栏
|
||||
void DrawMenuBar(); // host 窗口内顶栏(File/View 菜单)
|
||||
void DrawToolbar(); // 菜单栏下方主工具栏(Play/Pause/Stop 居中)
|
||||
void DrawDockSpace(); // 全屏 host + dockspace + 默认布局
|
||||
void DrawQuitModal(); // 退出确认模态框
|
||||
void DrawSceneModals(); // 保存/加载路径模态框(共用一个路径输入)
|
||||
@@ -127,6 +132,7 @@ private:
|
||||
|
||||
// PIE 状态:Play 时场景 YAML 内存快照,Stop 时原子换血恢复
|
||||
bool m_Playing = false;
|
||||
bool m_Paused = false; // PIE 暂停(timeScale=0;Stop 时复位)
|
||||
std::string m_PlaySnapshot;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user