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.
The node this component is attached to, or null. Written by the
ComponentRegistry alone (§6a); never assign it.
ReadonlypositionTarget 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.
ReadonlypreviousTarget 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.
ReadonlypreviousTarget rotation at the previous PoseTarget.capturePrevious.
ReadonlypreviousTarget scale at the previous PoseTarget.capturePrevious.
ReadonlyrotationTarget rotation as a unit quaternion (§7a: radians). Identity by default.
ReadonlyscaleTarget 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).
Static ReadonlytypeComponent key (plan D2) and §79 serialization name.
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.
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.
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.
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.
The pose §19's animation stage produces for a node, as a §6a component.
One per node (§6a). Holds authored state only — no per-frame work, no solver reference, no knowledge of who reads it.