@novorender/web_app / ControllerInput
Class: ControllerInput
The input source of camera controllers.
Remarks
This class abstract away input gestures, such as mouse, keyboard and touch event into a unified model.
It does this by defining a set of axes that represents an imagined gamepad/joystick input device for each class of input gestures.
The assumption is that each of these axes may be bound to a pair of keyboard keys, e.g. A
and D
, or some input position coordinate, e.g. the mouse x
position for left/right motion.
All of these axes are updated independently, i.e. it is possible to move a camera with both keyboard and mouse simultaneously.
It is up to each camera controller to scale and apply each of these axes into an actual motion of the camera.
Accessors
hasShift
get hasShift(): boolean
Whether the shift key is currently pressed or not.
Returns
boolean
Defined in
@novorender/web_app/controller/input.ts:83
height
get height(): number
Return the client height of the input domElement.
Returns
number
Defined in
@novorender/web_app/controller/input.ts:68
multiplier
get multiplier(): number
Current multiplier applied to motion via the Control/Alt keys.
Returns
number
Defined in
@novorender/web_app/controller/input.ts:73
width
get width(): number
Return the client width of the input domElement.
Returns
number
Defined in
@novorender/web_app/controller/input.ts:63
zoomPos
get zoomPos(): number[]
The pixel position centering zoom gestures.
Remarks
This is typically the current cursor position while using the mouse scroll wheel, or the center position between touch points in a pinch gesture.
Returns
number
[]
Defined in
@novorender/web_app/controller/input.ts:94
Constructors
new ControllerInput()
new ControllerInput(domElement?): ControllerInput
Parameters
Parameter | Type | Description |
---|---|---|
domElement ? | HTMLElement | The HTMLElement to subscribe to input events from. |
Returns
Defined in
@novorender/web_app/controller/input.ts:50
Methods
animate()
animate(elapsedTime): void
Apply time-related state updates.
Parameters
Parameter | Type | Description |
---|---|---|
elapsedTime | number | The amount of milliseconds passed since the last call to this function. |
Returns
void
Defined in
@novorender/web_app/controller/input.ts:389
axesEmpty()
axesEmpty(): boolean
Determine if axes are all at their default/neutral state.
Returns
boolean
Defined in
@novorender/web_app/controller/input.ts:435
connect()
protected connect(): void
Subscribe to input events from domElement.
Returns
void
Defined in
@novorender/web_app/controller/input.ts:103
disconnect()
protected disconnect(): void
Unsubscribe to input events from domElement.
Returns
void
Defined in
@novorender/web_app/controller/input.ts:125
dispose()
dispose(): void
Unsubscribe from input events.
Returns
void
Defined in
@novorender/web_app/controller/input.ts:58
isScrolling()
isScrolling(): boolean
Indicate whether the mouse scroll wheel has recently been moved.
Returns
boolean
Defined in
@novorender/web_app/controller/input.ts:157
resetAxes()
resetAxes(): void
Reset axes to their default/neutral state.
Returns
void
Defined in
@novorender/web_app/controller/input.ts:407
Properties
axes
readonly axes: ControllerAxes;
The current values of each input axis.
Defined in
@novorender/web_app/controller/input.ts:21
callbacks
callbacks: undefined | ContollerInputContext;
A set of optional callbacks for controllers that wants to handle certain input events themselves.
Defined in
@novorender/web_app/controller/input.ts:18
disableWheelOnShift
disableWheelOnShift: boolean = false;
Ignore wheel events when shift is pressed. Default is false
Defined in
@novorender/web_app/controller/input.ts:45
domElement
readonly domElement: HTMLElement;
The underlying HTMLElement providing input events.
Defined in
@novorender/web_app/controller/input.ts:15
mouseMoveSensitivity
mouseMoveSensitivity: number = 0;
Consider mouse started moving after mouse passed this distance. Default is 0
Defined in
@novorender/web_app/controller/input.ts:42
touchPoints
touchPoints: readonly TouchContactPoint[] = [];
The current list of individual touch contact points.
Defined in
@novorender/web_app/controller/input.ts:24
usePointerLock
usePointerLock: boolean = true;
Whether to use mouse pointer lock or not.