Skip to main content

DelayedComponentEnablerSystem Class Template

System that processes delayed component activations each frame. More...

Declaration

template <typename THandle> class helios::engine::runtime::lifecycle::systems::DelayedComponentEnablerSystem<THandle> { ... }

Public Member Typedefs Index

template <typename THandle>
usingEngineRoleTag = helios::engine::runtime::world::tags::SystemRole

Public Member Functions Index

template <typename THandle>
voidupdate (helios::engine::runtime::world::UpdateContext &updateContext) noexcept

Processes all deferred components and activates expired ones. More...

Private Member Attributes Index

template <typename THandle>
std::vector< helios::ecs::types::ComponentTypeId< THandle > >sync_

Temporary buffer for components that completed their delay. More...

Description

System that processes delayed component activations each frame.

DelayedComponentEnablerSystem iterates over all entities with a DelayedComponentEnabler component and decrements the delay timers. When a timer reaches zero, the corresponding component is enabled.

This system enables runtime patterns such as:

  • Spawn immunity: Projectiles/enemies ignore collisions briefly
  • Staggered activation: Wave spawns activate progressively
  • Effect sequencing: Components enable in a defined order
info

Should be scheduled in the runtime phase to ensure proper timing.

See Also

DelayedComponentEnabler

See Also

DelayedComponentEnablerInitializer

Definition at line 44 of file DelayedComponentEnablerSystem.ixx.

Public Member Typedefs

EngineRoleTag

template <typename THandle>
using helios::engine::runtime::lifecycle::systems::DelayedComponentEnablerSystem< THandle >::EngineRoleTag = helios::engine::runtime::world::tags::SystemRole

Public Member Functions

update()

template <typename THandle>
void helios::engine::runtime::lifecycle::systems::DelayedComponentEnablerSystem< THandle >::update (helios::engine::runtime::world::UpdateContext & updateContext)
inline noexcept

Processes all deferred components and activates expired ones.

For each entity with DelayedComponentEnabler:

  1. Decrements all delay timers by deltaTime
  2. Enables components whose timers reach zero
  3. Removes activated components from the deferred list
Parameters
updateContext

Provides deltaTime for timer updates.

Definition at line 65 of file DelayedComponentEnablerSystem.ixx.

66
67 const float delta = updateContext.deltaTime();
68
69 for (auto [entity, dce, active] : updateContext.view<
72 helios::ecs::components::Active<THandle>
73 >().whereEnabled()) {
74
75 sync_.clear();
76
77 auto deferredComponents = dce->deferredComponents();
78
79 for (auto& deferredComponent : deferredComponents) {
80
81 deferredComponent.delta = std::max(deferredComponent.delta - delta, 0.0f);
82
83 const auto componentTypeId = deferredComponent.componentTypeId;
84
85 if (deferredComponent.delta <= 0) {
86 auto* rawCmp = entity.raw(componentTypeId);
87 auto ops = helios::ecs::ComponentOpsRegistry<THandle>::ops(componentTypeId);
88
89 if (rawCmp && ops.enable) {
90 ops.enable(rawCmp);
91 }
92
93 sync_.push_back(componentTypeId);
94 }
95 }
96
97 dce->sync(sync_);
98 }
99 }

Reference helios::engine::runtime::lifecycle::registerComponents.

Private Member Attributes

sync_

template <typename THandle>
std::vector<helios::ecs::types::ComponentTypeId<THandle> > helios::engine::runtime::lifecycle::systems::DelayedComponentEnablerSystem< THandle >::sync_

Temporary buffer for components that completed their delay.

Definition at line 49 of file DelayedComponentEnablerSystem.ixx.

49 std::vector<helios::ecs::types::ComponentTypeId<THandle>> sync_;

The documentation for this class was generated from the following file:


Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.