Skip to main content

DefaultEngineStateTransitionRules.ixx File

Default transition rules for the game state machine. More...

Included Headers

Namespaces Index

namespacehelios
namespaceengine
namespaceruntime
namespaceenginestate
namespacerules

Classes Index

classDefaultEngineStateTransitionRules

Provides the default set of game state transition rules. More...

Description

Default transition rules for the game state machine.

File Listing

The file content with the documentation metadata removed is:

1
5module;
6
7#include <span>
8#include <array>
9#include <cstddef>
10
11export module helios.engine.runtime.enginestate.rules.DefaultEngineStateTransitionRules;
12
13
14
15import helios.engine.runtime.world.UpdateContext;
16
17import helios.engine.runtime.enginestate.types;
18import helios.engine.runtime.enginestate.rules.guards;
19
20import helios.engine.state.types.StateTransitionRule;
21import helios.engine.state.types.StateTransitionId;
22import helios.engine.rendering.shader.types.ShaderHandle;
23
24using namespace helios::engine::state::types;
29
31 using namespace helios::engine::state::types;
32
37
38
39 static constexpr auto rules_ = [] {
40 std::array baseRules = std::to_array<StateTransitionRule<EngineState>>({
41
42 {EngineState::Undefined, EngineStateTransitionId::BootRequest, EngineState::Booting},
43 {EngineState::Booting, EngineStateTransitionId::BootRequest, EngineState::Booted,
45
46 {EngineState::Booted, EngineStateTransitionId::WarmupRequest, EngineState::Warmup,
48
49 {EngineState::Warmup, EngineStateTransitionId::WarmupDone, EngineState::Running},
50
51 });
52
53 constexpr EngineState shutdownable[] = {
54 EngineState::Running,
55 EngineState::Warmup
56 };
57
58 std::array<StateTransitionRule<EngineState>, baseRules.size() + std::size(shutdownable)> rules{};
59
60 for (size_t i = 0; i < baseRules.size(); i++) {
61 rules[i] = baseRules[i];
62 }
63
64 for (size_t i = 0; i < std::size(shutdownable); i++) {
67 EngineStateTransitionId::ShutdownRequest,
68 EngineState::Shutdown
69 };
70 }
71
72 return rules;
73 }();
74
75
76
77 public:
78
84 [[nodiscard]] static std::span<const StateTransitionRule<EngineState>> rules() {
85 return std::span{rules_};
86 }
87
88 };
89 }
90

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.