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


handleAt​

▸ handleAt(index): number

The handle a live slot answers to (meaningless for a free slot).

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