VrControllerAvatarNode class

Lightweight visual twin of a paired smartphone controller.

Position is deliberately head-relative in Lite mode; orientation comes from the remote IMU. It communicates control layout and state without claiming centimeter-accurate physical tracking.

Inheritance

Constructors

VrControllerAvatarNode({required VrControllerProfile profile, required CameraRig cameraRig, double visualScale = 2.0, Vector3? anchorOffset, VrControllerArmModel? armModel})

Properties

anchorOffset → Vector3
final
armModel → VrControllerArmModel?
final
body ↔ MeshNode
latefinal
buttonsBitset → int
no setter
cameraRig → CameraRig
final
childCount → int
no setterinherited
children → List<Node>
no setterinherited
controlIds → Iterable<String>
no setter
hashCode → int
The hash code for this object.
no setterinherited
isRenderable → bool
Whether this node contributes pixels during a render pass.
no setterinherited
isTransparent → bool
Whether this node requires back-to-front alpha ordering.
no setterinherited
localAabb → Aabb
Override to provide local-space bounding box.
no setterinherited
localMatrix → Matrix4
Local transform matrix.
no setterinherited
name ↔ String
getter/setter pairinherited
ownWorldAabb → Aabb
Computes the AABB of this node's own geometry in world space (without descendants). Used for self-hits in raycasting and physics.
no setterinherited
parent → Node?
no setterinherited
pointable ↔ Pointable?
getter/setter pairinherited
profile → VrControllerProfile
final
rangeConfidence ↔ double?
getter/setter pair
rangeMeters ↔ double?
getter/setter pair
rangeSource ↔ VrRangeSource?
getter/setter pair
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
screen ↔ MeshNode
latefinal
transform → Transform3D
finalinherited
visible ↔ bool
getter/setter pairinherited
visualScale → double
final
worldAabb → Aabb
Computes the AABB of this node AND all its descendants in world space. Group nodes have no geometry, so their own box would be a phantom ±0.5m cube at their position — using it for culling wrongly discarded entire subtrees. The union is cached and invalidated on any transform or hierarchy change in the subtree.
no setterinherited
worldMatrix → Matrix4
World transform matrix (accumulated from root).
no setterinherited
worldPosition → Vector3
World position extracted from world matrix.
no setterinherited

Methods

addChild(Node child) → void
inherited
collectVisible() → List<Node>
Collects all visible nodes in the tree.
inherited
controlNode(String id) → Node?
findChild(String name) → Node?
Finds a child by name recursively.
inherited
isControlActive(String id) → bool
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onRender(Canvas canvas, Matrix4 viewProjection) → void
Override for custom rendering.
inherited
onTransformChanged() → void
Called when any transform property changes.
inherited
onUpdate(double dt) → void
Override for custom per-frame logic.
override
removeChild(Node child) → void
inherited
removeFromParent() → void
inherited
render(Canvas canvas, Matrix4 viewProjection) → void
Renders this node and children to the canvas.
inherited
toString() → String
A string representation of this object.
inherited
traverse(void visitor(Node child)) → void
Traverses the tree depth-first, calling visitor for each node.
inherited
update(double dt) → void
Called once per frame before rendering.
inherited
updateButtons(int bitset) → void
Bit N maps to control N in VrControllerProfile.controls.
updateOrientation(Quaternion orientation) → void
Applies the calibrated remote rotation without replacing quaternion storage.
updateRange({double? meters, VrRangeSource? source, double? confidence}) → void

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Constants

activeControlColor → const Color
idleControlColor → const Color