Taos API Reference
    Preparing search index...

    Class BoneAttachment

    Pins its GameObject to a skeleton joint — the engine's equivalent of Godot's BoneAttachment3D. Each frame it copies the bone's model-space transform (plus an optional local offset) onto the owning GameObject, so a weapon, a muzzle marker, a laser origin, or an effect emitter parented under the model root tracks that bone as it animates.

    Parent the attachment's GameObject under the same root the skinned model is drawn at: the component writes the bone's model-space transform as the GameObject's local transform, so the scene graph lifts it to world space. Read GameObject.worldPosition after the frame's updateRender to get the bone's world position (e.g. where to spawn a bullet).

    It reads in updateRender, which the scene runs after every component's update, so the driving Animator/AnimatedModel has already refreshed its JointMatrixSource.globalJointMatrices this frame.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    id: string = ...

    Stable identity for this component, unique within a session. Auto-generated for runtime-created components; the editor overwrites it with a persistent id when projecting a saved document so references survive save / load / undo.

    enabled: boolean = true

    Whether this component participates in simulation and rendering. When false, the GameObject skips its update/updateRender and the scene's render collectors (mesh renderers, camera, lights, …) ignore it — the component stays attached and keeps its state, like Unity's Behaviour.enabled / Renderer.enabled. Defaults to true.

    gameObject: GameObject

    The owning GameObject; assigned by addComponent before onAttach runs.

    _sceneAttached: boolean = false

    True between onAttach and onDetach — i.e. while this component sits on a GameObject that is part of a live Scene. Managed by GameObject. Internal — do not set directly.

    The animator whose bones this attachment follows.

    joint: number

    Joint index within the source skeleton.

    offsetPosition: Vec3

    Local position offset in bone space.

    offsetRotation: Quaternion

    Local rotation offset, applied after the bone's rotation.

    inheritScale: boolean

    Whether to copy the bone's scale onto the GameObject.

    Accessors

    • get time(): Time

      The simulation clock of the scene this component belongs to. Read inside update (or any time after the GameObject is added to a scene) for absolute time, frame count, FPS, and timeScale-aware delta — e.g. this.time.elapsed, this.time.delta, this.time.frameCount.

      this.time.delta equals the dt argument passed to update, so components can ignore that argument entirely and pull everything from here.

      Returns Time

      if the owning GameObject is not currently part of a scene.

    Methods

    • Connect to a Signal with automatic disconnect when this component is removed from its GameObject — the safe default for cross-object listening, so a destroyed component never leaks into (or gets called by) a signal it once observed. Typically called from onAttach:

      onAttach(): void {
      const health = this.gameObject.getComponent(Health)!;
      this.listen(health.died, () => this.playDeathEffect());
      }

      Type Parameters

      • A extends unknown[]

      Parameters

      Returns () => void

      The unsubscribe function, for listeners that also want to disconnect early; calling it is optional and idempotent.

    • Called when the component joins a live scene — from addComponent when the GameObject is already in a scene, otherwise when the GameObject is added to one. this.gameObject.scene (and scene.engine) is always set here. Override to acquire references to siblings/children or initialize resources.

      Returns void

    • Called every frame by the GameObject's update traversal.

      Parameters

      • _dt: number

        Frame delta time in seconds.

      Returns void

    • Called when this component's GameObject begins touching another body, with the GameObject it collided with. Dispatched by the physics system after each world step (only while playing), so handlers may freely mutate the scene. Requires a physics body (RigidBody / CharacterBody) on the object.

      Parameters

      • _other: GameObject

        The other GameObject involved in the contact.

      Returns void