FB2AuraSystem
Overview
- Subsystem that centrally manages the Aura system. Switches from the previous per-FB2AuraComponent Tick approach to a system-based Tick to improve performance. Emitter: an Entity emitting an Aura (few, dynamically registered). Receiver: an Entity affected by Auras (every Entity that has an AuraComponent). Location-change detection is done automatically in the system Tick.
Metadata
| Field | Value |
|---|---|
| Kind | system |
| Environment | B2 - Simulation |
| Category | systems |
| Extends | FB2Subsystem |
| Require | require('Systems.FB2AuraSystem') |
Properties (8)
| Name | Type | Description |
|---|---|---|
EmitterEntries | FB2AuraEmitterEntry[] | Array of Emitter entries (only Entities currently emitting an Aura). |
EmitterIndexMap | table<FB1EntityId, integer> | |
PendingComponents | any[] | |
PendingEmitterUnregistrations | FB1EntityId[] | |
PendingReceiverUnregistrations | FB1EntityId[] | |
ReceiverEntries | FB2AuraReceiverEntry[] | Array of Receiver entries (every Entity with an AuraComponent). |
ReceiverIndexMap | table<FB1EntityId, integer> | Index map for fast lookup. |
bIsProcessingTick | boolean | Prevents array modification during Tick processing. Prevents OOB/stale-index when the Entries array changes on the UpdateReceiverAura/UpdateEmitterLocation -> Entity::Destroy -> AuraComponent::OnDestroy -> UnregisterReceiver/UnregisterEmitter path. |
Functions (9)
| Function | Parameters | Returns | Description |
|---|---|---|---|
GetEmitterCount | - | integer | Returns Emitter Count. |
GetReceiverCount | - | integer | Queries state (receiver count). |
IsRegisteredAsEmitter | InEntityId: FB1EntityId | boolean | Returns whether Registered As Emitter. |
IsRegisteredAsReceiver | InEntityId: FB1EntityId | boolean | Returns whether Registered As Receiver. |
RegisterEmitter | InEntityId: FB1EntityId | - | Registers Emitter. |
RegisterReceiver | InEntityId: FB1EntityId | - | Registers Receiver. |
Tick | DeltaTime: number, CurrentTime: FDateTime | - | System Tick. Detects Emitter/Receiver location changes and processes Auras. |
UnregisterEmitter | InEntityId: FB1EntityId | - | Unregisters Emitter. |
UnregisterReceiver | InEntityId: FB1EntityId | - | Unregisters Receiver. |
Override points (5)
Implement these in Lua as FB2AuraSystem.Override_Name = function(...) end.
| Function | Parameters | Returns | Description |
|---|---|---|---|
Override_RegisterEmitter | InEntityId: FB1EntityId | - | Registers Emitter. |
Override_RegisterReceiver | InEntityId: FB1EntityId | - | Registers Receiver. |
Override_Tick | DeltaTime: number, CurrentTime: FDateTime | - | System Tick. Detects Emitter/Receiver location changes and processes Auras. |
Override_UnregisterEmitter | InEntityId: FB1EntityId | - | Unregisters Emitter. |
Override_UnregisterReceiver | InEntityId: FB1EntityId | - | Unregisters Receiver. |