ScreenFollow
Defined in: renderer/src/ScreenFollow.ts:80
Each frame, projects a world source through a camera and writes the
resulting screen coord to this entity’s Transform.worldPosition.
The canonical “billboard” primitive: pair with a UIPanel (or UIRoot)
on a screen-space layer using positioning: "transform" to produce UI
that tracks a target entity but stays axis-aligned and constant-size
regardless of camera zoom or rotation — nameplates, health bars,
damage numbers, interaction prompts.
class Nameplate extends Entity { constructor(private readonly target: Entity, private readonly camera: CameraEntity) { super(); } setup() { this.add(new Transform()); this.add(new ScreenFollow({ target: this.target, camera: this.camera, offset: new Vec2(0, -40), // 40 screen px above the target })); const panel = this.add(new UIPanel({ positioning: "transform", // reads Transform.worldPosition anchor: Anchor.BottomCenter, // pivot on the panel })); panel.text("Grunt-42", { fontSize: 11 }); }}Extends
Section titled “Extends”Component
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new ScreenFollow(
opts):ScreenFollow
Defined in: renderer/src/ScreenFollow.ts:86
Parameters
Section titled “Parameters”Returns
Section titled “Returns”ScreenFollow
Overrides
Section titled “Overrides”Component.constructor
Properties
Section titled “Properties”enabled
Section titled “enabled”enabled:
boolean
Defined in: core/dist/index.d.ts:647
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:645
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:660
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
Get Signature
Section titled “Get Signature”get scene():
Scene
Defined in: core/dist/index.d.ts:655
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:697
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:691
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:711
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:707
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
listen()
Section titled “listen()”
protectedlisten<T>(entity,token,handler):void
Defined in: core/dist/index.d.ts:687
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:689
Subscribe to scene-level bubbled events, auto-unsubscribe on removal.
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:699
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:703
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:701
Called when the component is removed from an entity.
Returns
Section titled “Returns”void
Inherited from
Section titled “Inherited from”Component.onRemove
serialize()?
Section titled “serialize()?”
optionalserialize():unknown
Defined in: core/dist/index.d.ts:709
Return a JSON-serializable snapshot of this component’s state. Used by the save system.
Returns
Section titled “Returns”unknown
Inherited from
Section titled “Inherited from”Component.serialize
service()
Section titled “service()”
protectedservice<T>(key):T
Defined in: core/dist/index.d.ts:677
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:685
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
update()
Section titled “update()”update():
void
Defined in: renderer/src/ScreenFollow.ts:96
Called every frame by the built-in ComponentUpdateSystem.
Returns
Section titled “Returns”void
Overrides
Section titled “Overrides”Component.update
protecteduse<T>(key):T
Defined in: core/dist/index.d.ts:668
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