Skip to main content

lifecycle Folder

Folders Index

foldercomponents
foldersystems

Files Index

filehelios/engine/mechanics/lifecycle/_module.ixx

Aggregates lifecycle management modules for entity components. More...

filemechanics/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

ClassPurpose
DelayedComponentEnablerComponent that tracks pending activations with timers
DelayedComponentEnablerSystemSystem 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.