GameObjectFactory.ixx File
Factory for creating and cloning GameObjects with fluent configuration. More...
Included Headers
#include <memory>
#include <functional>
#include <helios.engine.core.units>
#include <helios.util.Guid>
#include <helios.math>
#include <helios.engine.modules>
#include <helios.engine.mechanics>
#include <helios.engine.runtime.pooling.components.PrefabIdComponent>
#include <helios.engine.runtime.world.GameWorld>
#include <helios.engine.core.data>
#include <helios.engine.builder.gameObject.builders>
#include <helios.engine.ecs.GameObject>
Namespaces Index
| namespace | helios |
| namespace | engine |
|
Main engine module aggregating core infrastructure and game systems. More... | |
| namespace | builder |
|
Fluent builder pattern for constructing GameObjects. More... | |
| namespace | gameObject |
|
Factory and prototype classes for GameObject construction. More... | |
Classes Index
| class | GameObjectFactory |
|
Factory class for creating and cloning GameObjects. More... | |
| class | GameObjectPrototype |
|
Internal builder class for fluent GameObject configuration. More... | |
Description
Factory for creating and cloning GameObjects with fluent configuration.
File Listing
The file content with the documentation metadata removed is:
27export namespace helios::engine::builder::gameObject {
55 class GameObjectFactory {
68 helios::engine::ecs::GameObject gameObject_;
70 helios::engine::runtime::world::GameWorld& gameWorld_;
80 std::unique_ptr<helios::engine::builder::gameObject::builders::RenderingBuilder> renderingBuilder_;
90 std::unique_ptr<helios::engine::builder::gameObject::builders::CollisionBuilder> collisionBuilder_;
95 std::unique_ptr<helios::engine::builder::gameObject::builders::TransformBuilder> transformBuilder_;
100 std::unique_ptr<helios::engine::builder::gameObject::builders::UiTransformBuilder> uiTransformBuilder_;
125 std::unique_ptr<helios::engine::builder::gameObject::builders::LifecycleBuilder> lifecycleBuilder_;
140 std::unique_ptr<helios::engine::builder::gameObject::builders::ObserverBuilder> observerBuilder_;
149 using MotionBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::MotionBuilder&)>;
152 using RenderingBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::RenderingBuilder&)>;
155 using SceneBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::SceneBuilder&)>;
158 using TransformBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::TransformBuilder&)>;
161 using UiTransformBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::UiTransformBuilder&)>;
164 using CollisionBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::CollisionBuilder&)>;
167 using EffectsBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::EffectsBuilder&)>;
170 using SpawnBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::SpawnBuilder&)>;
173 using AiBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::AiBuilder&)>;
176 using CombatBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::CombatBuilder&)>;
179 using LifecycleBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::LifecycleBuilder&)>;
182 using HealthBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::HealthBuilder&)>;
185 using ScoringBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::ScoringBuilder&)>;
188 using ObserverBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::ObserverBuilder&)>;
191 using MenuBuilderCallback = std::function<void(helios::engine::builder::gameObject::builders::MenuBuilder&)>;
196 GameObjectPrototype(helios::engine::runtime::world::GameWorld& gameWorld) :
197 gameObject_(gameWorld.addGameObject()),
199 motionBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::MotionBuilder>(gameObject_)),
200 renderingBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::RenderingBuilder>(gameObject_)),
201 sceneBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::SceneBuilder>(gameObject_)),
202 collisionBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::CollisionBuilder>(gameObject_)),
203 transformBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::TransformBuilder>(gameObject_)),
204 uiTransformBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::UiTransformBuilder>(gameObject_)),
205 effectsBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::EffectsBuilder>(gameObject_)),
206 spawnBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::SpawnBuilder>(gameObject_)),
207 aiBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::AiBuilder>(gameObject_)),
208 CombatBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::CombatBuilder>(gameObject_)),
209 lifecycleBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::LifecycleBuilder>(gameObject_)),
210 healthBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::HealthBuilder>(gameObject_)),
211 scoringBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::ScoringBuilder>(gameObject_)),
212 observerBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::ObserverBuilder>(gameObject_)),
213 menuBuilder_(std::make_unique<helios::engine::builder::gameObject::builders::MenuBuilder>(gameObject_))
233 helios::engine::ecs::GameObject make(const bool active = false) {
234 gameObject_.setActive(active);
418 gameWorld_.session().setPlayerEntityHandle(gameObject_.entityHandle());
422 GameObjectPrototype& withPrefabId(const helios::engine::core::data::PrefabId prefabId) {
423 gameObject_.add<helios::engine::runtime::pooling::components::PrefabIdComponent>(prefabId);
435 static GameObjectFactory& instance() {
436 static GameObjectFactory inst{};
447 static GameObjectPrototype gameObject(helios::engine::runtime::world::GameWorld& gameWorld) {
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.