Skip to content

ComponentPool Class

Definition

Namespace: Brine2D.ECS

Stores all components of a specific type for a single scene-scoped EntityWorld. All access is game-thread-only via EntityWorld; no synchronization is required. Provides ArrayPool-based snapshots for zero-allocation iteration.

C#
internal sealed class ComponentPool<T>
    where T : Brine2D.ECS.Component

Type parameters

T

The component type.

Inheritance System.Object → ComponentPool\<T>

Methods
All() Returns all component entries as a materialized list. Allocates a new list on every call; for hot-path iteration prefer GetTypedSnapshot() + Brine2D.ECS.ComponentPool<>.ReturnTypedSnapshot\(System\.ValueTuple\{System\.Int64,@0\}\[\]\) directly.
GetEntityIdSnapshot() Creates an ArrayPool snapshot of entity IDs only, for type-erased iteration. MUST call ReturnEntityIdSnapshot\(long\[\]\) in a finally block.
GetTypedSnapshot() Creates a strongly-typed ArrayPool snapshot for iteration. Avoids the System.Array boxing round-trip of GetSnapshot. MUST call Brine2D.ECS.ComponentPool<>.ReturnTypedSnapshot\(System\.ValueTuple\{System\.Int64,@0\}\[\]\) in a finally block.
InsertSorted\(List<AnimationTransition>, AnimationTransition\) Inserts t into list in stable priority order \(lower [Priority](../../Animation/AnimationTransition/Priority.md 'Brine2D\.Animation\.AnimationTransition\.Priority') = evaluated first\). Equal-priority transitions are appended after existing ones at the same priority, preserving insertion order within a priority band.
ReturnEntityIdSnapshot\(long\[\]\) Returns an entity-ID snapshot to the ArrayPool. MUST be called after GetEntityIdSnapshot() to prevent memory leaks.