Skip to content

CameraComponent

Defined in: renderer/src/CameraComponent.ts:87

Core camera state component. Added by CameraEntity; holds position, zoom, rotation, and layer bindings. Provides convenience methods that delegate to sibling behavior components (CameraFollow, CameraShake, etc.).

Added by CameraEntity; access via direct reference from spawn() or by querying entities with this component.

  • Component

new CameraComponent(options?): CameraComponent

Defined in: renderer/src/CameraComponent.ts:96

CameraComponentOptions

CameraComponent

Component.constructor

readonly bindings: CameraBinding[] | null

Defined in: renderer/src/CameraComponent.ts:92


readonly cameraName: string | undefined

Defined in: renderer/src/CameraComponent.ts:94


enabled: boolean

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

Whether this component is active. Disabled components are skipped by ComponentUpdateSystem.

Component.enabled


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.

Component.entity


position: Vec2

Defined in: renderer/src/CameraComponent.ts:88


readonly priority: number

Defined in: renderer/src/CameraComponent.ts:93


rotation: number

Defined in: renderer/src/CameraComponent.ts:90


zoom: number

Defined in: renderer/src/CameraComponent.ts:89

get bounds(): CameraBounds | undefined

Defined in: renderer/src/CameraComponent.ts:145

Get or set camera bounds.

CameraBounds | undefined

set bounds(value): void

Defined in: renderer/src/CameraComponent.ts:149

CameraBounds | undefined

void


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.

EngineContext

Component.context


get effectivePosition(): Vec2

Defined in: renderer/src/CameraComponent.ts:115

Effective position including shake offset.

Vec2


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.

Scene

Component.scene


get viewportHeight(): number

Defined in: renderer/src/CameraComponent.ts:110

number


get viewportWidth(): number

Defined in: renderer/src/CameraComponent.ts:106

number

_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.

void

Component._runCleanups


protected addCleanup(fn): void

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

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

() => void

void

Component.addCleanup


optional afterRestore(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.

unknown

SnapshotResolver

void

Component.afterRestore


optional fixedUpdate(dt): void

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

Called every fixed timestep by the built-in ComponentUpdateSystem.

number

void

Component.fixedUpdate


follow(target, options?): void

Defined in: renderer/src/CameraComponent.ts:121

Start following a target.

Vec2Like

CameraFollowOptions

void


getResolvedBindings(tree): readonly CameraBinding[]

Defined in: renderer/src/CameraComponent.ts:187

Resolve bindings for this camera against the given render tree.

If no explicit bindings were passed, auto-binds every world-space layer (LayerDef.space === "world", the default). Screen-space layers — declared with space: "screen" or auto-provisioned by plugins via ensureLayer(def, { space: "screen" }), e.g. the UI layer — are skipped so they stay fixed to the viewport. Cameras can still explicitly bind a screen-space layer by naming it in bindings.

SceneRenderTree

readonly CameraBinding[]


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

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

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:1777

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


optional onAdd(): void

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

Called when the component is added to an entity.

void

Component.onAdd


optional onDestroy(): void

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

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

void

Component.onDestroy


optional onRemove(): void

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

Called when the component is removed from an entity.

void

Component.onRemove


screenToWorld(screenX, screenY): Vec2

Defined in: renderer/src/CameraComponent.ts:154

Convert screen coordinates to world coordinates.

number

number

Vec2


serialize(): CameraComponentData

Defined in: renderer/src/CameraComponent.ts:195

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

CameraComponentData

Component.serialize


protected service<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.

T extends object

ServiceKey<T>

T

Component.service


shake(intensity, duration, options?): void

Defined in: renderer/src/CameraComponent.ts:131

Start a screen shake effect.

number

number

CameraShakeOptions

void


protected sibling<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.

C extends Component

ComponentClass<C>

C

Component.sibling


unfollow(): void

Defined in: renderer/src/CameraComponent.ts:126

Stop following any target.

void


optional update(dt): void

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

Called every frame by the built-in ComponentUpdateSystem.

number

void

Component.update


protected use<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.

T

ServiceKey<T>

T

Component.use


worldToScreen(worldX, worldY): Vec2

Defined in: renderer/src/CameraComponent.ts:166

Convert world coordinates to screen coordinates.

number

number

Vec2


zoomTo(target, duration, easing?): void

Defined in: renderer/src/CameraComponent.ts:140

Animate zoom to a target value over a duration.

number

number

EasingFunction

void


static fromSnapshot(data): CameraComponent

Defined in: renderer/src/CameraComponent.ts:209

CameraComponentData

CameraComponent