# OrbitController

Class · extends [`InputController`](https://api.playcanvas.com/engine/classes/InputController.md) · category: Input

Source: https://github.com/playcanvas/engine/blob/970d89f6d3bc6667f4e1f88153abd6e7e82ed52c/src/extras/input/controllers/orbit-controller.js#L24

The orbit controller. The pose orbits a focus point at a distance: `rotate` deltas turn the
view around the focus within [yawRange](https://api.playcanvas.com/engine/classes/OrbitController.md#yawrange) and [pitchRange](https://api.playcanvas.com/engine/classes/OrbitController.md#pitchrange), the first two `move`
components pan the focus point, and the third scales the distance within [zoomRange](https://api.playcanvas.com/engine/classes/OrbitController.md#zoomrange).
Motion is smoothed with [rotateDamping](https://api.playcanvas.com/engine/classes/OrbitController.md#rotatedamping), [moveDamping](https://api.playcanvas.com/engine/classes/OrbitController.md#movedamping) and [zoomDamping](https://api.playcanvas.com/engine/classes/OrbitController.md#zoomdamping).

## Properties

### moveDamping

```ts
moveDamping: number = 0.98
```

The movement damping. In the range 0 to 1, where a value of 0 means no damping and 1 means
full damping. Default is 0.98.

### rotateDamping

```ts
rotateDamping: number = 0.98
```

The rotation damping. In the range 0 to 1, where a value of 0 means no damping and 1 means
full damping. Default is 0.98.

### zoomDamping

```ts
zoomDamping: number = 0.98
```

The zoom damping. A higher value means more damping. A value of 0 means no damping.

## Accessors

### pitchRange

```ts
get pitchRange(): Vec2
set pitchRange(range: Vec2)
```

### yawRange

```ts
get yawRange(): Vec2
set yawRange(range: Vec2)
```

### zoomRange

```ts
get zoomRange(): Vec2
set zoomRange(range: Vec2)
```

## Methods

### attach

```ts
attach(pose: Pose, smooth?: boolean): void
```

**Parameters**

- `pose` ([`Pose`](https://api.playcanvas.com/engine/classes/Pose.md)): The initial pose of the controller.
- `smooth` (`boolean`, optional, default `true`): Whether to smooth the transition.

### destroy

```ts
destroy(): void
```

### detach

```ts
detach(): void
```

### update

```ts
update(frame: InputFrame<{ move: number[]; rotate: number[] }>, dt: number): Pose
```

**Parameters**

- `frame` ([`InputFrame`](https://api.playcanvas.com/engine/classes/InputFrame.md)`<{ move: number[]; rotate: number[] }>`): The input frame.
- `dt` (`number`): The delta time.

**Returns** [`Pose`](https://api.playcanvas.com/engine/classes/Pose.md): - The controller pose.

## Inherited from [InputController](https://api.playcanvas.com/engine/classes/InputController.md)

- `new OrbitController()`
- `protected _pose: Pose`
