Skip to content

Class: LightSystem

Defined in: packages/core/src/lighting/light-system.ts:36

System base interface wired to the IWSDK World, renderer, and XR runtime.

Remarks

  • createSystem(queries, schema) returns a class that implements this interface.
  • Config values are exposed as reactive Signals on this.config.<key>.
  • Common world resources are available as readonly properties (player, input, scene, camera, renderer, visibilityState).
  • Use cleanupFuncs.push(() => ...) to register teardown callbacks.

Extends

  • System<SystemSchema, { ambientLights: { required: Component<{ color: { default: [number, number, number, number]; label: string; type: Color; widget: "color"; }; intensity: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; }>[]; }; directionalLights: { required: Component<{ castShadow: { default: false; label: "Cast shadow"; type: Boolean; }; color: { default: [number, number, number, number]; label: string; type: Color; widget: "color"; }; intensity: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowBias: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowCameraFar: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowCameraNear: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowCameraSize: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowMapSize: { default: "1024"; enum: { Size1024: "1024"; Size2048: "2048"; Size256: "256"; Size512: "512"; }; help: "Square shadow texture resolution. Higher values cost more GPU memory and fill rate."; label: "Shadow resolution"; type: Enum; }; shadowNormalBias: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowRadius: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; }>[]; }; hemisphereLights: { required: Component<{ groundColor: { default: [number, number, number, number]; label: string; type: Color; widget: "color"; }; intensity: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; skyColor: { default: [number, number, number, number]; label: string; type: Color; widget: "color"; }; }>[]; }; pointLights: { required: Component<{ castShadow: { default: false; label: "Cast shadow"; type: Boolean; }; color: { default: [number, number, number, number]; label: string; type: Color; widget: "color"; }; decay: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; distance: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; intensity: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowBias: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowCameraFar: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowCameraNear: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowMapSize: { default: "1024"; enum: { Size1024: "1024"; Size2048: "2048"; Size256: "256"; Size512: "512"; }; help: "Square shadow texture resolution. Higher values cost more GPU memory and fill rate."; label: "Shadow resolution"; type: Enum; }; shadowNormalBias: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowRadius: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; }>[]; }; rectAreaLights: { required: Component<{ color: { default: [number, number, number, number]; label: string; type: Color; widget: "color"; }; height: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; intensity: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; width: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; }>[]; }; spotLights: { required: Component<{ angleDeg: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; castShadow: { default: false; label: "Cast shadow"; type: Boolean; }; color: { default: [number, number, number, number]; label: string; type: Color; widget: "color"; }; decay: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; distance: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; intensity: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; penumbra: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowBias: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowCameraFar: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowCameraNear: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowMapSize: { default: "1024"; enum: { Size1024: "1024"; Size2048: "2048"; Size256: "256"; Size512: "512"; }; help: "Square shadow texture resolution. Higher values cost more GPU memory and fill rate."; label: "Shadow resolution"; type: Enum; }; shadowNormalBias: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; shadowRadius: { default: number; description?: string; help?: string; label: string; max?: number; min?: number; step?: number; type: Float32; widget?: "color" | "slider" | "vector" | "text" | "select"; }; }>[]; }; }, this>

Constructors

Constructor

new LightSystem(_w, _qm, _p): LightSystem

Defined in: node_modules/.pnpm/elics@3.4.2/node_modules/elics/lib/system.d.ts:76

Parameters

_w

World

_qm

QueryManager

_p

number

Returns

LightSystem

Inherited from

createSystem({ ambientLights: { required: [AmbientLightComponent] }, directionalLights: { required: [DirectionalLightComponent] }, hemisphereLights: { required: [HemisphereLightComponent] }, pointLights: { required: [PointLightComponent] }, rectAreaLights: { required: [RectAreaLightComponent] }, spotLights: { required: [SpotLightComponent] }, }).constructor

Properties

camera

readonly camera: PerspectiveCamera

Defined in: packages/core/src/ecs/system.ts:63

Inherited from

System.camera


cleanupFuncs

readonly cleanupFuncs: () => void[]

Defined in: packages/core/src/ecs/system.ts:66

Returns

void

Inherited from

System.cleanupFuncs


config

config: SystemConfigSignals<S>

Defined in: packages/core/src/ecs/system.ts:49

Inherited from

System.config


createEntity()

createEntity: () => Entity

Defined in: packages/core/src/ecs/system.ts:81

Returns

Entity

Inherited from

System.createEntity


globals

globals: Record<string, any>

Defined in: packages/core/src/ecs/system.ts:54

Inherited from

System.globals


input

readonly input: InputManager

Defined in: packages/core/src/ecs/system.ts:61

Inherited from

System.input


isPaused

isPaused: boolean

Defined in: packages/core/src/ecs/system.ts:48

Inherited from

System.isPaused


player

readonly player: XROrigin

Defined in: packages/core/src/ecs/system.ts:58

Inherited from

System.player


playerEntity

readonly playerEntity: Entity

Defined in: packages/core/src/ecs/system.ts:59

Inherited from

System.playerEntity


playerHeadEntity

readonly playerHeadEntity: Entity

Defined in: packages/core/src/ecs/system.ts:60

Inherited from

System.playerHeadEntity


priority

priority: number

Defined in: packages/core/src/ecs/system.ts:53

Inherited from

System.priority


queries

queries: Record<keyof Q, Query>

Defined in: packages/core/src/ecs/system.ts:50

Inherited from

System.queries


queryManager

queryManager: QueryManager

Defined in: packages/core/src/ecs/system.ts:52

Inherited from

System.queryManager


renderer

readonly renderer: WebGLRenderer

Defined in: packages/core/src/ecs/system.ts:64

Inherited from

System.renderer


scene

readonly scene: Scene

Defined in: packages/core/src/ecs/system.ts:62

Inherited from

System.scene


visibilityState

readonly visibilityState: Signal<VisibilityState>

Defined in: packages/core/src/ecs/system.ts:65

Inherited from

System.visibilityState


world

world: World

Defined in: packages/core/src/ecs/system.ts:51

Inherited from

System.world


xrFrame

xrFrame: XRFrame

Defined in: packages/core/src/ecs/system.ts:56

Inherited from

System.xrFrame


xrManager

xrManager: WebXRManager

Defined in: packages/core/src/ecs/system.ts:55

Inherited from

System.xrManager

Methods

destroy()

destroy(): void

Defined in: packages/core/src/lighting/light-system.ts:82

Returns

void

Overrides

createSystem({ ambientLights: { required: [AmbientLightComponent] }, directionalLights: { required: [DirectionalLightComponent] }, hemisphereLights: { required: [HemisphereLightComponent] }, pointLights: { required: [PointLightComponent] }, rectAreaLights: { required: [RectAreaLightComponent] }, spotLights: { required: [SpotLightComponent] }, }).destroy


init()

init(): void

Defined in: packages/core/src/lighting/light-system.ts:46

Returns

void

Overrides

System.init


play()

play(): void

Defined in: packages/core/src/ecs/system.ts:79

Returns

void

Inherited from

System.play


stop()

stop(): void

Defined in: packages/core/src/ecs/system.ts:80

Returns

void

Inherited from

System.stop


update()

update(): void

Defined in: packages/core/src/lighting/light-system.ts:69

Per-frame tick. Both arguments are in seconds (Three.js Clock convention), not milliseconds.

Returns

void

Overrides

System.update

Privacy | Terms