Skip to main content

Class: LightSourceRegistry

Pooled structure-of-arrays storage for every registered local light. Handles are generation-checked packed integers; all mutators are in-place writes with zero allocation. The registry knows nothing about selection, chunks, or the GPU — it is the single source of truth the rest of the system reads.

Constructors

constructor

new LightSourceRegistry(capacity): LightSourceRegistry

Parameters

NameType
capacitynumber

Returns

LightSourceRegistry

Properties

aliveCount

aliveCount: number = 0


aliveIndices

Readonly aliveIndices: Uint32Array<ArrayBufferLike>

Dense list of alive slot indices, iteration order = allocation order.


aux

Readonly aux: Float32Array<ArrayBufferLike>

Spot: direction xyz + cosOuter. Capsule: end offset xyz + 0.


capacity

Readonly capacity: number


colors

Readonly colors: Float32Array<ArrayBufferLike>


flags

Readonly flags: Uint8Array<ArrayBufferLike>


flickers

Readonly flickers: Float32Array<ArrayBufferLike>

Flicker speed, amplitude, phase, and the spot's inverse cos delta.


intensities

Readonly intensities: Float32Array<ArrayBufferLike>


positions

Readonly positions: Float32Array<ArrayBufferLike>


priorityBiases

Readonly priorityBiases: Float32Array<ArrayBufferLike>


ranges

Readonly ranges: Float32Array<ArrayBufferLike>


revision

revision: number = 1

Bumped on any mutation that can change selection or packed data; the clustering pass compares it to decide whether any work exists at all.


shapes

Readonly shapes: Uint8Array<ArrayBufferLike>


shares

Readonly shares: Float32Array<ArrayBufferLike>

Methods

add

add(descriptor, x, y, z): number

Parameters

NameType
descriptorLocalLightDescriptor
xnumber
ynumber
znumber

Returns

number


generationAt

generationAt(index): number

Current generation of a slot, for state keyed to a light's lifetime rather than its slot (selection hysteresis must not survive slot reuse).

Parameters

NameType
indexnumber

Returns

number


isEnabledAt

isEnabledAt(index): boolean

Parameters

NameType
indexnumber

Returns

boolean


remove

remove(handle): boolean

Parameters

NameType
handlenumber

Returns

boolean


resolve

resolve(handle): number

Slot index for a live handle, or -1 for stale/invalid ones.

Parameters

NameType
handlenumber

Returns

number


setColor

setColor(handle, color): boolean

Parameters

NameType
handlenumber
color[number, number, number]

Returns

boolean


setDirection

setDirection(handle, x, y, z): boolean

Parameters

NameType
handlenumber
xnumber
ynumber
znumber

Returns

boolean


setEnabled

setEnabled(handle, isOn): boolean

Parameters

NameType
handlenumber
isOnboolean

Returns

boolean


setIntensity

setIntensity(handle, intensity): boolean

Parameters

NameType
handlenumber
intensitynumber

Returns

boolean


setPosition

setPosition(handle, x, y, z): boolean

Parameters

NameType
handlenumber
xnumber
ynumber
znumber

Returns

boolean


setRange

setRange(handle, range): boolean

Parameters

NameType
handlenumber
rangenumber

Returns

boolean