lifecycle Folder
Folders Index
| folder | components |
| folder | systems |
Files Index
| file | helios/engine/mechanics/lifecycle/_module.ixx |
|
Aggregates lifecycle management modules for entity components. More... | |
| file | mechanics/lifecycle/registry.ixx |
|
Component registration for lifecycle module. More... | |
Description
helios::engine::mechanics::lifecycle
Lifecycle management for entity components with delayed activation support.
Overview
This module provides mechanisms for controlling when components become active during an entity's lifecycle. The primary use case is delaying component activation after spawn, enabling patterns like collision immunity, staggered wave spawns, and effect sequencing.
Key Classes
| Class | Purpose |
|---|---|
| DelayedComponentEnabler | Component that tracks pending activations with timers |
| DelayedComponentEnablerSystem | System that decrements timers and enables components |
Architecture
DelayedComponentEnablerInitializer
│
▼ defer(ComponentTypeId, delay)
┌───────────────────────────┐
│ DelayedComponentEnabler │
│ - deferredComponents_[] │
│ { delta, typeId } │
└───────────────────────────┘
│
▼ each frame
┌────────────────────────────────┐
│ DelayedComponentEnablerSystem │
│ - decrement delta │
│ - enable() when delta <= 0 │
│ - sync() to remove completed │
└────────────────────────────────┘
Usage
// During spawn initialization, defer collision component by 0.5 seconds
auto* enabler = entity.get<DelayedComponentEnabler>();
enabler->defer(ComponentTypeId::id<CollisionComponent>(), 0.5f);
// Or use the initializer for batch spawns with staggered activation
auto initializer = std::make_unique<DelayedComponentEnablerInitializer<
CollisionComponent,
RenderableComponent
>>(0.1f); // 0.1s delay between each entity in batch
Common Patterns
Collision Immunity
// Projectiles ignore collisions for 0.2s after spawn
DelayedComponentEnablerInitializer<CollisionComponent>(0.2f)
Staggered Wave Spawns
// 10 enemies appear one by one, 0.5s apart, then pattern repeats
DelayedComponentEnablerInitializer<RenderableComponent, AIComponent>(0.5f, 10)
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.