BsPlayInEditorManager.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "BsPlayInEditorManager.h"
  2. #include "BsScriptGameObjectManager.h"
  3. #include "BsTime.h"
  4. namespace BansheeEngine
  5. {
  6. PlayInEditorManager::PlayInEditorManager()
  7. :mState(PlayInEditorState::Stopped), mFrameStepActive(false)
  8. { }
  9. void PlayInEditorManager::setState(PlayInEditorState state)
  10. {
  11. if (mState == state)
  12. return;
  13. PlayInEditorState oldState = mState;
  14. mState = state;
  15. switch (state)
  16. {
  17. case PlayInEditorState::Stopped:
  18. {
  19. mFrameStepActive = false;
  20. mPausableTime = 0.0f;
  21. // TODO - Load saved scene from prefab
  22. }
  23. break;
  24. case PlayInEditorState::Playing:
  25. {
  26. if (oldState == PlayInEditorState::Paused)
  27. {
  28. ScriptGameObjectManager::instance().sendComponentInitializeEvents();
  29. }
  30. else // Was stopped
  31. {
  32. // TODO - Save current scene in a prefab
  33. }
  34. }
  35. break;
  36. case PlayInEditorState::Paused:
  37. {
  38. mFrameStepActive = false;
  39. if (oldState == PlayInEditorState::Stopped)
  40. {
  41. // TODO - Save current scene in a prefab
  42. }
  43. }
  44. break;
  45. default:
  46. break;
  47. }
  48. }
  49. void PlayInEditorManager::frameStep()
  50. {
  51. switch (mState)
  52. {
  53. case PlayInEditorState::Stopped:
  54. case PlayInEditorState::Paused:
  55. setState(PlayInEditorState::Playing);
  56. break;
  57. }
  58. mFrameStepActive = true;
  59. }
  60. void PlayInEditorManager::update()
  61. {
  62. if (mState == PlayInEditorState::Playing)
  63. mPausableTime += gTime().getFrameDelta();
  64. // TODO - disable framestep once a frame has passed
  65. }
  66. }