Documentation
    Preparing search index...

    Class PoseTarget

    The pose §19's animation stage produces for a node, as a §6a component.

    const node = new Group();
    const target = node.addComponent(new PoseTarget()).copyFrom(node.transform);

    node.transformAuthority = "blended"; // §42: §19's pipeline owns the transform
    target.position.set(0, 2, 0); // version += 1
    target.capturePrevious(); // per fixed step, from the capture system

    One per node (§6a). Holds authored state only — no per-frame work, no solver reference, no knowledge of who reads it.

    Implements

    Index
    • Builds a target at the origin with identity rotation, with the history seeded to that same pose (so an uncaptured target differences to zero) and version 0.

      Returns PoseTarget

    host: ComponentHost | null = null

    The node this component is attached to, or null. Written by the ComponentRegistry alone (§6a); never assign it.

    position: Vector3

    Target position, in the same space as the node's transform.position — local to the node's parent (§7). The origin by default. Write into it; see the class documentation for why it is readonly.

    previousPosition: Vector3

    Target position at the previous PoseTarget.capturePrevious — the finite-difference history, not a render-interpolation store. Engine-owned and hookless; treat it as read-only outside the blend system.

    previousRotation: Quaternion

    Target rotation at the previous PoseTarget.capturePrevious.

    previousScale: Vector3

    Target scale at the previous PoseTarget.capturePrevious.

    rotation: Quaternion

    Target rotation as a unit quaternion (§7a: radians). Identity by default.

    scale: Vector3

    Target scale, in the same space as the node's transform.scale. Identity (1, 1, 1) by default. The physical side of a §19 blend is also identity — a solver body has no scale (decision, 2026-09-06).

    typeName: "pose-target"

    Component key (plan D2) and §79 serialization name.

    • get version(): number

      Counter incremented on every mutation of PoseTarget.position, PoseTarget.rotation, or PoseTarget.scale, so the blend system can skip a node whose target has not moved.

      Opaque and monotonic, exactly like Transform.version: compare two stamps for inequality, never subtract them. A single call may bump it more than once when it writes both members — PoseTarget.copyFrom bumps twice — which is why only ordering is meaningful.

      Returns number

    • Shifts the history one fixed step forward: previous ← current. Allocates nothing and does not bump PoseTarget.version — capturing is not a mutation of the target.

      Call it once per fixed step, before that step's animation writes (see the class documentation). Calling it twice in one step collapses the finite difference to zero and would report a moving target as stationary; never calling it leaves previous === current, which reports zero velocity — wrong for a moving target, but never a spurious spike.

      Returns void

    • Seeds this target from transform's position and rotation — the usual way to start a blend from where the node already is — and returns this.

      The history is seeded too, because seeding is not a simulation step: a target that adopted a node's pose without also adopting it as its history would finite-difference the whole jump from the origin into a velocity on the first step. Pivot is ignored (it is not a pose). Scale is copied — the physical side of the blend is still identity (see the class documentation).

      Copies values; the transform is not retained and nothing is aliased. Allocates nothing, and bumps PoseTarget.version three times — once per hooked member.

      Parameters

      Returns this

    • Announces a mutation the change hooks could not see — a direct field write such as target.position.x = 5 (§7b makes the same allowance for the math types). Bumps PoseTarget.version by one.

      Never wrong to call, only wasteful: after a method-based mutation it simply counts as a second mutation.

      Returns void