// Wait until the the frame is completed or rendering is aborted. IRendererController::Status wait_for_event(IFrameRenderer& frame_renderer) { bool is_paused = false; while (true) { if (!frame_renderer.is_rendering()) return IRendererController::TerminateRendering; const IRendererController::Status status = m_renderer_controller->get_status(); switch (status) { case IRendererController::ContinueRendering: if (is_paused) { frame_renderer.resume_rendering(); m_renderer_controller->on_rendering_resume(); m_stopwatch.resume(); is_paused = false; } break; case IRendererController::PauseRendering: if (!is_paused) { frame_renderer.pause_rendering(); m_renderer_controller->on_rendering_pause(); m_stopwatch.pause(); is_paused = true; } break; default: return status; } m_renderer_controller->on_progress(); foundation::sleep(1); // namespace qualifer required } }
/// <summary> /// EasingControllerが一時停止中である場合、再開します。 /// </summary> /// <returns> /// なし /// </returns> void resume() { m_stopwatch.resume(); }