feat: add play mode pause resume and step controls
This commit is contained in:
@@ -284,6 +284,65 @@ TEST_F(EditorActionRoutingTest, MainMenuRouterRequestsExitResetAndAboutPopup) {
|
||||
m_context.GetEventBus().Unsubscribe<DockLayoutResetRequestedEvent>(resetSubscription);
|
||||
}
|
||||
|
||||
TEST_F(EditorActionRoutingTest, MainMenuRouterRequestsPlayPauseResumeAndStepEvents) {
|
||||
int playStartRequestCount = 0;
|
||||
int playStopRequestCount = 0;
|
||||
int playPauseRequestCount = 0;
|
||||
int playResumeRequestCount = 0;
|
||||
int playStepRequestCount = 0;
|
||||
|
||||
const uint64_t playStartSubscription = m_context.GetEventBus().Subscribe<PlayModeStartRequestedEvent>(
|
||||
[&](const PlayModeStartRequestedEvent&) {
|
||||
++playStartRequestCount;
|
||||
});
|
||||
const uint64_t playStopSubscription = m_context.GetEventBus().Subscribe<PlayModeStopRequestedEvent>(
|
||||
[&](const PlayModeStopRequestedEvent&) {
|
||||
++playStopRequestCount;
|
||||
});
|
||||
const uint64_t playPauseSubscription = m_context.GetEventBus().Subscribe<PlayModePauseRequestedEvent>(
|
||||
[&](const PlayModePauseRequestedEvent&) {
|
||||
++playPauseRequestCount;
|
||||
});
|
||||
const uint64_t playResumeSubscription = m_context.GetEventBus().Subscribe<PlayModeResumeRequestedEvent>(
|
||||
[&](const PlayModeResumeRequestedEvent&) {
|
||||
++playResumeRequestCount;
|
||||
});
|
||||
const uint64_t playStepSubscription = m_context.GetEventBus().Subscribe<PlayModeStepRequestedEvent>(
|
||||
[&](const PlayModeStepRequestedEvent&) {
|
||||
++playStepRequestCount;
|
||||
});
|
||||
|
||||
Actions::RequestTogglePlayMode(m_context);
|
||||
EXPECT_EQ(playStartRequestCount, 1);
|
||||
EXPECT_EQ(playStopRequestCount, 0);
|
||||
|
||||
m_context.SetRuntimeMode(EditorRuntimeMode::Play);
|
||||
Actions::RequestTogglePauseMode(m_context);
|
||||
EXPECT_EQ(playPauseRequestCount, 1);
|
||||
EXPECT_EQ(playResumeRequestCount, 0);
|
||||
Actions::RequestStepPlayMode(m_context);
|
||||
EXPECT_EQ(playStepRequestCount, 0);
|
||||
|
||||
m_context.SetRuntimeMode(EditorRuntimeMode::Paused);
|
||||
Actions::RequestTogglePauseMode(m_context);
|
||||
EXPECT_EQ(playResumeRequestCount, 1);
|
||||
Actions::RequestStepPlayMode(m_context);
|
||||
EXPECT_EQ(playStepRequestCount, 1);
|
||||
|
||||
Actions::RequestTogglePlayMode(m_context);
|
||||
EXPECT_EQ(playStopRequestCount, 1);
|
||||
|
||||
m_context.SetRuntimeMode(EditorRuntimeMode::Edit);
|
||||
Actions::RequestStepPlayMode(m_context);
|
||||
EXPECT_EQ(playStepRequestCount, 1);
|
||||
|
||||
m_context.GetEventBus().Unsubscribe<PlayModeStartRequestedEvent>(playStartSubscription);
|
||||
m_context.GetEventBus().Unsubscribe<PlayModeStopRequestedEvent>(playStopSubscription);
|
||||
m_context.GetEventBus().Unsubscribe<PlayModePauseRequestedEvent>(playPauseSubscription);
|
||||
m_context.GetEventBus().Unsubscribe<PlayModeResumeRequestedEvent>(playResumeSubscription);
|
||||
m_context.GetEventBus().Unsubscribe<PlayModeStepRequestedEvent>(playStepSubscription);
|
||||
}
|
||||
|
||||
TEST_F(EditorActionRoutingTest, PlayModeAllowsRuntimeSceneUndoRedoButKeepsSceneDocumentCommandsBlocked) {
|
||||
const fs::path savedScenePath = m_projectRoot / "Assets" / "Scenes" / "PlayModeRuntimeEditing.xc";
|
||||
ASSERT_TRUE(m_context.GetSceneManager().SaveSceneAs(savedScenePath.string()));
|
||||
|
||||
Reference in New Issue
Block a user