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
Cameraand 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()andupdate()lifecycle methods for state initialization and per-frame updates.
Event handling contract:
- Each public
onXxxmethod returns a boolean that indicates whether the event was handled by the controller. Returningtrueallows upstream dispatchers to stop propagation if desired.
Subclassing guidelines:
- Override the protected
_onXxxhandlers rather than the publiconXxxmethods. - 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:
- A camera is attached via internal
_setCamera(camera), which callsreset(). - Input events are passed in through the public
onXxxmethods. - 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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