Skip to content

Documentation / scene / BaseCameraController

Class: BaseCameraController

Defined in: libs/scene/src/camera/base.ts:184

Base class for camera controllers.

Provides a common lifecycle and event-handling surface for concrete camera controllers (e.g., orbit, fly, FPS). Subclasses implement protected handler methods to react to mouse/keyboard input, and update camera transforms in update().

Responsibilities:

  • Holds a reference to a Camera and resets internal state when the camera changes.
  • Offers a lookAt(from, to, up) helper that delegates to the camera.
  • Exposes public event entry points (onMouseDown, onMouseUp, onMouseMove, onMouseWheel, onKeyDown, onKeyUp) that forward to protected handlers which subclasses can override.
  • Defines reset() and update() lifecycle methods for state initialization and per-frame updates.

Event handling contract:

  • Each public onXxx method returns a boolean that indicates whether the event was handled by the controller. Returning true allows upstream dispatchers to stop propagation if desired.

Subclassing guidelines:

  • Override the protected _onXxx handlers rather than the public onXxx methods.
  • Override reset() to reinitialize controller state when a new camera is attached.
  • Override update() to advance state each frame (e.g., apply accumulated deltas with damping).

Lifecycle:

  1. A camera is attached via internal _setCamera(camera), which calls reset().
  2. Input events are passed in through the public onXxx methods.
  3. Per-frame, update() is called to apply state changes to the camera.

Thread-safety/assumptions:

  • Designed for use on the main thread in a browser environment.
  • Pointer events are used for mouse input; keyboard events for key input.

Extended by

Constructors

Constructor

new BaseCameraController(): BaseCameraController

Defined in: libs/scene/src/camera/base.ts:195

Create a base camera controller.

The controller starts without an attached camera. Call the internal _setCamera to attach a camera (performed by the owning system), which triggers reset().

Returns

BaseCameraController

Accessors

enabled

Get Signature

get enabled(): boolean

Defined in: libs/scene/src/camera/base.ts:224

Check if the controller is enabled.

Returns

boolean

Set Signature

set enabled(value): void

Defined in: libs/scene/src/camera/base.ts:227

Parameters
value

boolean

Returns

void

Methods

_getCamera()

_getCamera(): Camera

Defined in: libs/scene/src/camera/base.ts:204

Get the attached camera.

Returns

Camera

The current camera or null if none is attached.


_setCamera()

_setCamera(camera): void

Defined in: libs/scene/src/camera/base.ts:215

Attach a camera to the controller.

If the camera changes, the controller will call reset() so subclasses can reinitialize state that depends on the camera.

Parameters

camera

Camera

The camera to attach.

Returns

void


lookAt()

lookAt(from, to, up): void

Defined in: libs/scene/src/camera/base.ts:237

Convenience method that delegates to camera.lookAt.

Parameters

from

Vector3

Camera position.

to

Vector3

Look-at target.

up

Vector3

Up direction.

Returns

void


reset()

reset(): void

Defined in: libs/scene/src/camera/base.ts:246

Reset the controller's internal state.

Called automatically when a camera is attached via _setCamera. Subclasses should override this to reset accumulators, velocities, targets, etc.

Returns

void


onMouseDown()

onMouseDown(evt): boolean

Defined in: libs/scene/src/camera/base.ts:253

Handle pointer down (mouse/touch/pen) events.

Parameters

evt

IControllerPointerDownEvent

The pointer event.

Returns

boolean

true if handled and should stop further processing; otherwise false.


onMouseUp()

onMouseUp(evt): boolean

Defined in: libs/scene/src/camera/base.ts:262

Handle pointer up events.

Parameters

evt

IControllerPointerUpEvent

The pointer event.

Returns

boolean

true if handled; otherwise false.


onMouseWheel()

onMouseWheel(evt): boolean

Defined in: libs/scene/src/camera/base.ts:273

Handle mouse wheel (scroll) events.

Typical usage: zoom/dolly control, FOV adjustments.

Parameters

evt

IControllerWheelEvent

The wheel event.

Returns

boolean

true if handled; otherwise false.


onMouseMove()

onMouseMove(evt): boolean

Defined in: libs/scene/src/camera/base.ts:284

Handle pointer move events.

Typical usage: orbit, pan, or look controls based on button/modifier state.

Parameters

evt

IControllerPointerMoveEvent

The pointer event.

Returns

boolean

true if handled; otherwise false.


onKeyDown()

onKeyDown(evt): boolean

Defined in: libs/scene/src/camera/base.ts:295

Handle key down events.

Typical usage: WASD navigation, modifiers for speed, toggling modes.

Parameters

evt

IControllerKeydownEvent

The keyboard event.

Returns

boolean

true if handled; otherwise false.


onKeyUp()

onKeyUp(evt): boolean

Defined in: libs/scene/src/camera/base.ts:304

Handle key up events.

Parameters

evt

IControllerKeyupEvent

The keyboard event.

Returns

boolean

true if handled; otherwise false.


update()

update(): void

Defined in: libs/scene/src/camera/base.ts:317

Per-frame update.

Subclasses should override this to:

  • Integrate velocities/accelerations and apply damping.
  • Smoothly interpolate camera transforms.
  • Clamp angles/distances/FOV, etc.

Called once per frame by the owning system.

Returns

void


_onMouseDown()

protected _onMouseDown(_evt): boolean

Defined in: libs/scene/src/camera/base.ts:327

Mouse down event handler

Parameters

_evt

IControllerPointerDownEvent

Returns

boolean

Boolean value indices whether this event was handled


_onMouseUp()

protected _onMouseUp(_evt): boolean

Defined in: libs/scene/src/camera/base.ts:336

Pointer up handler for subclasses to override.

Parameters

_evt

IControllerPointerUpEvent

Pointer event.

Returns

boolean

true if handled; otherwise false.


_onMouseWheel()

protected _onMouseWheel(_evt): boolean

Defined in: libs/scene/src/camera/base.ts:345

Mouse wheel handler for subclasses to override.

Parameters

_evt

IControllerWheelEvent

Wheel event.

Returns

boolean

true if handled; otherwise false.


_onMouseMove()

protected _onMouseMove(_evt): boolean

Defined in: libs/scene/src/camera/base.ts:354

Pointer move handler for subclasses to override.

Parameters

_evt

IControllerPointerMoveEvent

Pointer event.

Returns

boolean

true if handled; otherwise false.


_onKeyDown()

protected _onKeyDown(_evt): boolean

Defined in: libs/scene/src/camera/base.ts:363

Key down handler for subclasses to override.

Parameters

_evt

IControllerKeydownEvent

Keyboard event.

Returns

boolean

true if handled; otherwise false.


_onKeyUp()

protected _onKeyUp(_evt): boolean

Defined in: libs/scene/src/camera/base.ts:372

Key up handler for subclasses to override.

Parameters

_evt

IControllerKeyupEvent

Keyboard event.

Returns

boolean

true if handled; otherwise false.


_onUpdate()

protected _onUpdate(): void

Defined in: libs/scene/src/camera/base.ts:378

Per-frame update handler for subclasses to override.

Returns

void

Released under the MIT License.