Skip to content

Component

Defined in: Component.ts:21

Base class for all components.

Components are the primary authoring model. Game developers write behavior in components using optional update(dt) and fixedUpdate(dt) methods. The built-in ComponentUpdateSystem calls these methods automatically.

new Component(): Component

Component

entity: Entity

Defined in: Component.ts:26

Back-reference to the owning entity. Set by the engine when the component is added to an entity. Do not set manually.


static optional inspectExclude?: readonly string[]

Defined in: Component.ts:462

Own fields and getters the Inspector leaves out of this component’s reflected state. Use it for bulk data that is not worth a diagnostic copy — a parsed tilemap, a large lookup table. Lists merge down the class chain, so a subclass adds to its base class’s exclusions.

class TilemapComponent extends VisualComponent {
static inspectExclude = ["data"];
}

static optional updatePriority?: number

Defined in: Component.ts:448

Class-level default for updatePriority: every instance runs at this priority unless its own updatePriority is written. Undeclared = 0. Subclasses inherit their base class’s value unless they declare their own. Declare it on a component whose behavior depends on running after (or before) a sibling, so the entity that adds it does not have to control the add order.

class BoundsClamp extends Component {
static updatePriority = 10; // after the follow that moves the camera
}

get context(): EngineContext

Defined in: Component.ts:114

Access the EngineContext from the entity’s scene. Throws if the entity is not in a scene.

EngineContext


get effectiveEnabled(): boolean

Defined in: Component.ts:61

Whether the component is actually running: enabled, on an active entity, and past onAdd. This is the state onEnable and onDisable track — read it when a method has to behave one way live and another way dormant.

boolean


get enabled(): boolean

Defined in: Component.ts:45

Whether this component runs. Disabled components are skipped by ComponentUpdateSystem.

Writing this fires onEnable / onDisable when the effective state changes — enabled && entity.isActive. A component disabled here stays disabled through a setActive(false) / setActive(true) cycle on its entity.

boolean

set enabled(value): void

Defined in: Component.ts:49

boolean

void


get scene(): Scene

Defined in: Component.ts:100

Access the entity’s scene. Throws if the entity is not in a scene. Prefer this over threading through this.entity.scene in component code.

Scene


get updatePriority(): number

Defined in: Component.ts:82

Where this component runs among its siblings. ComponentUpdateSystem calls update / fixedUpdate on an entity’s components in ascending priority; equal priorities run in add order. Undeclared = 0, so a negative value runs before siblings that keep the default and a positive value runs after them. Writable at any time, before or after add(). Defaults to the class’s static updatePriority.

class Player extends Entity {
setup() {
this.add(new Mover());
this.add(new Brain()).updatePriority = -1; // decides before Mover moves
}
}

number

set updatePriority(value): void

Defined in: Component.ts:90

number

void

_applyEnabled(effective): void

Defined in: Component.ts:376

Internal

Force an effective-enabled transition, firing the hook on a flip. Used by Entity for teardown, where enabled and the entity’s activeness both still read true.

boolean

void


_isTornDown(): boolean

Defined in: Component.ts:347

Internal

Internal: true once this component has been removed or its entity destroyed. Components are terminal — Entity.add uses this to reject re-attaching an instance whose cleanups and onDestroy already ran.

boolean


_markTornDown(): void

Defined in: Component.ts:356

Internal

Internal: mark this component torn down. Called by Entity.remove() and Entity._performDestroy() after onDestroy runs.

void


_refreshEnabled(): void

Defined in: Component.ts:365

Internal

Recompute effective enabled-ness from enabled and the entity’s activeness, firing the hook on a flip.

void


_runCleanups(onError?): void

Defined in: Component.ts:319

Internal

Run and clear all registered cleanups. Called by Entity.remove() and Entity._performDestroy() before onDestroy.

(error) => void

void


protected addCleanup(fn): void

Defined in: Component.ts:277

Register a cleanup function to run when this component is removed or destroyed, before onDestroy. Use it for what listen, listenScene and listenBus do not cover, such as an unsubscribe from a custom emitter.

() => void

void


destroy(): void

Defined in: Component.ts:335

End this component’s life on its own — the same as entity.remove(SomeClass), without having to name its own class from inside itself, which breaks under subclassing.

void


optional fixedUpdate(dt): void

Defined in: Component.ts:432

Called every fixed timestep by the built-in ComponentUpdateSystem.

number

Fixed timestep in seconds, scaled by scene and entity timeScale.

void


protected listen<T>(source, token, handler): void

Defined in: Component.ts:237

Subscribe to events from an entity or a state machine, auto-unsubscribe on removal.

this.listen(this.entity, Hurt, ({ dir }) => this.knockback(dir));
this.listen(brain.mode, brain.mode.events.entered, ({ state }) =>
this.anim.play(state),
);

T

EventSource

EventToken<T>

(data) => void

void


protected listenBus<K>(event, handler): void

Defined in: Component.ts:263

Subscribe to an engine EventBus event, auto-unsubscribe on removal. Throws when the entity is not in a scene, like listenScene.

K extends keyof EngineEvents

K

(data) => void

void


protected listenScene<T>(token, handler): void

Defined in: Component.ts:251

Subscribe to scene-level events, auto-unsubscribe on removal. Handlers fire for bubbled entity events (entity = source) and scene.emit events (entity = undefined).

T

EventToken<T>

(data, entity?) => void

void


optional onAdd(): void

Defined in: Component.ts:398

Called when the component is added to an entity. Validate dependencies here — a service, a sibling component, a render layer — and throw when one is missing. The throw is attributed to this component, recorded in Inspector.getErrors().callbackErrors, and rethrown, so it reaches the caller of entity.add() unchanged.

void


optional onDestroy(): void

Defined in: Component.ts:420

Called when the component is destroyed (entity destroyed or component removed).

void


optional onDisable(): void

Defined in: Component.ts:417

Called when the component stops being effectively enabled — enabled went false, the entity (or an ancestor) was deactivated, or the component is being removed or destroyed. Put live resources to sleep here; the component is reused afterwards, so do not free anything onEnable cannot rebuild.

void


optional onEnable(): void

Defined in: Component.ts:408

Called when the component becomes effectively enabled — enabled is true and the entity is active. Fires right after onAdd() for a component added to an active entity, and again on every later flip. Bring live resources back online here (unpause a sound, show a display object, re-enable a physics body). Game-state reset does not belong here: the hook sees whatever state the component held while dormant.

void


protected service<T>(key): T

Defined in: Component.ts:177

Lazy proxy-based service resolution. Can be used at field-declaration time:

readonly input = this.service(InputManagerKey);

The actual resolution is deferred until first property access.

T extends object

ServiceKey<T>

T


protected sibling<C>(cls): C

Defined in: Component.ts:205

Lazy proxy-based sibling component resolution. Can be used at field-declaration time:

readonly anim = this.sibling(AnimatedSpriteComponent);

The actual resolution is deferred until first property access. The reference passes instanceof cls before it resolves, so an engine API that checks the type of what it is handed (camera.follow(this.transform)) accepts it.

C extends Component

ComponentClass<C>

C


protected stateMachine<S>(states, initial, options?): StateMachine<S>

Defined in: Component.ts:287

Create a state machine whose hooks and event handlers are attributed to this component when they throw. The machine can be declared as a field because service lookup waits until a hook runs.

S extends string

StateDefinitions<S>

NoInfer<S>

StateMachineOptions

StateMachine<S>


optional update(dt): void

Defined in: Component.ts:426

Called every frame by the built-in ComponentUpdateSystem.

number

Frame delta in seconds, scaled by scene and entity timeScale.

void


protected use<T>(key): T

Defined in: Component.ts:125

Resolve a service by key, cached after first lookup. Scene-scoped values (registered via scene._registerScoped) take precedence over engine scope. A key declared with scope: "scene" that falls back to engine scope emits a one-shot dev warning — almost always signals a missed beforeEnter hook.

T

ServiceKey<T>

T

Coding agents: fetch https://yage.dev/llms.txt first and prefer the Markdown references it links over these HTML pages. This page's Markdown counterpart is /llms/packages/core.md.