24 #include "../../engine/Util/OS.h" 25 #include "../../engine/Util/Profiler.h" 29 class InputEventController;
80 conns.emplace_front(std::forward<decltype(conn)>(conn));
88 while (!
conns.empty()) {
94 std::forward_list<boost::signals2::scoped_connection>
conns;
98 Scene(
const std::string &name =
"Unnamed Scene");
110 const std::string &
GetName()
const {
return name; }
187 virtual bool IsMouseCursorEnabled()
const = 0;
192 return (tick >= prevTick) ?
199 bool SetPhase(
Phase phase);
202 bool MoveToForeground();
203 bool MoveToBackground();
205 bool SetState(
State state);
225 phaseTransitionDuration =
static_cast<double>(ms);
237 return (curTime >= phaseTs) ?
253 return (phase == Phase::STARTING) ?
267 return (curTime >= stateTs) ?
289 stateTransitionDuration = ms;
290 stateTransitionVelocity =
291 (ms == 0) ? 1.0 : (1.0 / static_cast<double>(ms));
352 virtual void Render() = 0;
constexpr timestamp_t TimeDiff(timestamp_t laterTs, timestamp_t earlierTs) noexcept
Calculate the difference between two timestamps.
Definition: OS.h:82
Util::OS::timestamp_t TimeSincePrevTick(Util::OS::timestamp_t tick)
Definition: Scene.h:190
Util::OS::timestamp_t GetStartingPhaseTime()
Return how long the starting phase lasted.
Definition: Scene.h:251
Util::OS::timestamp_t phaseTs
When current phase was started.
Definition: Scene.h:359
void RenderScene()
Definition: Scene.h:342
std::forward_list< boost::signals2::scoped_connection > conns
Definition: Scene.h:94
void Clear() noexcept
Definition: Scene.h:85
ConnList & operator<<(T &&conn)
Definition: Scene.h:78
void AdvanceScene(Util::OS::timestamp_t tick)
Definition: Scene.h:328
std::shared_ptr< Util::Profiler > renderProfiler
Definition: Scene.h:371
Phase GetPhase() const
Definition: Scene.h:198
void PrepareScene()
Definition: Scene.h:335
std::string name
Definition: Scene.h:355
void SetPhaseTransitionDuration(Util::OS::timestamp_t ms)
Set the maximum duration of the starting or stopping phases.
Definition: Scene.h:223
virtual ~Scene()
Definition: Scene.h:99
Util::OS::timestamp_t prevTick
Definition: Scene.h:356
Util::OS::timestamp_t GetStateDuration(Util::OS::timestamp_t curTime=Util::OS::Time())
Calculate how much time we've spent in the current state.
Definition: Scene.h:264
Definition: Profiler.h:53
std::array< boost::signals2::scoped_connection, 2 > conns
Definition: ProfileEditScene.cpp:152
Util::OS::timestamp_t stateTs
When current state was started.
Definition: Scene.h:363
Util::OS::timestamp_t stateTransitionDuration
Definition: Scene.h:362
State
Definition: Scene.h:54
double phaseTransitionDuration
Definition: Scene.h:358
~ConnList()
Definition: Scene.h:72
virtual void OnStateTransition(double progress)
Fired during the raising and lowering states, if SetStateTransitionDuration() was set...
Definition: Scene.h:325
timestamp_t Time()
Retrieve a timestamp.
Definition: OS.cpp:217
virtual void OnScenePushed()
Called when the scene is actually pushed to the stage.
Definition: Scene.h:180
virtual void OnPhaseTransition(double progress)
Fired during the starting and stopping phases, if SetPhaseTransitionDuration() was set...
Definition: Scene.h:316
State GetState() const
Definition: Scene.h:201
virtual void OnPhaseChanged(Phase oldPhase)
Fired immediately after entering a new phase.
Definition: Scene.h:300
std::shared_ptr< Util::Profiler > prepareProfiler
Definition: Scene.h:370
double statePosition
Definition: Scene.h:365
Scenes are analogous to fullscreen windows that are layered on top of each other. ...
Definition: Scene.h:43
virtual std::ostream & OutputDebugText(std::ostream &oss) const
Output a stream of debug information describing this scene.
Definition: Scene.h:118
virtual void PrepareRender()
Definition: Scene.h:351
const std::string & GetName() const
Retrieve the name of the scene.
Definition: Scene.h:110
State state
Definition: Scene.h:361
Tracks connections as a group.
Definition: Scene.h:69
Phase
Definition: Scene.h:46
Definition: Announcement.h:24
std::shared_ptr< Util::Profiler > advanceProfiler
Definition: Scene.h:369
double stateTransitionVelocity
Definition: Scene.h:364
Util::OS::timestamp_t startingPhaseTime
Definition: Scene.h:360
virtual void OnStateChanged(State oldState)
Fired immediately after entering a new state.
Definition: Scene.h:307
std::shared_ptr< Util::Profiler > rootProfiler
Definition: Scene.h:368
void SetStateTransitionDuration(Util::OS::timestamp_t ms)
Set the maximum duration of the raising or lowering state.
Definition: Scene.h:287
Util::OS::timestamp_t GetPhaseDuration(Util::OS::timestamp_t curTime=Util::OS::Time())
Calculate how much time we've spent in the current phase.
Definition: Scene.h:234
ConnList attachConns
Connected signals while controller is attached.
Definition: Scene.h:366
Phase phase
Definition: Scene.h:357
MR_Int64 timestamp_t
Definition: OS.h:55