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.