Creates a new AmbientLight.
The configuration options for the light.
The physical bounding volume of the object.
Whether the light casts shadows.
32-bit collision layer bitmask this object belongs to (default: 1).
32-bit collision mask specifying which layers this object interacts with (default: 0xFFFFFFFF).
The color of the light.
Optional integer identifier for deterministic physics solver sorting and netcode lockstep.
The intensity of the light.
Whether this object should generate bounds and participate in physics/raycasting. Defaults to true.
If true, this object acts as a trigger/sensor (fires trigger events without physical force).
OptionalonOptionalpendingSet by Scene on its hidden root object. Lets remove() notify the owning scene to queue
GPU-resource release for a discarded subtree even when called on a nested object directly
(someParent.remove(child)) instead of through Scene.remove() -- see remove()/add().
OptionalprefabName of the Maker prefab this node was instantiated from, if any -- provenance only, per
ADR 0010's Phase 2 "stamped copies" decision: no live link back to the source, just a record
of where this subtree came from. Round-tripped via the SW_prefab_instance glTF extension
(WorldWriter/GltfLoader).
OptionalquaternionOptionalrigidA small offset to prevent shadow acne.
The camera used to render the shadow map for this light.
An offset along the surface normal to prevent shadow acne.
The resolution of the shadow map for this light.
OptionaltagOptional app-defined category tag, for typed identification instead of matching on name.
ReadonlytypeThe type of the light.
Custom user-defined data storage dictionary.
ReadonlyuuidStatic ReadonlyinspectorFields common to every light, merged with Object3D.inspector (transform/visibility)
and a concrete subclass's own map (e.g. PointLight's distance/decay) via
collectInspectorSchema().
Set only by WebGPU Hierarchical-Z occlusion culling (see docs/adr/0008-...), one frame
stale by design (mapAsync GPU->CPU readback is never synchronous). Unlike inFrustum,
NOT reset every frame -- only WebGPURenderer.applyPendingOcclusionResults() writes it, for
whichever objects it has a fresh readback for; everything else keeps its last known value.
Always false on WebGL1/WebGL2 (never written there), making Scene._collectVisible()'s
check a permanent no-op on those backends.
Applies the light's data to the collective light data structure.
The structure to populate.
Returns an independent copy of this object's subtree -- own uuid, own transform, own
material (via AbstractMaterial.clone()), own behaviors (via Behavior.clone(), re-attached
so onAttach() runs against the new instance), and a recursive clone of every child. Used by
Maker's Duplicate command.
geometry and any texture references stay shared by reference -- immutable data, same as
every other "place another instance" workflow in the engine. parent/bounds reset (the
caller reparents and bounds recompute lazily); rigidBody is deliberately dropped rather
than shared, since two objects driven by the same live physics body would move together.
Known gap: skinned meshes aren't specially handled -- a cloned SkinnedMesh's skeleton
would still reference the original subtree's bones, not the freshly cloned ones alongside
it. Not a concern for Maker's realistic Duplicate targets (props, lights, prefab instances);
character rigs go through the Prefab/glTF pipeline instead.
Reads this object's position in world space, i.e. after resolving the full parent
chain -- unlike position, which is always local to its immediate parent. Requires
worldMatrix to be current (see updateMatrixWorld()).
Optional vector to write into, to avoid allocating one per call. If omitted, a shared module-level scratch is used and overwritten by the next call.
Traverses the object and all its descendants in depth-first order, executing the callback for each.
Static_StaticresetResets the global object ID generator (useful for deterministic tests).
Ambient light that illuminates all objects in the scene equally.