Skip to main content

bootstrap.ixx File

Engine bootstrap: component registration and GameWorld/GameLoop factory. More...

Included Headers

Namespaces Index

namespacehelios
namespaceengine
namespacebootstrap

Classes Index

structComponentRegistrar<std::tuple< TEntityManagers... >>

Description

Engine bootstrap: component registration and GameWorld/GameLoop factory.

File Listing

The file content with the documentation metadata removed is:

1
5module;
6
7#include <cassert>
8#include <cstddef>
10#include <memory>
11#include <utility>
12
13export module helios.engine.bootstrap;
14
15import helios.engine.runtime.gameloop;
16import helios.engine.runtime.world;
17
18import helios.engine.state.types.StateTransitionContext;
19import helios.engine.runtime.messaging.command;
20
21import helios.engine.runtime.world.types.GameObjectHandle;
22
23import helios.engine.platform;
24
25import helios.engine.scene.registry;
26import helios.engine.core.registry;
27import helios.engine.spatial.registry;
28import helios.engine.scene.registry;
29
30import helios.engine.rendering.registry;
31import helios.engine.rendering.RenderManager;
32import helios.engine.runtime.registry;
33
34import helios.engine.runtime.lifecycle;
35import helios.engine.runtime.timing;
36import helios.engine.runtime.enginestate;
37
38using namespace helios::engine::state::types;
46
47export namespace helios::engine::bootstrap {
48
49 template<typename... Tuple>
51
52 template<typename... TEntityManagers>
53 struct ComponentRegistrar<std::tuple<TEntityManagers...>> {
54 static void registerComponents() {
60 }
61
62 };
63
64
85 inline void registerAllComponents() {
86
87 static bool done = false;
88 if (done) {
89 return;
90 }
91 done = true;
92
94
95 }
96
148 inline std::pair<std::unique_ptr<GameWorld>, std::unique_ptr<GameLoop>> bootstrapGameWorld(
150 ) {
151 auto gameWorld = std::make_unique<helios::engine::runtime::world::GameWorld>(capacity);
152
153 auto gameLoop = std::make_unique<helios::engine::runtime::gameloop::GameLoop>(*gameWorld);
154
155
157
158 // managers
160
163
164 gameWorld->registerManager<helios::engine::runtime::timing::TimerManager>();
165
166 gameWorld->session().trackState<helios::engine::runtime::enginestate::types::EngineState>();
167
168 gameWorld->registerCommandBuffer<RenderCommandBuffer>();
169 gameWorld->registerCommandBuffer<PlatformCommandBuffer>();
170 gameWorld->registerCommandBuffer<EngineCommandBuffer>();
171
172 gameWorld->session().setStateFrom<EngineState>(
174 EngineState::Undefined,
175 EngineState::Booting,
176 EngineStateTransitionId::BootRequest
177 ));
178
179
180 return std::make_pair(std::move(gameWorld), std::move(gameLoop));
181 }
182
183}
184

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.