The physical bounding volume of the object.
32-bit collision layer bitmask this object belongs to (default: 1).
32-bit collision mask specifying which layers this object interacts with (default: 0xFFFFFFFF).
Optional integer identifier for deterministic physics solver sorting and netcode lockstep.
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).
OptionalquaternionOptionalrigidOptionaltagOptional app-defined category tag, for typed identification instead of matching on name.
Custom user-defined data storage dictionary.
ReadonlyuuidStatic ReadonlyinspectorInspector schema for StageZoneMarker properties (the point-list itself is edited via
Maker's dedicated StageZone property-panel block, not this generic schema -- see ADR 0016
Phase 2).
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.
Deep-clones the held StageZone (including its points array) so that duplicating a
marker in Maker never leaves two markers sharing the same point list -- the generic
Object3D.clone()/shallowCloneWithValueTypes only deep-clones recognized value types
(Vector2D/3D, Quaternion, Color) and plain object literals, not arbitrary class
instances like StageZone.
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).
The scene-graph presence for a
StageZone: a non-renderable marker node (no geometry/material -- consistent with how Maker represents other non-renderable helpers) that carries aStageZoneinstance so it can be selected, listed in Maker's hierarchy panel, and round-tripped through glTF as anSW_stage_zoneextension (see ADR 0016). Composition rather thanStageZone extends Object3D:StageZoneitself stays a pure data/math class consumed at runtime purely throughcontainsPoint/getScaleAt/getLocalAxes(never through a transform or children), matchingStageMovementBehaviorOptions.zones: StageZone[]'s existing shape.