@shapediver/viewer.rendering-engine.camera-engine 2.12.8 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/implementation/CameraEngine.d.ts +5 -7
- package/dist/implementation/CameraEngine.d.ts.map +1 -1
- package/dist/implementation/CameraEngine.js +68 -27
- package/dist/implementation/CameraEngine.js.map +1 -1
- package/dist/implementation/camera/AbstractCamera.d.ts +7 -5
- package/dist/implementation/camera/AbstractCamera.d.ts.map +1 -1
- package/dist/implementation/camera/AbstractCamera.js +15 -8
- package/dist/implementation/camera/AbstractCamera.js.map +1 -1
- package/dist/implementation/camera/OrthographicCamera.d.ts +10 -13
- package/dist/implementation/camera/OrthographicCamera.d.ts.map +1 -1
- package/dist/implementation/camera/OrthographicCamera.js +53 -52
- package/dist/implementation/camera/OrthographicCamera.js.map +1 -1
- package/dist/implementation/camera/PerspectiveCamera.d.ts +9 -12
- package/dist/implementation/camera/PerspectiveCamera.d.ts.map +1 -1
- package/dist/implementation/camera/PerspectiveCamera.js +33 -38
- package/dist/implementation/camera/PerspectiveCamera.js.map +1 -1
- package/dist/implementation/controls/AbstractCameraControls.d.ts +156 -5
- package/dist/implementation/controls/AbstractCameraControls.d.ts.map +1 -1
- package/dist/implementation/controls/AbstractCameraControls.js +260 -6
- package/dist/implementation/controls/AbstractCameraControls.js.map +1 -1
- package/dist/implementation/controls/CameraControlsEventDistribution.d.ts +38 -0
- package/dist/implementation/controls/CameraControlsEventDistribution.d.ts.map +1 -0
- package/dist/implementation/controls/{perspective/CameraControlsEventDistribution.js → CameraControlsEventDistribution.js} +71 -71
- package/dist/implementation/controls/CameraControlsEventDistribution.js.map +1 -0
- package/dist/implementation/controls/{perspective/CameraControlsLogic.d.ts → CameraControlsLogic.d.ts} +5 -5
- package/dist/implementation/controls/CameraControlsLogic.d.ts.map +1 -0
- package/dist/implementation/controls/{perspective/CameraControlsLogic.js → CameraControlsLogic.js} +74 -44
- package/dist/implementation/controls/CameraControlsLogic.js.map +1 -0
- package/dist/implementation/controls/OrthographicCameraControls.d.ts +4 -67
- package/dist/implementation/controls/OrthographicCameraControls.d.ts.map +1 -1
- package/dist/implementation/controls/OrthographicCameraControls.js +22 -90
- package/dist/implementation/controls/OrthographicCameraControls.js.map +1 -1
- package/dist/implementation/controls/PerspectiveCameraControls.d.ts +4 -151
- package/dist/implementation/controls/PerspectiveCameraControls.d.ts.map +1 -1
- package/dist/implementation/controls/PerspectiveCameraControls.js +21 -247
- package/dist/implementation/controls/PerspectiveCameraControls.js.map +1 -1
- package/dist/implementation/interpolation/CameraInterpolationManager.d.ts +3 -3
- package/dist/implementation/interpolation/CameraInterpolationManager.d.ts.map +1 -1
- package/dist/implementation/interpolation/CameraInterpolationManager.js +5 -5
- package/dist/implementation/interpolation/CameraInterpolationManager.js.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraCylindricalInterpolation.d.ts +3 -3
- package/dist/implementation/interpolation/interpolationMethods/CameraCylindricalInterpolation.d.ts.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraCylindricalInterpolation.js +11 -11
- package/dist/implementation/interpolation/interpolationMethods/CameraCylindricalInterpolation.js.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraLinearInterpolation.d.ts +3 -3
- package/dist/implementation/interpolation/interpolationMethods/CameraLinearInterpolation.d.ts.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraLinearInterpolation.js +6 -6
- package/dist/implementation/interpolation/interpolationMethods/CameraLinearInterpolation.js.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraMultipleInterpolation.d.ts +4 -4
- package/dist/implementation/interpolation/interpolationMethods/CameraMultipleInterpolation.d.ts.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraMultipleInterpolation.js +6 -6
- package/dist/implementation/interpolation/interpolationMethods/CameraMultipleInterpolation.js.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraOrthographicInterpolation.d.ts +3 -3
- package/dist/implementation/interpolation/interpolationMethods/CameraOrthographicInterpolation.d.ts.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraOrthographicInterpolation.js +6 -6
- package/dist/implementation/interpolation/interpolationMethods/CameraOrthographicInterpolation.js.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraSphericalInterpolation.d.ts +3 -3
- package/dist/implementation/interpolation/interpolationMethods/CameraSphericalInterpolation.d.ts.map +1 -1
- package/dist/implementation/interpolation/interpolationMethods/CameraSphericalInterpolation.js +9 -9
- package/dist/implementation/interpolation/interpolationMethods/CameraSphericalInterpolation.js.map +1 -1
- package/dist/index.d.ts +6 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/interfaces/ICameraEngine.d.ts +7 -7
- package/dist/interfaces/ICameraEngine.d.ts.map +1 -1
- package/dist/interfaces/ICameraEngine.js +3 -0
- package/dist/interfaces/ICameraEngine.js.map +1 -1
- package/dist/interfaces/camera/ICamera.d.ts +23 -22
- package/dist/interfaces/camera/ICamera.d.ts.map +1 -1
- package/dist/interfaces/camera/ICamera.js +1 -0
- package/dist/interfaces/camera/ICamera.js.map +1 -1
- package/dist/interfaces/camera/IOrthographicCamera.d.ts +8 -7
- package/dist/interfaces/camera/IOrthographicCamera.d.ts.map +1 -1
- package/dist/interfaces/camera/IOrthographicCamera.js +4 -0
- package/dist/interfaces/camera/IOrthographicCamera.js.map +1 -1
- package/dist/interfaces/camera/IPerspectiveCamera.d.ts +2 -2
- package/dist/interfaces/camera/IPerspectiveCamera.d.ts.map +1 -1
- package/dist/interfaces/controls/ICameraControls.d.ts +73 -2
- package/dist/interfaces/controls/ICameraControls.d.ts.map +1 -1
- package/dist/interfaces/controls/ICameraControls.js +1 -0
- package/dist/interfaces/controls/ICameraControls.js.map +1 -1
- package/dist/interfaces/controls/ICameraControlsEventDistribution.d.ts +1 -1
- package/dist/interfaces/controls/ICameraControlsEventDistribution.d.ts.map +1 -1
- package/dist/interfaces/controls/ICameraControlsLogic.d.ts +4 -1
- package/dist/interfaces/controls/ICameraControlsLogic.d.ts.map +1 -1
- package/dist/interfaces/interpolation/ICameraInterpolation.d.ts +2 -2
- package/dist/interfaces/interpolation/ICameraInterpolation.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/implementation/CameraEngine.ts +111 -70
- package/src/implementation/camera/AbstractCamera.ts +24 -16
- package/src/implementation/camera/OrthographicCamera.ts +84 -85
- package/src/implementation/camera/PerspectiveCamera.ts +64 -69
- package/src/implementation/controls/AbstractCameraControls.ts +303 -14
- package/src/implementation/controls/{perspective/CameraControlsEventDistribution.ts → CameraControlsEventDistribution.ts} +96 -75
- package/src/implementation/controls/{perspective/CameraControlsLogic.ts → CameraControlsLogic.ts} +90 -53
- package/src/implementation/controls/OrthographicCameraControls.ts +27 -121
- package/src/implementation/controls/PerspectiveCameraControls.ts +28 -294
- package/src/implementation/interpolation/CameraInterpolationManager.ts +40 -45
- package/src/implementation/interpolation/interpolationMethods/CameraCylindricalInterpolation.ts +19 -22
- package/src/implementation/interpolation/interpolationMethods/CameraLinearInterpolation.ts +15 -16
- package/src/implementation/interpolation/interpolationMethods/CameraMultipleInterpolation.ts +17 -19
- package/src/implementation/interpolation/interpolationMethods/CameraOrthographicInterpolation.ts +12 -14
- package/src/implementation/interpolation/interpolationMethods/CameraSphericalInterpolation.ts +18 -20
- package/src/index.ts +18 -21
- package/src/interfaces/ICameraEngine.ts +24 -11
- package/src/interfaces/camera/ICamera.ts +45 -41
- package/src/interfaces/camera/IOrthographicCamera.ts +27 -9
- package/src/interfaces/camera/IPerspectiveCamera.ts +13 -5
- package/src/interfaces/controls/ICameraControls.ts +49 -6
- package/src/interfaces/controls/ICameraControlsEventDistribution.ts +5 -2
- package/src/interfaces/controls/ICameraControlsLogic.ts +6 -3
- package/src/interfaces/interpolation/ICameraInterpolation.ts +6 -2
- package/dist/implementation/controls/orthographic/CameraControlsEventDistribution.d.ts +0 -32
- package/dist/implementation/controls/orthographic/CameraControlsEventDistribution.d.ts.map +0 -1
- package/dist/implementation/controls/orthographic/CameraControlsEventDistribution.js +0 -230
- package/dist/implementation/controls/orthographic/CameraControlsEventDistribution.js.map +0 -1
- package/dist/implementation/controls/orthographic/CameraControlsLogic.d.ts +0 -28
- package/dist/implementation/controls/orthographic/CameraControlsLogic.d.ts.map +0 -1
- package/dist/implementation/controls/orthographic/CameraControlsLogic.js +0 -243
- package/dist/implementation/controls/orthographic/CameraControlsLogic.js.map +0 -1
- package/dist/implementation/controls/perspective/CameraControlsEventDistribution.d.ts +0 -32
- package/dist/implementation/controls/perspective/CameraControlsEventDistribution.d.ts.map +0 -1
- package/dist/implementation/controls/perspective/CameraControlsEventDistribution.js.map +0 -1
- package/dist/implementation/controls/perspective/CameraControlsLogic.d.ts.map +0 -1
- package/dist/implementation/controls/perspective/CameraControlsLogic.js.map +0 -1
- package/dist/interfaces/controls/ICameraControlsUsage.d.ts +0 -22
- package/dist/interfaces/controls/ICameraControlsUsage.d.ts.map +0 -1
- package/dist/interfaces/controls/ICameraControlsUsage.js +0 -3
- package/dist/interfaces/controls/ICameraControlsUsage.js.map +0 -1
- package/dist/interfaces/controls/IOrthographicCameraControls.d.ts +0 -30
- package/dist/interfaces/controls/IOrthographicCameraControls.d.ts.map +0 -1
- package/dist/interfaces/controls/IOrthographicCameraControls.js +0 -3
- package/dist/interfaces/controls/IOrthographicCameraControls.js.map +0 -1
- package/dist/interfaces/controls/IPerspectiveCameraControls.d.ts +0 -65
- package/dist/interfaces/controls/IPerspectiveCameraControls.d.ts.map +0 -1
- package/dist/interfaces/controls/IPerspectiveCameraControls.js +0 -3
- package/dist/interfaces/controls/IPerspectiveCameraControls.js.map +0 -1
- package/src/implementation/controls/orthographic/CameraControlsEventDistribution.ts +0 -234
- package/src/implementation/controls/orthographic/CameraControlsLogic.ts +0 -271
- package/src/interfaces/controls/ICameraControlsUsage.ts +0 -30
- package/src/interfaces/controls/IOrthographicCameraControls.ts +0 -13
- package/src/interfaces/controls/IPerspectiveCameraControls.ts +0 -33
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraControlsEventDistribution.d.ts","sourceRoot":"","sources":["../../../src/implementation/controls/CameraControlsEventDistribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,gCAAgC,EAAE,MAAM,4DAA4D,CAAC;AAC9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AAEtF,qBAAa,+BAAgC,YAAW,gCAAgC;IAGtF,SAAS,CAAC,OAAO;;;;MAIf;IACF,SAAS,CAAC,aAAa,UAAQ;IAC/B,SAAS,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC7C,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;IACrC,SAAS,CAAC,oBAAoB,CAAC,EAAE,YAAY,CAAC;IAC9C,SAAS,CAAC,sBAAsB,CAAC,EAAE,YAAY,CAAC;gBAMpC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB;IASjE,oBAAoB,IAAI,IAAI;IAI5B,sBAAsB,IAAI,IAAI;IAK9B,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAoCjC,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAkCjC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAMrC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAEnC,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMrC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAsBjC,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAYxC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAYvC,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAYxC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IASvC,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAStC,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAO/B,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAsBhC,KAAK,IAAI,IAAI;IAYpB,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAcrE,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;CAahD"}
|
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CameraControlsEventDistribution = void 0;
|
|
4
4
|
class CameraControlsEventDistribution {
|
|
5
|
-
// #endregion Properties (
|
|
5
|
+
// #endregion Properties (6)
|
|
6
6
|
// #region Constructors (1)
|
|
7
|
-
constructor(
|
|
8
|
-
|
|
9
|
-
this._cameraLogic = _cameraLogic;
|
|
10
|
-
// #region Properties (2)
|
|
7
|
+
constructor(controls, cameraLogic) {
|
|
8
|
+
// #region Properties (6)
|
|
11
9
|
this._active = {
|
|
12
10
|
rotation: false,
|
|
13
11
|
zoom: false,
|
|
14
12
|
pan: false
|
|
15
13
|
};
|
|
16
14
|
this._activeEvents = true;
|
|
15
|
+
this._controls = controls;
|
|
16
|
+
this._cameraLogic = cameraLogic;
|
|
17
17
|
}
|
|
18
18
|
// #endregion Constructors (1)
|
|
19
|
-
// #region Public Methods (
|
|
19
|
+
// #region Public Methods (16)
|
|
20
20
|
activateCameraEvents() {
|
|
21
21
|
this._activeEvents = true;
|
|
22
22
|
}
|
|
@@ -28,17 +28,18 @@ class CameraControlsEventDistribution {
|
|
|
28
28
|
if (this._controls.camera.active === false)
|
|
29
29
|
return;
|
|
30
30
|
const { x, y } = this.convertInput(event);
|
|
31
|
-
const
|
|
32
|
-
const
|
|
31
|
+
const touchEvent = event.pointerType === 'touch';
|
|
32
|
+
const input = this.getInput(event);
|
|
33
|
+
const mapping = event.pointerType === 'touch' ? this._controls.input.touch : this._controls.input.mouse;
|
|
33
34
|
if (input === mapping.rotate && this._controls.enableRotation) {
|
|
34
|
-
this._cameraLogic.rotate(x, y, this._active.rotation,
|
|
35
|
+
this._cameraLogic.rotate(x, y, this._active.rotation, touchEvent);
|
|
35
36
|
this._active.rotation = true;
|
|
36
37
|
}
|
|
37
38
|
else {
|
|
38
39
|
this._active.rotation = false;
|
|
39
40
|
}
|
|
40
41
|
if (input === mapping.pan && this._controls.enablePan) {
|
|
41
|
-
this._cameraLogic.pan(x, y, this._active.pan,
|
|
42
|
+
this._cameraLogic.pan(x, y, this._active.pan, touchEvent);
|
|
42
43
|
this._active.pan = true;
|
|
43
44
|
}
|
|
44
45
|
else {
|
|
@@ -46,11 +47,11 @@ class CameraControlsEventDistribution {
|
|
|
46
47
|
}
|
|
47
48
|
if (input === mapping.zoom && this._controls.enableZoom) {
|
|
48
49
|
let x1 = x, y1 = y;
|
|
49
|
-
if (
|
|
50
|
-
x1 = (
|
|
51
|
-
y1 = (
|
|
50
|
+
if (touchEvent && this._controls.input.touch.zoom === 2 && this._primaryPointerEvent && this._secondaryPointerEvent) {
|
|
51
|
+
x1 = (this._primaryPointerEvent.pageX - this._secondaryPointerEvent.pageX) / window.innerWidth * (window.innerWidth / window.innerHeight);
|
|
52
|
+
y1 = (this._primaryPointerEvent.pageY - this._secondaryPointerEvent.pageY) / window.innerHeight;
|
|
52
53
|
}
|
|
53
|
-
this._cameraLogic.zoom(x1, y1, this._active.zoom,
|
|
54
|
+
this._cameraLogic.zoom(x1, y1, this._active.zoom, touchEvent);
|
|
54
55
|
this._active.zoom = true;
|
|
55
56
|
}
|
|
56
57
|
else {
|
|
@@ -96,35 +97,7 @@ class CameraControlsEventDistribution {
|
|
|
96
97
|
return;
|
|
97
98
|
this.onKey(event);
|
|
98
99
|
}
|
|
99
|
-
|
|
100
|
-
if (this._controls.camera.active === false)
|
|
101
|
-
return;
|
|
102
|
-
if (!this._activeEvents)
|
|
103
|
-
return;
|
|
104
|
-
this.onDown(event);
|
|
105
|
-
}
|
|
106
|
-
onMouseEnd(event) {
|
|
107
|
-
if (this._controls.camera.active === false)
|
|
108
|
-
return;
|
|
109
|
-
if (!this._activeEvents)
|
|
110
|
-
return;
|
|
111
|
-
this.onUp(event);
|
|
112
|
-
}
|
|
113
|
-
onMouseMove(event) {
|
|
114
|
-
if (this._controls.camera.active === false)
|
|
115
|
-
return;
|
|
116
|
-
if (!this._activeEvents)
|
|
117
|
-
return;
|
|
118
|
-
this.onMove(event);
|
|
119
|
-
}
|
|
120
|
-
onMouseOut(event) {
|
|
121
|
-
if (this._controls.camera.active === false)
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
onMouseUp(event) {
|
|
125
|
-
if (this._controls.camera.active === false)
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
100
|
+
onKeyUp(event) { }
|
|
128
101
|
onMouseWheel(event) {
|
|
129
102
|
if (this._controls.camera.active === false)
|
|
130
103
|
return;
|
|
@@ -136,47 +109,68 @@ class CameraControlsEventDistribution {
|
|
|
136
109
|
if (this._controls.camera.active === false)
|
|
137
110
|
return;
|
|
138
111
|
const { x, y } = this.convertInput(event);
|
|
112
|
+
const touchEvent = event.pointerType === 'touch';
|
|
139
113
|
if (this._controls.enableRotation && this._active.rotation)
|
|
140
|
-
this._cameraLogic.rotate(x, y, this._active.rotation,
|
|
114
|
+
this._cameraLogic.rotate(x, y, this._active.rotation, touchEvent);
|
|
141
115
|
if (this._controls.enablePan && this._active.pan)
|
|
142
|
-
this._cameraLogic.pan(x, y, this._active.pan,
|
|
116
|
+
this._cameraLogic.pan(x, y, this._active.pan, touchEvent);
|
|
143
117
|
if (this._controls.enableZoom && this._active.zoom) {
|
|
144
118
|
let x1 = x, y1 = y;
|
|
145
|
-
if (
|
|
146
|
-
x1 = (
|
|
147
|
-
y1 = (
|
|
119
|
+
if (touchEvent && this._controls.input.touch.zoom === 2 && this._primaryPointerEvent && this._secondaryPointerEvent) {
|
|
120
|
+
x1 = (this._primaryPointerEvent.pageX - this._secondaryPointerEvent.pageX) / window.innerWidth * (window.innerWidth / window.innerHeight);
|
|
121
|
+
y1 = (this._primaryPointerEvent.pageY - this._secondaryPointerEvent.pageY) / window.innerHeight;
|
|
148
122
|
}
|
|
149
|
-
this._cameraLogic.zoom(x1, y1, this._active.zoom,
|
|
123
|
+
this._cameraLogic.zoom(x1, y1, this._active.zoom, touchEvent);
|
|
150
124
|
}
|
|
151
125
|
}
|
|
152
|
-
|
|
126
|
+
onPointerDown(event) {
|
|
153
127
|
if (this._controls.camera.active === false)
|
|
154
128
|
return;
|
|
129
|
+
if (!this._activeEvents)
|
|
130
|
+
return;
|
|
131
|
+
if (event.isPrimary === true)
|
|
132
|
+
this._primaryPointerEvent = event;
|
|
133
|
+
else if (event.isPrimary === false)
|
|
134
|
+
this._secondaryPointerEvent = event;
|
|
135
|
+
this.onDown(event);
|
|
155
136
|
}
|
|
156
|
-
|
|
137
|
+
onPointerEnd(event) {
|
|
157
138
|
if (this._controls.camera.active === false)
|
|
158
139
|
return;
|
|
159
140
|
if (!this._activeEvents)
|
|
160
141
|
return;
|
|
142
|
+
if (event.isPrimary === true)
|
|
143
|
+
this._primaryPointerEvent = undefined;
|
|
144
|
+
else if (event.isPrimary === false)
|
|
145
|
+
this._secondaryPointerEvent = undefined;
|
|
161
146
|
this.onUp(event);
|
|
162
147
|
}
|
|
163
|
-
|
|
148
|
+
onPointerMove(event) {
|
|
164
149
|
if (this._controls.camera.active === false)
|
|
165
150
|
return;
|
|
166
151
|
if (!this._activeEvents)
|
|
167
152
|
return;
|
|
153
|
+
if (event.isPrimary === true)
|
|
154
|
+
this._primaryPointerEvent = event;
|
|
155
|
+
else if (event.isPrimary === false)
|
|
156
|
+
this._secondaryPointerEvent = event;
|
|
168
157
|
this.onMove(event);
|
|
169
158
|
}
|
|
170
|
-
|
|
159
|
+
onPointerOut(event) {
|
|
171
160
|
if (this._controls.camera.active === false)
|
|
172
161
|
return;
|
|
173
|
-
if (
|
|
174
|
-
|
|
175
|
-
|
|
162
|
+
if (event.isPrimary === true)
|
|
163
|
+
this._primaryPointerEvent = undefined;
|
|
164
|
+
else if (event.isPrimary === false)
|
|
165
|
+
this._secondaryPointerEvent = undefined;
|
|
176
166
|
}
|
|
177
|
-
|
|
167
|
+
onPointerUp(event) {
|
|
178
168
|
if (this._controls.camera.active === false)
|
|
179
169
|
return;
|
|
170
|
+
if (event.isPrimary === true)
|
|
171
|
+
this._primaryPointerEvent = undefined;
|
|
172
|
+
else if (event.isPrimary === false)
|
|
173
|
+
this._secondaryPointerEvent = undefined;
|
|
180
174
|
}
|
|
181
175
|
onUp(event) {
|
|
182
176
|
if (this._controls.camera.active === false)
|
|
@@ -218,29 +212,35 @@ class CameraControlsEventDistribution {
|
|
|
218
212
|
pan: false
|
|
219
213
|
};
|
|
220
214
|
}
|
|
221
|
-
// #endregion Public Methods (
|
|
222
|
-
// #region
|
|
215
|
+
// #endregion Public Methods (16)
|
|
216
|
+
// #region Protected Methods (2)
|
|
223
217
|
convertInput(event) {
|
|
224
|
-
if (
|
|
218
|
+
if (this._primaryPointerEvent && this._secondaryPointerEvent) {
|
|
225
219
|
return {
|
|
226
|
-
x:
|
|
227
|
-
y:
|
|
220
|
+
x: (this._primaryPointerEvent.pageX + this._secondaryPointerEvent.pageX) / 2,
|
|
221
|
+
y: (this._primaryPointerEvent.pageY + this._secondaryPointerEvent.pageY) / 2
|
|
228
222
|
};
|
|
229
223
|
}
|
|
230
224
|
else {
|
|
231
|
-
if (event.touches.length < 1)
|
|
232
|
-
return { x: 0, y: 0 };
|
|
233
|
-
if (event.touches.length === 1)
|
|
234
|
-
return {
|
|
235
|
-
x: event.touches[0].pageX,
|
|
236
|
-
y: event.touches[0].pageY
|
|
237
|
-
};
|
|
238
225
|
return {
|
|
239
|
-
x:
|
|
240
|
-
y:
|
|
226
|
+
x: event.clientX,
|
|
227
|
+
y: event.clientY
|
|
241
228
|
};
|
|
242
229
|
}
|
|
243
230
|
}
|
|
231
|
+
getInput(event) {
|
|
232
|
+
if (event.pointerType === 'touch') {
|
|
233
|
+
if (this._secondaryPointerEvent) {
|
|
234
|
+
return 2;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
return 1;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
return event.button;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
244
|
}
|
|
245
245
|
exports.CameraControlsEventDistribution = CameraControlsEventDistribution;
|
|
246
246
|
//# sourceMappingURL=CameraControlsEventDistribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraControlsEventDistribution.js","sourceRoot":"","sources":["../../../src/implementation/controls/CameraControlsEventDistribution.ts"],"names":[],"mappings":";;;AAIA,MAAa,+BAA+B;IAc1C,4BAA4B;IAE5B,2BAA2B;IAE3B,YAAY,QAAyB,EAAE,WAAiC;QAjBxE,yBAAyB;QAEf,YAAO,GAAG;YAClB,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK;SACX,CAAC;QACQ,kBAAa,GAAG,IAAI,CAAC;QAW7B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED,8BAA8B;IAE9B,8BAA8B;IAEvB,oBAAoB;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEM,sBAAsB;QAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,KAAmB;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QAEnD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QAExG,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;YAC7D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;SAC/B;QAED,IAAI,KAAK,KAAK,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,KAAK,KAAK,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YACvD,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACnB,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBACnH,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAuB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC5I,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAuB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;aACnG;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;SAC1B;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;SAC3B;IACH,CAAC;IAEM,KAAK,CAAC,KAAoB;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY;YAAE,OAAO;QACzC,QAAQ,KAAK,CAAC,OAAO,EAAE;YACrB,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM;YAER,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1E,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM;YAER,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;gBACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM;YAER,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;gBAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC1E,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM;SACT;IACH,CAAC;IAEM,SAAS,CAAC,KAAoB;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAEM,OAAO,CAAC,KAAoB,IAAU,CAAC;IAEvC,YAAY,CAAC,KAAiB;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAChC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,KAAmB;QAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;QAEjD,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;YACxD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEpE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG;YAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAClD,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACnB,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBACnH,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAuB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC5I,EAAE,GAAG,CAAC,IAAI,CAAC,oBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAuB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;aACnG;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAC/D;IACH,CAAC;IAEM,aAAa,CAAC,KAAmB;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhC,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAC1B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;aAC/B,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;YAChC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAEM,YAAY,CAAC,KAAmB;QACrC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhC,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAC1B,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;aACnC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;YAChC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;QAE1C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,aAAa,CAAC,KAAmB;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhC,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAC1B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;aAC/B,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;YAChC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAEM,YAAY,CAAC,KAAmB;QACrC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QAEnD,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAC1B,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;aACnC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;YAChC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAC5C,CAAC;IAEM,WAAW,CAAC,KAAmB;QACpC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QAEnD,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI;YAC1B,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;aACnC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;YAChC,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAC5C,CAAC;IAEM,IAAI,CAAC,KAAmB;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,KAAiB;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;YAAE,OAAO;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YAC9B,8BAA8B;YAC9B,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;SACvB;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;YACrC,UAAU;YACV,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;SACvB;QACD,sDAAsD;QACtD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3C;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3C;IACH,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,OAAO,GAAG;YACb,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,KAAK;SACX,CAAC;IACJ,CAAC;IAED,iCAAiC;IAEjC,gCAAgC;IAEtB,YAAY,CAAC,KAAmB;QACxC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC5D,OAAO;gBACL,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC5E,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC;aAC7E,CAAC;SACH;aAAM;YACL,OAAO;gBACL,CAAC,EAAE,KAAK,CAAC,OAAO;gBAChB,CAAC,EAAE,KAAK,CAAC,OAAO;aACjB,CAAC;SACH;IACH,CAAC;IAES,QAAQ,CAAC,KAAmB;QACpC,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;YACjC,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC/B,OAAO,CAAC,CAAC;aACV;iBAAM;gBACL,OAAO,CAAC,CAAC;aACV;SACF;aAAM;YACL,OAAO,KAAK,CAAC,MAAM,CAAC;SACrB;IACH,CAAC;CAGF;AAxQD,0EAwQC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { Adjustments, ICameraControls } from '../../interfaces/controls/ICameraControls';
|
|
2
|
+
import { ICameraControlsLogic } from '../../interfaces/controls/ICameraControlsLogic';
|
|
1
3
|
import { vec2, vec3 } from 'gl-matrix';
|
|
2
|
-
import { PerspectiveCameraControls } from '../PerspectiveCameraControls';
|
|
3
|
-
import { ICameraControlsLogic } from '../../../interfaces/controls/ICameraControlsLogic';
|
|
4
4
|
export declare class CameraControlsLogic implements ICameraControlsLogic {
|
|
5
5
|
private readonly _controls;
|
|
6
|
+
private readonly _settingsAdjustments;
|
|
7
|
+
private readonly _touchAdjustments;
|
|
6
8
|
private _adjustedSettings;
|
|
7
9
|
private _damping;
|
|
8
10
|
private _dollyDelta;
|
|
@@ -16,9 +18,7 @@ export declare class CameraControlsLogic implements ICameraControlsLogic {
|
|
|
16
18
|
private _rotateDelta;
|
|
17
19
|
private _rotateEnd;
|
|
18
20
|
private _rotateStart;
|
|
19
|
-
|
|
20
|
-
private _touchAdjustments;
|
|
21
|
-
constructor(_controls: PerspectiveCameraControls);
|
|
21
|
+
constructor(_controls: ICameraControls, _settingsAdjustments: Adjustments, _touchAdjustments: Adjustments);
|
|
22
22
|
isWithinRestrictions(position: vec3, target: vec3): boolean;
|
|
23
23
|
pan(x: number, y: number, active: boolean, touch: boolean): void;
|
|
24
24
|
reset(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraControlsLogic.d.ts","sourceRoot":"","sources":["../../../src/implementation/controls/CameraControlsLogic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAGH,IAAI,EACJ,IAAI,EACH,MAAM,WAAW,CAAC;AAMvB,qBAAa,mBAAoB,YAAW,oBAAoB;IA6ChD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAmB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAAe,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IA1C/I,OAAO,CAAC,iBAAiB,CAOvB;IACF,OAAO,CAAC,QAAQ,CAiBd;IACF,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,YAAY,CAAiB;gBAMR,SAAS,EAAE,eAAe,EAAmB,oBAAoB,EAAE,WAAW,EAAmB,iBAAiB,EAAE,WAAW;IASrJ,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO;IAoC3D,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IA+ChE,KAAK;IA8BL,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,IAAI,CAAC;QAAC,aAAa,EAAE,IAAI,CAAA;KAAE;IA4FlH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAmDnE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAG,IAAI;IAkFtD,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAsCxE,OAAO,CAAC,gBAAgB;IAkDxB,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,oBAAoB;CAO/B"}
|
package/dist/implementation/controls/{perspective/CameraControlsLogic.js → CameraControlsLogic.js}
RENAMED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CameraControlsLogic = void 0;
|
|
4
|
-
const gl_matrix_1 = require("gl-matrix");
|
|
5
4
|
const viewer_shared_math_1 = require("@shapediver/viewer.shared.math");
|
|
5
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
6
|
+
const OrthographicCamera_1 = require("../camera/OrthographicCamera");
|
|
7
|
+
const ICameraEngine_1 = require("../../interfaces/ICameraEngine");
|
|
8
|
+
const IOrthographicCamera_1 = require("../../interfaces/camera/IOrthographicCamera");
|
|
6
9
|
class CameraControlsLogic {
|
|
7
|
-
// #endregion Properties (
|
|
10
|
+
// #endregion Properties (13)
|
|
8
11
|
// #region Constructors (1)
|
|
9
|
-
constructor(_controls) {
|
|
12
|
+
constructor(_controls, _settingsAdjustments, _touchAdjustments) {
|
|
10
13
|
this._controls = _controls;
|
|
11
|
-
|
|
14
|
+
this._settingsAdjustments = _settingsAdjustments;
|
|
15
|
+
this._touchAdjustments = _touchAdjustments;
|
|
16
|
+
// #region Properties (13)
|
|
12
17
|
this._adjustedSettings = {
|
|
13
18
|
autoRotationSpeed: () => this._controls.autoRotationSpeed * this._settingsAdjustments.autoRotationSpeed,
|
|
14
19
|
damping: () => this._controls.damping * this._settingsAdjustments.damping,
|
|
@@ -44,22 +49,6 @@ class CameraControlsLogic {
|
|
|
44
49
|
this._rotateDelta = gl_matrix_1.vec2.create();
|
|
45
50
|
this._rotateEnd = gl_matrix_1.vec2.create();
|
|
46
51
|
this._rotateStart = gl_matrix_1.vec2.create();
|
|
47
|
-
this._settingsAdjustments = {
|
|
48
|
-
autoRotationSpeed: 2 * Math.PI / 60 / 60,
|
|
49
|
-
damping: 1.0,
|
|
50
|
-
movementSmoothness: 1.0,
|
|
51
|
-
panSpeed: 1.75,
|
|
52
|
-
rotationSpeed: Math.PI,
|
|
53
|
-
zoomSpeed: 0.025,
|
|
54
|
-
};
|
|
55
|
-
this._touchAdjustments = {
|
|
56
|
-
autoRotationSpeed: 1.0,
|
|
57
|
-
damping: 1.0,
|
|
58
|
-
movementSmoothness: 1.0,
|
|
59
|
-
panSpeed: 1.0 / 1.75,
|
|
60
|
-
rotationSpeed: 1.5,
|
|
61
|
-
zoomSpeed: 100.0,
|
|
62
|
-
};
|
|
63
52
|
this._quat = gl_matrix_1.quat.fromValues(-Math.sin(Math.PI / 4), 0, 0, Math.sin(Math.PI / 4));
|
|
64
53
|
this._quatInverse = gl_matrix_1.quat.fromValues(Math.sin(Math.PI / 4), 0, 0, Math.sin(Math.PI / 4));
|
|
65
54
|
}
|
|
@@ -189,7 +178,8 @@ class CameraControlsLogic {
|
|
|
189
178
|
minPolarAngle !== 0 ||
|
|
190
179
|
maxPolarAngle !== 180 ||
|
|
191
180
|
this._controls.enableAzimuthRotation === false ||
|
|
192
|
-
this._controls.enablePolarRotation === false
|
|
181
|
+
this._controls.enablePolarRotation === false ||
|
|
182
|
+
this._controls.enableObjectControls === true) {
|
|
193
183
|
let offset = gl_matrix_1.vec3.subtract(gl_matrix_1.vec3.create(), position, target);
|
|
194
184
|
gl_matrix_1.vec3.transformQuat(offset, offset, this._quat);
|
|
195
185
|
const spherical = new viewer_shared_math_1.Spherical().fromVec3(offset);
|
|
@@ -198,10 +188,11 @@ class CameraControlsLogic {
|
|
|
198
188
|
spherical.phi < minPolarAngle ||
|
|
199
189
|
spherical.phi > maxPolarAngle ||
|
|
200
190
|
this._controls.enableAzimuthRotation === false ||
|
|
201
|
-
this._controls.enablePolarRotation === false
|
|
191
|
+
this._controls.enablePolarRotation === false ||
|
|
192
|
+
this._controls.enableObjectControls === true) {
|
|
202
193
|
spherical.theta = Math.max(minAzimuthAngle, Math.min(maxAzimuthAngle, spherical.theta));
|
|
203
194
|
spherical.phi = Math.max(minPolarAngle, Math.min(maxPolarAngle, spherical.phi));
|
|
204
|
-
if (this._controls.enableAzimuthRotation === false || this._controls.enablePolarRotation === false) {
|
|
195
|
+
if (this._controls.enableAzimuthRotation === false || this._controls.enablePolarRotation === false || this._controls.enableObjectControls === true) {
|
|
205
196
|
const defaultOffset = gl_matrix_1.vec3.subtract(gl_matrix_1.vec3.create(), this._controls.camera.defaultPosition, this._controls.camera.defaultTarget);
|
|
206
197
|
gl_matrix_1.vec3.transformQuat(defaultOffset, defaultOffset, this._quat);
|
|
207
198
|
const defaultSpherical = new viewer_shared_math_1.Spherical().fromVec3(defaultOffset);
|
|
@@ -209,18 +200,23 @@ class CameraControlsLogic {
|
|
|
209
200
|
spherical.theta = defaultSpherical.theta;
|
|
210
201
|
if (this._controls.enablePolarRotation === false)
|
|
211
202
|
spherical.phi = defaultSpherical.phi;
|
|
203
|
+
if (this._controls.enableObjectControls) {
|
|
204
|
+
spherical.theta = defaultSpherical.theta;
|
|
205
|
+
spherical.phi = defaultSpherical.phi;
|
|
206
|
+
}
|
|
212
207
|
}
|
|
213
208
|
spherical.makeSafe();
|
|
214
209
|
offset = spherical.toVec3();
|
|
215
210
|
gl_matrix_1.vec3.transformQuat(offset, offset, this._quatInverse);
|
|
216
211
|
gl_matrix_1.vec3.add(position, offset, target);
|
|
217
212
|
}
|
|
218
|
-
if (sceneRotation[1] < minAzimuthAngle ||
|
|
213
|
+
if ((sceneRotation[1] < minAzimuthAngle ||
|
|
219
214
|
sceneRotation[1] > maxAzimuthAngle ||
|
|
220
215
|
sceneRotation[0] < minPolarAngle ||
|
|
221
216
|
sceneRotation[0] > maxPolarAngle ||
|
|
222
217
|
this._controls.enableAzimuthRotation === false ||
|
|
223
|
-
this._controls.enablePolarRotation === false)
|
|
218
|
+
this._controls.enablePolarRotation === false) &&
|
|
219
|
+
this._controls.enableObjectControls === false) {
|
|
224
220
|
sceneRotation[1] = this._controls.enableAzimuthRotation === false ? 0 : Math.max(minAzimuthAngle, Math.min(maxAzimuthAngle, sceneRotation[1]));
|
|
225
221
|
sceneRotation[0] = this._controls.enablePolarRotation === false ? 0 : Math.max(minPolarAngle, Math.min(maxPolarAngle, sceneRotation[0]));
|
|
226
222
|
}
|
|
@@ -228,6 +224,8 @@ class CameraControlsLogic {
|
|
|
228
224
|
return { position, target, sceneRotation };
|
|
229
225
|
}
|
|
230
226
|
rotate(x, y, active, touch) {
|
|
227
|
+
if (this._controls.camera.type === ICameraEngine_1.CAMERA_TYPE.ORTHOGRAPHIC && this._controls.camera.direction !== IOrthographicCamera_1.ORTHOGRAPHIC_CAMERA_DIRECTION.CUSTOM)
|
|
228
|
+
return;
|
|
231
229
|
if (!active) {
|
|
232
230
|
this._rotateStart = gl_matrix_1.vec2.fromValues(x, y);
|
|
233
231
|
}
|
|
@@ -249,7 +247,10 @@ class CameraControlsLogic {
|
|
|
249
247
|
const phiDelta = this._damping.rotation.phi - spherical.phi;
|
|
250
248
|
spherical.phi += phiDelta * this._adjustedSettings.movementSmoothness();
|
|
251
249
|
}
|
|
252
|
-
|
|
250
|
+
let sphericalForOffset = spherical;
|
|
251
|
+
if (this._controls.enableTurntableControls)
|
|
252
|
+
sphericalForOffset = new viewer_shared_math_1.Spherical(1.0, spherical.phi, 0);
|
|
253
|
+
const offset = this.rotationSphericalToOffset(sphericalForOffset);
|
|
253
254
|
const damping = 1 - Math.max(0.01, Math.min(1, this._adjustedSettings.damping()));
|
|
254
255
|
const framesTheta = (Math.log(1 / Math.abs(spherical.theta)) - 5 * Math.log(10)) / (Math.log(damping));
|
|
255
256
|
const framesPhi = (Math.log(1 / Math.abs(spherical.phi)) - 5 * Math.log(10)) / (Math.log(damping));
|
|
@@ -262,6 +263,8 @@ class CameraControlsLogic {
|
|
|
262
263
|
this._controls.applyPositionVector(offset, true);
|
|
263
264
|
if (this._controls.enableTurntableControls)
|
|
264
265
|
this._controls.applyRotation([0, spherical.theta], true);
|
|
266
|
+
if (this._controls.enableObjectControls)
|
|
267
|
+
this._controls.applyRotation([spherical.phi, spherical.theta], true);
|
|
265
268
|
}
|
|
266
269
|
}
|
|
267
270
|
update(time, manualInteraction) {
|
|
@@ -299,10 +302,15 @@ class CameraControlsLogic {
|
|
|
299
302
|
const spherical = new viewer_shared_math_1.Spherical();
|
|
300
303
|
spherical.theta = this._damping.rotation.theta * Math.pow(damping, frameSinceStart);
|
|
301
304
|
spherical.phi = this._damping.rotation.phi * Math.pow(damping, frameSinceStart);
|
|
302
|
-
|
|
305
|
+
let sphericalForOffset = spherical;
|
|
306
|
+
if (this._controls.enableTurntableControls)
|
|
307
|
+
sphericalForOffset = new viewer_shared_math_1.Spherical(1.0, spherical.phi, 0);
|
|
308
|
+
const offset = this.rotationSphericalToOffset(sphericalForOffset);
|
|
303
309
|
this._controls.applyPositionVector(offset);
|
|
304
310
|
if (this._controls.enableTurntableControls)
|
|
305
311
|
this._controls.applyRotation([0, spherical.theta]);
|
|
312
|
+
if (this._controls.enableObjectControls)
|
|
313
|
+
this._controls.applyRotation([spherical.phi, spherical.theta]);
|
|
306
314
|
}
|
|
307
315
|
}
|
|
308
316
|
else {
|
|
@@ -326,10 +334,15 @@ class CameraControlsLogic {
|
|
|
326
334
|
}
|
|
327
335
|
if (this._controls.enableAutoRotation) {
|
|
328
336
|
const spherical = new viewer_shared_math_1.Spherical(1.0, 0.0, -this._adjustedSettings.autoRotationSpeed());
|
|
329
|
-
|
|
337
|
+
let sphericalForOffset = spherical;
|
|
338
|
+
if (this._controls.enableTurntableControls)
|
|
339
|
+
sphericalForOffset = new viewer_shared_math_1.Spherical(1.0, spherical.phi, 0);
|
|
340
|
+
const offset = this.rotationSphericalToOffset(sphericalForOffset);
|
|
330
341
|
this._controls.applyPositionVector(offset);
|
|
331
342
|
if (this._controls.enableTurntableControls)
|
|
332
343
|
this._controls.applyRotation([0, spherical.theta]);
|
|
344
|
+
if (this._controls.enableObjectControls)
|
|
345
|
+
this._controls.applyRotation([spherical.phi, spherical.theta]);
|
|
333
346
|
}
|
|
334
347
|
}
|
|
335
348
|
zoom(x, y, active, touch) {
|
|
@@ -364,7 +377,7 @@ class CameraControlsLogic {
|
|
|
364
377
|
// #endregion Public Methods (7)
|
|
365
378
|
// #region Private Methods (3)
|
|
366
379
|
panDeltaToOffset(panDelta) {
|
|
367
|
-
var _a, _b;
|
|
380
|
+
var _a, _b, _c, _d;
|
|
368
381
|
const offset = gl_matrix_1.vec3.create();
|
|
369
382
|
const panOffset = gl_matrix_1.vec3.create();
|
|
370
383
|
if (!this._controls.canvas)
|
|
@@ -373,21 +386,38 @@ class CameraControlsLogic {
|
|
|
373
386
|
return offset;
|
|
374
387
|
// perspective
|
|
375
388
|
gl_matrix_1.vec3.subtract(offset, this._controls.getPositionWithManualUpdates(), this._controls.getTargetWithManualUpdates());
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
389
|
+
if (this._controls.camera instanceof OrthographicCamera_1.OrthographicCamera) {
|
|
390
|
+
const orthographicCamera = this._controls.camera;
|
|
391
|
+
const mat = gl_matrix_1.mat4.targetTo(gl_matrix_1.mat4.create(), orthographicCamera.position, orthographicCamera.target, orthographicCamera.up);
|
|
392
|
+
// // we use only clientHeight here so aspect ratio does not distort speed
|
|
393
|
+
// // left
|
|
394
|
+
const v1 = gl_matrix_1.vec3.fromValues(mat[0], mat[1], mat[2]);
|
|
395
|
+
const scalar1 = -(panDelta[0] * (orthographicCamera.right - orthographicCamera.left) * 0.5 / ((_a = this._controls.canvas) === null || _a === void 0 ? void 0 : _a.clientHeight) /** orthographicCamera.zoom */);
|
|
396
|
+
gl_matrix_1.vec3.multiply(v1, v1, gl_matrix_1.vec3.fromValues(scalar1, scalar1, scalar1));
|
|
397
|
+
gl_matrix_1.vec3.add(panOffset, panOffset, v1);
|
|
398
|
+
// // up
|
|
399
|
+
const v2 = gl_matrix_1.vec3.fromValues(mat[4], mat[5], mat[6]);
|
|
400
|
+
const scalar2 = panDelta[1] * (orthographicCamera.right - orthographicCamera.left) * 0.5 / ((_b = this._controls.canvas) === null || _b === void 0 ? void 0 : _b.clientHeight) /** orthographicCamera.zoom */;
|
|
401
|
+
gl_matrix_1.vec3.multiply(v2, v2, gl_matrix_1.vec3.fromValues(scalar2, scalar2, scalar2));
|
|
402
|
+
gl_matrix_1.vec3.add(panOffset, panOffset, v2);
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
let targetDistance = gl_matrix_1.vec3.length(offset);
|
|
406
|
+
// half of the fov is center to top of screen
|
|
407
|
+
targetDistance *= Math.tan(((this._controls.camera.fov / 2) * Math.PI) / 180.0);
|
|
408
|
+
// we use only clientHeight here so aspect ratio does not distort speed
|
|
409
|
+
// left
|
|
410
|
+
const mat = gl_matrix_1.mat4.targetTo(gl_matrix_1.mat4.create(), this._controls.camera.position, this._controls.camera.target, gl_matrix_1.vec3.fromValues(0, 0, 1));
|
|
411
|
+
const v1 = gl_matrix_1.vec3.fromValues(mat[0], mat[1], mat[2]);
|
|
412
|
+
const scalar1 = -(2 * panDelta[0] * targetDistance / ((_c = this._controls.canvas) === null || _c === void 0 ? void 0 : _c.clientHeight));
|
|
413
|
+
gl_matrix_1.vec3.multiply(v1, v1, gl_matrix_1.vec3.fromValues(scalar1, scalar1, scalar1));
|
|
414
|
+
gl_matrix_1.vec3.add(panOffset, panOffset, v1);
|
|
415
|
+
// // up
|
|
416
|
+
const v2 = gl_matrix_1.vec3.fromValues(mat[4], mat[5], mat[6]);
|
|
417
|
+
const scalar2 = 2 * panDelta[1] * targetDistance / ((_d = this._controls.canvas) === null || _d === void 0 ? void 0 : _d.clientHeight);
|
|
418
|
+
gl_matrix_1.vec3.multiply(v2, v2, gl_matrix_1.vec3.fromValues(scalar2, scalar2, scalar2));
|
|
419
|
+
gl_matrix_1.vec3.add(panOffset, panOffset, v2);
|
|
420
|
+
}
|
|
391
421
|
return gl_matrix_1.vec3.clone(panOffset);
|
|
392
422
|
}
|
|
393
423
|
rotationSphericalToOffset(s) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraControlsLogic.js","sourceRoot":"","sources":["../../../src/implementation/controls/CameraControlsLogic.ts"],"names":[],"mappings":"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"}
|