Skip to main content

LambdaStateListener.ixx File

Lambda-based listener for state transitions. More...

Included Headers

#include <functional> #include <cstdint> #include <utility> #include <helios.engine.runtime.world.GameObject> #include <helios.engine.state.types> #include <helios.engine.runtime.world.UpdateContext> #include <helios.engine.state.StateTransitionListener>

Namespaces Index

namespacehelios
namespaceengine
namespacestate
namespacelisteners

Classes Index

classLambdaStateListener<StateType>

Lambda-based implementation of StateTransitionListener. More...

Description

Lambda-based listener for state transitions.

File Listing

The file content with the documentation metadata removed is:

1
5module;
6
7#include <functional>
8#include <cstdint>
9#include <utility>
10
11export module helios.engine.state.listeners.LambdaStateListener;
12
13import helios.engine.state.StateTransitionListener;
14import helios.engine.runtime.world.UpdateContext;
15
16import helios.engine.state.types;
17
18import helios.engine.runtime.world.GameObject;
19
20using namespace helios::engine::state::types;
22
35 template<typename StateType>
36 class LambdaStateListener : public StateTransitionListener<StateType> {
37
41 using OnEnterCallback = std::function<void(helios::engine::runtime::world::UpdateContext&, const StateType)>;
42
46 using OnExitCallback = std::function<void(helios::engine::runtime::world::UpdateContext&, const StateType)>;
47
51 using OnTransitionCallback = std::function<void(helios::engine::runtime::world::UpdateContext&, const StateTransitionContext<StateType>)>;
52
56 OnEnterCallback onEnterCallback_ = nullptr;
57
61 OnTransitionCallback onTransitionCallback_= nullptr;
62
66 OnExitCallback onExitCallback_= nullptr;
67
68
69 public:
70
79 OnExitCallback onExitCallback,
80 OnTransitionCallback onTransitionCallback,
81 OnEnterCallback onEnterCallback
82 ) : onExitCallback_(std::move(onExitCallback)),
83 onTransitionCallback_(std::move(onTransitionCallback)),
84 onEnterCallback_(std::move(onEnterCallback)) {}
85
92 OnExitCallback onEnterCallback
93 ) : onEnterCallback_(std::move(onEnterCallback)) {}
94
101 OnTransitionCallback onTransitionCallback
102 ) : onTransitionCallback_(std::move(onTransitionCallback)) {}
103
104
105
111 const StateType from
112 ) noexcept override {
113 if (onExitCallback_) {
114 onExitCallback_(updateContext, from);
115 }
116 }
117
123 const StateType to
124 ) noexcept override {
125 if (onEnterCallback_) {
126 onEnterCallback_(updateContext, to);
127 }
128 }
129
136 ) noexcept override {
137 if (onTransitionCallback_) {
138 onTransitionCallback_(updateContext, transitionCtx);
139 }
140 };
141
142
143
144
145 };
146
147}
148

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.