LayeredAnimationController
Defined in: renderer/src/LayeredAnimationController.ts:44
Fan-out wrapper around N sibling AnimationController instances.
Use this when a single logical character is composed of multiple sprite
layers (head + body + outfit) — each layer has its own
AnimatedSpriteComponent + AnimationController, but they all need to
play("walk") or playOneShot("attack") in unison.
play(name)is forwarded to every child controller.playOneShot(name, opts)computes a single shared duration from the first child (oropts.duration) and passes it to every child asoptions.duration— so all layers unlock on the same frame regardless of per-layer frame counts.- The wrapper owns the master lock timer and fires the user’s
onCompleteexactly once.
class Hero extends Entity { setup() { this.add(new Transform()); const body = this.spawnChild("body", HeroLayer, { sheet: "body.png" }); const head = this.spawnChild("head", HeroLayer, { sheet: "head.png" }); this.add(new LayeredAnimationController({ controllers: [body.get(AnimationController), head.get(AnimationController)], })); }}Extends
Section titled “Extends”Component
Type Parameters
Section titled “Type Parameters”T extends string = string
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new LayeredAnimationController<
T>(options):LayeredAnimationController<T>
Defined in: renderer/src/LayeredAnimationController.ts:54
Parameters
Section titled “Parameters”options
Section titled “options”LayeredAnimationControllerOptions<T>
Returns
Section titled “Returns”LayeredAnimationController<T>
Overrides
Section titled “Overrides”Component.constructor
Properties
Section titled “Properties”enabled
Section titled “enabled”enabled:
boolean
Defined in: core/dist/index.d.ts:1731
Whether this component is active. Disabled components are skipped by ComponentUpdateSystem.
Inherited from
Section titled “Inherited from”Component.enabled
entity
Section titled “entity”entity:
Entity
Defined in: core/dist/index.d.ts:1729
Back-reference to the owning entity. Set by the engine when the component is added to an entity. Do not set manually.
Inherited from
Section titled “Inherited from”Component.entity
Accessors
Section titled “Accessors”context
Section titled “context”Get Signature
Section titled “Get Signature”get context():
EngineContext
Defined in: core/dist/index.d.ts:1744
Access the EngineContext from the entity’s scene. Throws if the entity is not in a scene.
Returns
Section titled “Returns”EngineContext
Inherited from
Section titled “Inherited from”Component.context
controllers
Section titled “controllers”Get Signature
Section titled “Get Signature”get controllers(): readonly
AnimationController<T>[]
Defined in: renderer/src/LayeredAnimationController.ts:65
Sibling controllers being driven.
Returns
Section titled “Returns”readonly AnimationController<T>[]
current
Section titled “current”Get Signature
Section titled “Get Signature”get current():
""|T
Defined in: renderer/src/LayeredAnimationController.ts:70
Currently playing animation name, or "" if none.
Returns
Section titled “Returns”"" | T
locked
Section titled “locked”Get Signature
Section titled “Get Signature”get locked():
boolean
Defined in: renderer/src/LayeredAnimationController.ts:75
True if a one-shot animation is blocking.
Returns
Section titled “Returns”boolean
Get Signature
Section titled “Get Signature”get scene():
Scene
Defined in: core/dist/index.d.ts:1739
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.
Returns
Section titled “Returns”Scene
Inherited from
Section titled “Inherited from”Component.scene
Methods
Section titled “Methods”_runCleanups()
Section titled “_runCleanups()”_runCleanups():
void
Defined in: core/dist/index.d.ts:1785
Internal
Run and clear all registered cleanups. Called by Entity.remove() and Entity._performDestroy() before onRemove/onDestroy.
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component._runCleanups
addCleanup()
Section titled “addCleanup()”
protectedaddCleanup(fn):void
Defined in: core/dist/index.d.ts:1779
Register a cleanup function to run when this component is removed or destroyed.
Parameters
Section titled “Parameters”() => void
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.addCleanup
afterRestore()?
Section titled “afterRestore()?”
optionalafterRestore(data,resolve):void
Defined in: core/dist/index.d.ts:1799
Called after onAdd() during save/load restoration. Apply state that depends on onAdd() having run.
Parameters
Section titled “Parameters”unknown
resolve
Section titled “resolve”Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.afterRestore
fixedUpdate()?
Section titled “fixedUpdate()?”
optionalfixedUpdate(dt):void
Defined in: core/dist/index.d.ts:1795
Called every fixed timestep by the built-in ComponentUpdateSystem.
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.fixedUpdate
forcePlay()
Section titled “forcePlay()”forcePlay(
name):void
Defined in: renderer/src/LayeredAnimationController.ts:117
Clear the lock and force-switch every layer to the given animation.
Parameters
Section titled “Parameters”T
Returns
Section titled “Returns”void
listen()
Section titled “listen()”
protectedlisten<T>(entity,token,handler):void
Defined in: core/dist/index.d.ts:1771
Subscribe to events on any entity, auto-unsubscribe on removal.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”entity
Section titled “entity”Entity
EventToken<T>
handler
Section titled “handler”(data) => void
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.listen
listenScene()
Section titled “listenScene()”
protectedlistenScene<T>(token,handler):void
Defined in: core/dist/index.d.ts:1777
Subscribe to scene-level events, auto-unsubscribe on removal. Handlers
fire for bubbled entity events (entity = source) and scene.emit
events (entity = undefined).
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”EventToken<T>
handler
Section titled “handler”(data, entity?) => void
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.listenScene
onAdd()?
Section titled “onAdd()?”
optionalonAdd():void
Defined in: core/dist/index.d.ts:1787
Called when the component is added to an entity.
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.onAdd
onDestroy()?
Section titled “onDestroy()?”
optionalonDestroy():void
Defined in: core/dist/index.d.ts:1791
Called when the component is destroyed (entity destroyed or component removed).
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.onDestroy
onRemove()?
Section titled “onRemove()?”
optionalonRemove():void
Defined in: core/dist/index.d.ts:1789
Called when the component is removed from an entity.
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.onRemove
play()
Section titled “play()”play(
name):void
Defined in: renderer/src/LayeredAnimationController.ts:80
Play a named animation on every layer. No-op if already current or locked.
Parameters
Section titled “Parameters”T
Returns
Section titled “Returns”void
playOneShot()
Section titled “playOneShot()”playOneShot(
name,options?):void
Defined in: renderer/src/LayeredAnimationController.ts:97
Play a one-shot on every layer with a shared lock duration.
If options.duration is omitted, the duration is computed once from the
first controller via AnimationController.calcDuration and stored
on this wrapper as the single source of truth. Children are given an
Infinity per-controller duration so their own lock timers never expire
independently — clearing them happens through this wrapper’s
unlock when the master timer fires. This avoids a race where a
child’s update() could tick out a frame before the wrapper’s (e.g. if
components are ordered differently in the scheduler, or accumulated
float drift makes one timer cross the threshold a frame earlier).
Parameters
Section titled “Parameters”T
options?
Section titled “options?”duration?
Section titled “duration?”number
onComplete?
Section titled “onComplete?”() => void
Returns
Section titled “Returns”void
serialize()
Section titled “serialize()”serialize():
null
Defined in: renderer/src/LayeredAnimationController.ts:147
Return a JSON-serializable snapshot of this component’s state. Used by the save system.
Returns
Section titled “Returns”null
Overrides
Section titled “Overrides”Component.serialize
service()
Section titled “service()”
protectedservice<T>(key):T
Defined in: core/dist/index.d.ts:1761
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.
Type Parameters
Section titled “Type Parameters”T extends object
Parameters
Section titled “Parameters”ServiceKey<T>
Returns
Section titled “Returns”T
Inherited from
Section titled “Inherited from”Component.service
sibling()
Section titled “sibling()”
protectedsibling<C>(cls):C
Defined in: core/dist/index.d.ts:1769
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.
Type Parameters
Section titled “Type Parameters”C extends Component
Parameters
Section titled “Parameters”ComponentClass<C>
Returns
Section titled “Returns”C
Inherited from
Section titled “Inherited from”Component.sibling
unlock()
Section titled “unlock()”unlock():
void
Defined in: renderer/src/LayeredAnimationController.ts:124
Manually release the one-shot lock on this wrapper and every child.
Returns
Section titled “Returns”void
update()
Section titled “update()”update(
dt):void
Defined in: renderer/src/LayeredAnimationController.ts:133
Tick the shared one-shot lock timer.
Parameters
Section titled “Parameters”number
Returns
Section titled “Returns”void
Overrides
Section titled “Overrides”Component.update
protecteduse<T>(key):T
Defined in: core/dist/index.d.ts:1752
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.
Type Parameters
Section titled “Type Parameters”T
Parameters
Section titled “Parameters”ServiceKey<T>
Returns
Section titled “Returns”T
Inherited from
Section titled “Inherited from”Component.use