Skip to content

UISurface

Defined in: ui/src/UISurface.ts:27

Mounts a UI tree on an entity: entity.add(new UISurface({...})). Owns the tree’s root UIPanel element (exposed as root) and provides builder methods (.text(), .button(), .panel()) for constructing it. Layout is driven by UILayoutSystem each frame.

  • Component

new UISurface(opts?): UISurface

Defined in: ui/src/UISurface.ts:43

UISurfaceOptions

UISurface

Component.constructor

readonly _anchor: Anchor | undefined

Defined in: ui/src/UISurface.ts:35

Internal


readonly _layer: string | undefined

Defined in: ui/src/UISurface.ts:37

Internal


readonly _offset: object

Defined in: ui/src/UISurface.ts:36

Internal

x: number

y: number


readonly _positioning: "anchor" | "transform"

Defined in: ui/src/UISurface.ts:38

Internal


entity: Entity

Defined in: core/dist/index.d.ts:2593

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

Component.entity


readonly root: UIPanel

Defined in: ui/src/UISurface.ts:34

Root element of the mounted UI tree — a UIPanel created with this component and destroyed by it in onDestroy. Same instance for the component’s whole lifetime; after onDestroy it is destroyed (its destroy() is idempotent) and must not be re-added elsewhere.


static optional restorePriority?: number

Defined in: core/dist/index.d.ts:2731

Snapshot restore order. On load, an entity’s components are re-added in ascending priority, so a component whose onAdd() reads a sibling can rely on lower-priority siblings being present and initialized. Undeclared = 100. Engine components reserve 0-99; game and addon components declare a value only when a sibling onAdd() dependency requires it. Equal priorities restore in save-time add order. Subclasses inherit their base class’s priority unless they declare their own.

Component.restorePriority

get container(): DisplayContainer

Defined in: ui/src/UISurface.ts:55

The PixiJS Container of the root panel.

DisplayContainer


get context(): EngineContext

Defined in: core/dist/index.d.ts:2627

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

EngineContext

Component.context


get effectiveEnabled(): boolean

Defined in: core/dist/index.d.ts:2616

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

Component.effectiveEnabled


get enabled(): boolean

Defined in: core/dist/index.d.ts:2608

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: core/dist/index.d.ts:2609

boolean

void

Component.enabled


get scene(): Scene

Defined in: core/dist/index.d.ts:2622

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

Component.scene


get visible(): boolean

Defined in: ui/src/UISurface.ts:119

Whether the mounted UI tree is visible. Reads back what you set, even while the entity is dormant and the tree is hidden.

boolean

set visible(v): void

Defined in: ui/src/UISurface.ts:123

boolean

void

_applyEnabled(effective): void

Defined in: core/dist/index.d.ts:2681

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

Component._applyEnabled


_refreshEnabled(): void

Defined in: core/dist/index.d.ts:2674

Internal

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

void

Component._refreshEnabled


_runCleanups(): void

Defined in: core/dist/index.d.ts:2668

Internal

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

void

Component._runCleanups


protected addCleanup(fn): void

Defined in: core/dist/index.d.ts:2662

Register a cleanup function to run when this component is removed or destroyed.

() => void

void

Component.addCleanup


addElement(child): void

Defined in: ui/src/UISurface.ts:98

Append an arbitrary UIElement (e.g. UIImage, UIProgressBar, UICheckbox) as the last child. Prefer the .text(), .button(), and .panel() builders for those element types — they’re shorter.

UIElement

void


optional afterRestore(data, resolve): void

Defined in: core/dist/index.d.ts:2735

Called after onAdd() during save/load restoration. Apply state that depends on onAdd() having run.

unknown

SnapshotResolver

void

Component.afterRestore


button(label, opts): UIButton

Defined in: ui/src/UISurface.ts:79

Add a button element.

string

Omit<UIButtonProps, "children">

UIButton


optional fixedUpdate(dt): void

Defined in: core/dist/index.d.ts:2720

Called every fixed timestep by the built-in ComponentUpdateSystem.

number

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

void

Component.fixedUpdate


insertElementBefore(child, before): void

Defined in: ui/src/UISurface.ts:111

Insert child immediately before before in the root panel’s child list. Falls back to append if before isn’t a current child.

UIElement

UIElement

void


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

Defined in: core/dist/index.d.ts:2654

Subscribe to events on any entity, auto-unsubscribe on removal.

T

Entity

EventToken<T>

(data) => void

void

Component.listen


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

Defined in: core/dist/index.d.ts:2660

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

Component.listenScene


onAdd(): void

Defined in: ui/src/UISurface.ts:136

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

Component.onAdd


onDestroy(): void

Defined in: ui/src/UISurface.ts:171

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

void

Component.onDestroy


onDisable(): void

Defined in: ui/src/UISurface.ts:132

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

Component.onDisable


onEnable(): void

Defined in: ui/src/UISurface.ts:128

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

Component.onEnable


optional onRemove(): void

Defined in: core/dist/index.d.ts:2708

Called when the component is removed from an entity.

void

Component.onRemove


panel(opts?): UIPanel

Defined in: ui/src/UISurface.ts:84

Add a nested child panel.

UIPanelProps

UIPanel


removeElement(child): void

Defined in: ui/src/UISurface.ts:103

Remove a previously added element. No-op if the element isn’t a child.

UIElement

void


scrollView(opts?): UIScrollView

Defined in: ui/src/UISurface.ts:89

Add a nested scrollable viewport.

UIScrollViewProps

UIScrollView


serialize(): UISurfaceOptions

Defined in: ui/src/UISurface.ts:176

Return a JSON-serializable snapshot of this component’s state. Used by the save system.

UISurfaceOptions

Component.serialize


protected service<T>(key): T

Defined in: core/dist/index.d.ts:2644

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

Component.service


setPointerHandlers(handlers): void

Defined in: ui/src/UISurface.ts:69

Set the root panel’s pointer / hover handlers (onHover, onPointerOver, onPointerOut) after construction — forwarded to root. (update() can’t double as the prop setter here: on a Component it’s the per-frame lifecycle hook the engine calls.) Like the element update, a present key replaces that handler and an absent key leaves it intact, so a partial setPointerHandlers({ onHover }) won’t drop the others. Handy for wiring attachTooltip: surface.setPointerHandlers({ onHover: tip.setActive }).

PointerEventProps

void


protected sibling<C>(cls): C

Defined in: core/dist/index.d.ts:2652

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.

C extends Component

ComponentClass<C>

C

Component.sibling


text(content, style?): UIText

Defined in: ui/src/UISurface.ts:74

Add a text element.

string

Partial<TextStyleOptions>

UIText


optional update(dt): void

Defined in: core/dist/index.d.ts:2715

Called every frame by the built-in ComponentUpdateSystem.

number

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

void

Component.update


protected use<T>(key): T

Defined in: core/dist/index.d.ts:2635

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

Component.use


static fromSnapshot(data): UISurface

Defined in: ui/src/UISurface.ts:180

UISurfaceOptions

UISurface