-
Notifications
You must be signed in to change notification settings - Fork 0
/
universalCamera.ts
85 lines (74 loc) · 3.13 KB
/
universalCamera.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import { TouchCamera } from "./touchCamera";
import { Node } from "../node";
import { FreeCameraGamepadInput } from "../Cameras/Inputs/freeCameraGamepadInput";
import { Scene } from "../scene";
import { Vector3 } from "../Maths/math.vector";
import { Camera } from "./camera";
import "../Gamepads/gamepadSceneComponent";
Node.AddNodeConstructor("FreeCamera", (name, scene) => {
// Forcing to use the Universal camera
return () => new UniversalCamera(name, Vector3.Zero(), scene);
});
/**
* The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,
* which still works and will still be found in many Playgrounds.
* @see http://doc.babylonjs.com/features/cameras#universal-camera
*/
export class UniversalCamera extends TouchCamera {
/**
* Defines the gamepad rotation sensiblity.
* This is the threshold from when rotation starts to be accounted for to prevent jittering.
*/
public get gamepadAngularSensibility(): number {
var gamepad = <FreeCameraGamepadInput>this.inputs.attached["gamepad"];
if (gamepad) {
return gamepad.gamepadAngularSensibility;
}
return 0;
}
public set gamepadAngularSensibility(value: number) {
var gamepad = <FreeCameraGamepadInput>this.inputs.attached["gamepad"];
if (gamepad) {
gamepad.gamepadAngularSensibility = value;
}
}
/**
* Defines the gamepad move sensiblity.
* This is the threshold from when moving starts to be accounted for for to prevent jittering.
*/
public get gamepadMoveSensibility(): number {
var gamepad = <FreeCameraGamepadInput>this.inputs.attached["gamepad"];
if (gamepad) {
return gamepad.gamepadMoveSensibility;
}
return 0;
}
public set gamepadMoveSensibility(value: number) {
var gamepad = <FreeCameraGamepadInput>this.inputs.attached["gamepad"];
if (gamepad) {
gamepad.gamepadMoveSensibility = value;
}
}
/**
* The Universal Camera is the one to choose for first person shooter type games, and works with all the keyboard, mouse, touch and gamepads. This replaces the earlier Free Camera,
* which still works and will still be found in many Playgrounds.
* @see http://doc.babylonjs.com/features/cameras#universal-camera
* @param name Define the name of the camera in the scene
* @param position Define the start position of the camera in the scene
* @param scene Define the scene the camera belongs to
*/
constructor(name: string, position: Vector3, scene: Scene) {
super(name, position, scene);
this.inputs.addGamepad();
}
/**
* Gets the current object class name.
* @return the class name
*/
public getClassName(): string {
return "UniversalCamera";
}
}
Camera._createDefaultParsedCamera = (name: string, scene: Scene) => {
return new UniversalCamera(name, Vector3.Zero(), scene);
};