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.
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.
The owning GameObject; assigned by addComponent before onAttach runs.
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.
Box half-extents (used when shape is 'box').
Radius (sphere / capsule).
Capsule cylinder half-height (excludes the caps).
Override mass (kg). 0 = derive from shape volume × density (a 1 m cube ≈ 1000 kg).
Explicit triangle geometry for shape:'mesh'; if unset, a sibling
component's colliderGeometry is used (e.g. an editor GltfModel).
shape:'mesh' only: build the triangle mesh double-sided (collides on both
faces, like Godot's trimesh). Recommended for ported level geometry, which
otherwise has fall-through gaps wherever a triangle is wound away from the
player (Jolt's MeshShape is one-sided). See BodyOptions.doubleSided.
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.
True once the Jolt body exists. For a shape:'mesh' collider this also means
the (async) sibling geometry has loaded AND its shape has been built — so game
code can gate on it to avoid releasing characters before the floor physically
exists (a streamed level's collider can lag its visual mesh by seconds).
The body's actual mass (kg) as resolved by Jolt — the explicit
mass if set, else the shape-derived value. 0 until the body
is live. Useful for scaling buoyant/thruster forces to the real mass.
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());
}
The signal to connect to.
Listener, forwarded to Signal.connect.
Optionalopts: SignalConnectOptionsSee SignalConnectOptions.
The unsubscribe function, for listeners that also want to disconnect early; calling it is optional and idempotent.
Disconnect every signal connection made through listen. Called by GameObject.removeComponent after onDetach (so it runs even when a subclass overrides onDetach without calling super). Internal — do not call directly.
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.
The other GameObject involved in the contact.
Called every frame by the GameObject's render traversal, after update and any input/controller mutations to the transform. Override to refresh per-frame state that render passes consume (e.g. Camera recomputes its cached view/projection matrices here).
Active render context (provides canvas width/height etc.).
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.
Called every frame by the GameObject's update traversal.
Called when the component leaves the scene — removed via GameObject.removeComponent, or its GameObject removed from the scene. Override to release resources or unsubscribe from events.
Wake the body and apply an instantaneous impulse (kg·m/s) at its center of mass.
Accumulate a continuous force (newtons) applied at a WORLD point — the off-center point produces torque, so a set of these drives buoyant lift + roll/pitch. Jolt clears accumulated forces each step, so this must be called every frame (typically from a physics pre-step ticker; see Buoyancy). No-op if the body isn't live.
Accumulate a continuous torque (N·m, world axes) — e.g. a rudder's yaw. Cleared each step like applyForceAtPoint, so call every frame.
A rigid body. shape + its dimensions pick the collider; motion selects static / dynamic / kinematic. A dynamic body is simulated and writes its pose back onto the GameObject each frame.