Small World Engine API Reference - v0.78.00
    Preparing search index...

    Class StageZoneMarker

    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 a StageZone instance so it can be selected, listed in Maker's hierarchy panel, and round-tripped through glTF as an SW_stage_zone extension (see ADR 0016). Composition rather than StageZone extends Object3D: StageZone itself stays a pure data/math class consumed at runtime purely through containsPoint/getScaleAt/getLocalAxes (never through a transform or children), matching StageMovementBehaviorOptions.zones: StageZone[]'s existing shape.

    Hierarchy (View Summary)

    Index
    animations: AnimationClip[] = []
    behaviors: Behavior[] = []
    bounds: BoundingVolume | undefined = undefined

    The physical bounding volume of the object.

    castShadow: boolean = false
    children: Object3D[] = []
    collisionLayer: number = 1

    32-bit collision layer bitmask this object belongs to (default: 1).

    collisionMask: number = 0xffffffff

    32-bit collision mask specifying which layers this object interacts with (default: 0xFFFFFFFF).

    frustumCulled: boolean = true
    geometry: GeometryDataInterface | undefined = undefined
    id: number = ...

    Optional integer identifier for deterministic physics solver sorting and netcode lockstep.

    inFrustum: boolean = true
    isCollidable: boolean = true

    Whether this object should generate bounds and participate in physics/raycasting. Defaults to true.

    isPickable: boolean = false
    isStatic: boolean = false
    isTrigger: boolean = false

    If true, this object acts as a trigger/sensor (fires trigger events without physical force).

    isVisible: boolean = true
    localMatrix: Matrix4 = ...
    material: AbstractMaterial | undefined = undefined
    name: string = ""
    onPointerClick?: () => void
    onPointerEnter: (() => void) | undefined
    onPointerLeave: (() => void) | undefined
    parent: Object3D | undefined = undefined
    pendingRemovalSink?: (obj: Object3D) => void

    Set 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().

    position: Vector3D = ...
    prefabSource?: string

    Name 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).

    quaternion?: Quaternion
    receiveShadow: boolean = false
    rigidBody?: RigidBody
    rotation: Vector3D = ...
    scale: Vector3D = ...
    tag?: string

    Optional app-defined category tag, for typed identification instead of matching on name.

    userData: Record<string, unknown> = {}

    Custom user-defined data storage dictionary.

    uuid: string = ...
    worldMatrix: Matrix4 = ...
    zone: StageZone
    inspector: Record<string, InspectorField> = ...

    Inspector 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).

    • get occlusionCulled(): boolean

      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.

      Returns boolean

    • set occlusionCulled(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get onPointerDown(): | ((ray: Ray, intersectionPoint: Vector3D) => void)
      | undefined

      Returns ((ray: Ray, intersectionPoint: Vector3D) => void) | undefined

    • set onPointerDown(
          handler: ((ray: Ray, intersectionPoint: Vector3D) => void) | undefined,
      ): void

      Parameters

      • handler: ((ray: Ray, intersectionPoint: Vector3D) => void) | undefined

      Returns void

    • get onPointerMove(): ((ray: Ray) => void) | undefined

      Returns ((ray: Ray) => void) | undefined

    • set onPointerMove(handler: ((ray: Ray) => void) | undefined): void

      Parameters

      • handler: ((ray: Ray) => void) | undefined

      Returns void

    • get onPointerUp(): (() => void) | undefined

      Returns (() => void) | undefined

    • set onPointerUp(handler: (() => void) | undefined): void

      Parameters

      • handler: (() => void) | undefined

      Returns void

    • 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.

      Returns StageZoneMarker

    • 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()).

      Parameters

      • out: Vector3D = _scratchWorldPosition

        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.

      Returns Vector3D

    • Traverses the object and all its descendants in depth-first order, executing the callback for each.

      Parameters

      Returns void