void sce_OnSceneAdded(Scene pScene) { pScene.SetState(SceneState.Waiting); mCurrentScene.Add(pScene); UpdateSubManagerState(SceneManagerState.Paused); if (mCurrentScene.Count == 1) { mFixture.StartSceneMode(); if (mState == SceneManagerState.Running) { mTimer.Enabled = true; } pScene.SetState(SceneState.Playing); } }
void sce_OnSceneRemoved(Scene pScene) { pScene.SetState(SceneState.Nothing); mCurrentScene.Remove(pScene); if (mCurrentScene.Count == 0) { mTimer.Enabled = false; if (mState != SceneManagerState.Paused) { UpdateSubManagerState(SceneManagerState.Running); mFixture.StopSceneMode(); } } }
void sce_OnScenePlayed(Scene pScene) { foreach (Scene sce in mCurrentScene) { sce.SetState(SceneState.Nothing); } mCurrentScene.Clear(); mCurrentSceneIndex = 0; mCurrentScene.Add(pScene); pScene.SetState(SceneState.PlayingExclusive); UpdateSubManagerState(SceneManagerState.Paused); if (mState == SceneManagerState.Running) { if (mCurrentScene.Count == 1) { mTimer.Enabled = true; mFixture.StartSceneMode(); } mFixture.UnforceAllChannels(); } }