@operato/scene-visualizer 9.1.1 → 10.0.0-beta.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/banner.d.ts +232 -3
- package/dist/banner.js +1 -2
- package/dist/banner.js.map +1 -1
- package/dist/camera.d.ts +232 -3
- package/dist/camera.js +1 -2
- package/dist/camera.js.map +1 -1
- package/dist/carrier.d.ts +263 -0
- package/dist/carrier.js +272 -0
- package/dist/carrier.js.map +1 -0
- package/dist/cube.d.ts +232 -4
- package/dist/cube.js +1 -2
- package/dist/cube.js.map +1 -1
- package/dist/cylinder.d.ts +1 -3
- package/dist/cylinder.js +1 -2
- package/dist/cylinder.js.map +1 -1
- package/dist/desk.d.ts +238 -3
- package/dist/desk.js +1 -2
- package/dist/desk.js.map +1 -1
- package/dist/editors/index.d.ts +1 -0
- package/dist/editors/index.js +5 -0
- package/dist/editors/index.js.map +1 -1
- package/dist/editors/property-editor-gltf-fill-targets.d.ts +17 -0
- package/dist/editors/property-editor-gltf-fill-targets.js +211 -0
- package/dist/editors/property-editor-gltf-fill-targets.js.map +1 -0
- package/dist/editors/property-editor-gltf-info.js +38 -29
- package/dist/editors/property-editor-gltf-info.js.map +1 -1
- package/dist/editors/property-editor-location-increase-pattern.js +91 -95
- package/dist/editors/property-editor-location-increase-pattern.js.map +1 -1
- package/dist/effects/outline.js +1 -1
- package/dist/effects/outline.js.map +1 -1
- package/dist/ellipse.js +2 -4
- package/dist/ellipse.js.map +1 -1
- package/dist/gltf-object.d.ts +232 -3
- package/dist/gltf-object.js +1 -2
- package/dist/gltf-object.js.map +1 -1
- package/dist/html-overlay-element.js +3 -7
- package/dist/html-overlay-element.js.map +1 -1
- package/dist/index.d.ts +5 -17
- package/dist/index.js +7 -17
- package/dist/index.js.map +1 -1
- package/dist/light.d.ts +1 -2
- package/dist/light.js +1 -2
- package/dist/light.js.map +1 -1
- package/dist/polygon.js +2 -4
- package/dist/polygon.js.map +1 -1
- package/dist/rack-table-3d.d.ts +16 -0
- package/dist/rack-table-3d.js +94 -0
- package/dist/rack-table-3d.js.map +1 -0
- package/dist/rack-table-cell.d.ts +238 -3
- package/dist/rack-table-cell.js +44 -51
- package/dist/rack-table-cell.js.map +1 -1
- package/dist/rack-table-location.d.ts +37 -0
- package/dist/rack-table-location.js +227 -0
- package/dist/rack-table-location.js.map +1 -0
- package/dist/rack-table.d.ts +13 -29
- package/dist/rack-table.js +108 -380
- package/dist/rack-table.js.map +1 -1
- package/dist/rack.d.ts +3 -5
- package/dist/rack.js +7 -9
- package/dist/rack.js.map +1 -1
- package/dist/rect.js +2 -4
- package/dist/rect.js.map +1 -1
- package/dist/signal-tower.d.ts +492 -0
- package/dist/signal-tower.js +275 -0
- package/dist/signal-tower.js.map +1 -0
- package/dist/sphere.d.ts +1 -3
- package/dist/sphere.js +1 -2
- package/dist/sphere.js.map +1 -1
- package/dist/sprite.d.ts +232 -3
- package/dist/sprite.js +1 -2
- package/dist/sprite.js.map +1 -1
- package/dist/stock.d.ts +22 -10
- package/dist/stock.js +130 -109
- package/dist/stock.js.map +1 -1
- package/dist/tank.d.ts +492 -0
- package/dist/tank.js +312 -0
- package/dist/tank.js.map +1 -0
- package/dist/templates/carrier.d.ts +19 -0
- package/dist/templates/carrier.js +20 -0
- package/dist/templates/carrier.js.map +1 -0
- package/dist/templates/cube.js +1 -1
- package/dist/templates/cube.js.map +1 -1
- package/dist/templates/cylinder.js +3 -3
- package/dist/templates/cylinder.js.map +1 -1
- package/dist/templates/index.d.ts +1 -0
- package/dist/templates/index.js +9 -1
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/signal-tower.d.ts +21 -0
- package/dist/templates/signal-tower.js +22 -0
- package/dist/templates/signal-tower.js.map +1 -0
- package/dist/templates/sphere.d.ts +1 -0
- package/dist/templates/sphere.js +5 -4
- package/dist/templates/sphere.js.map +1 -1
- package/dist/templates/tank.d.ts +21 -0
- package/dist/templates/tank.js +22 -0
- package/dist/templates/tank.js.map +1 -0
- package/dist/templates/vehicle.d.ts +19 -0
- package/dist/templates/vehicle.js +20 -0
- package/dist/templates/vehicle.js.map +1 -0
- package/dist/text.js +2 -4
- package/dist/text.js.map +1 -1
- package/dist/three-container.d.ts +11 -35
- package/dist/three-container.js +128 -322
- package/dist/three-container.js.map +1 -1
- package/dist/three-controls.d.ts +101 -1
- package/dist/three-controls.js +339 -541
- package/dist/three-controls.js.map +1 -1
- package/dist/three-space.d.ts +6 -83
- package/dist/three-space.js +25 -537
- package/dist/three-space.js.map +1 -1
- package/dist/threed/index.d.ts +1 -0
- package/dist/threed/index.js +1 -0
- package/dist/threed/index.js.map +1 -1
- package/dist/threed/interfaces.d.ts +15 -0
- package/dist/threed/interfaces.js +5 -0
- package/dist/threed/interfaces.js.map +1 -0
- package/dist/threed/managers/camera-manager.d.ts +14 -0
- package/dist/threed/managers/camera-manager.js +60 -0
- package/dist/threed/managers/camera-manager.js.map +1 -0
- package/dist/threed/managers/controls-manager.d.ts +50 -0
- package/dist/threed/managers/controls-manager.js +249 -0
- package/dist/threed/managers/controls-manager.js.map +1 -0
- package/dist/threed/managers/event-manager3d.d.ts +19 -0
- package/dist/threed/managers/event-manager3d.js +76 -0
- package/dist/threed/managers/event-manager3d.js.map +1 -0
- package/dist/threed/managers/index.d.ts +7 -0
- package/dist/threed/managers/index.js +7 -0
- package/dist/threed/managers/index.js.map +1 -0
- package/dist/threed/managers/light-manager.d.ts +7 -0
- package/dist/threed/managers/light-manager.js +37 -0
- package/dist/threed/managers/light-manager.js.map +1 -0
- package/dist/threed/managers/renderer-manager.d.ts +30 -0
- package/dist/threed/managers/renderer-manager.js +120 -0
- package/dist/threed/managers/renderer-manager.js.map +1 -0
- package/dist/threed/managers/scene-manager.d.ts +15 -0
- package/dist/threed/managers/scene-manager.js +48 -0
- package/dist/threed/managers/scene-manager.js.map +1 -0
- package/dist/threed/managers/types.d.ts +36 -0
- package/dist/threed/managers/types.js +2 -0
- package/dist/threed/managers/types.js.map +1 -0
- package/dist/threed/real-object-dom-element.js +11 -3
- package/dist/threed/real-object-dom-element.js.map +1 -1
- package/dist/threed/real-object-extrude.d.ts +1 -0
- package/dist/threed/real-object-extrude.js +7 -0
- package/dist/threed/real-object-extrude.js.map +1 -1
- package/dist/threed/real-object-gltf.js +6 -2
- package/dist/threed/real-object-gltf.js.map +1 -1
- package/dist/threed/real-object-mesh.js +4 -6
- package/dist/threed/real-object-mesh.js.map +1 -1
- package/dist/threed/real-object-registry.d.ts +7 -0
- package/dist/threed/real-object-registry.js +32 -0
- package/dist/threed/real-object-registry.js.map +1 -0
- package/dist/threed/real-object-scene.js +10 -5
- package/dist/threed/real-object-scene.js.map +1 -1
- package/dist/threed/real-object-sprite-2d.js.map +1 -1
- package/dist/threed/real-object-sprite.js +2 -0
- package/dist/threed/real-object-sprite.js.map +1 -1
- package/dist/threed/real-object-text.js +2 -0
- package/dist/threed/real-object-text.js.map +1 -1
- package/dist/threed/real-object.d.ts +3 -2
- package/dist/threed/real-object.js +7 -16
- package/dist/threed/real-object.js.map +1 -1
- package/dist/threed/three-dimensional-container.d.ts +1 -2
- package/dist/threed/three-dimensional-container.js.map +1 -1
- package/dist/threed/utils/dispose.d.ts +2 -0
- package/dist/threed/utils/dispose.js +32 -0
- package/dist/threed/utils/dispose.js.map +1 -0
- package/dist/vehicle.d.ts +248 -0
- package/dist/vehicle.js +133 -0
- package/dist/vehicle.js.map +1 -0
- package/dist/visualizer.d.ts +4 -5
- package/dist/visualizer.js +15 -28
- package/dist/visualizer.js.map +1 -1
- package/dist/wall.d.ts +232 -4
- package/dist/wall.js +1 -2
- package/dist/wall.js.map +1 -1
- package/icons/carrier.png +0 -0
- package/icons/signal-tower.png +0 -0
- package/icons/tank.png +0 -0
- package/icons/vehicle.png +0 -0
- package/package.json +16 -18
package/dist/three-controls.js
CHANGED
|
@@ -9,608 +9,406 @@
|
|
|
9
9
|
* @author erich666 / http://erichaines.com
|
|
10
10
|
*/
|
|
11
11
|
import * as THREE from 'three';
|
|
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
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
scope.cameraChanged = false;
|
|
145
|
-
zoomChanged = false;
|
|
146
|
-
return true;
|
|
147
|
-
}
|
|
148
|
-
return false;
|
|
149
|
-
};
|
|
150
|
-
})();
|
|
151
|
-
this.dispose = function () { };
|
|
152
|
-
//
|
|
153
|
-
// event handlers - FSM: listen for events and reset state
|
|
154
|
-
//
|
|
155
|
-
this.onMouseDown = function (event) { };
|
|
156
|
-
this.onMouseMove = function (event) { };
|
|
157
|
-
this.onMouseUp = function (event) { };
|
|
158
|
-
this.onDragStart = function (event) {
|
|
159
|
-
if (this.enabled === false || this.enableRotate === false)
|
|
12
|
+
const EPS = 0.000001;
|
|
13
|
+
export class ThreeControls {
|
|
14
|
+
constructor(object, component) {
|
|
15
|
+
this.enabled = true;
|
|
16
|
+
this.target = new THREE.Vector3();
|
|
17
|
+
// How far you can dolly in and out (PerspectiveCamera only)
|
|
18
|
+
this.minDistance = 0;
|
|
19
|
+
this.maxDistance = Infinity;
|
|
20
|
+
// How far you can zoom in and out (OrthographicCamera only)
|
|
21
|
+
this.minZoom = 0;
|
|
22
|
+
this.maxZoom = Infinity;
|
|
23
|
+
// How far you can orbit vertically, upper and lower limits (0 to Math.PI radians)
|
|
24
|
+
this.minPolarAngle = 0;
|
|
25
|
+
this.maxPolarAngle = Math.PI;
|
|
26
|
+
// How far you can orbit horizontally (sub-interval of [-Math.PI, Math.PI])
|
|
27
|
+
this.minAzimuthAngle = -Infinity;
|
|
28
|
+
this.maxAzimuthAngle = Infinity;
|
|
29
|
+
this.enableDamping = false;
|
|
30
|
+
this.dampingFactor = 0.25;
|
|
31
|
+
this.enableZoom = true;
|
|
32
|
+
this.zoomSpeed = 1.0;
|
|
33
|
+
this.enableRotate = true;
|
|
34
|
+
this.rotateSpeed = 1.0;
|
|
35
|
+
this.enablePan = true;
|
|
36
|
+
this.keyPanSpeed = 7.0;
|
|
37
|
+
this.enableKeys = true;
|
|
38
|
+
this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 };
|
|
39
|
+
this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT };
|
|
40
|
+
this.cameraChanged = false;
|
|
41
|
+
this.lastScale = 1;
|
|
42
|
+
// Internal state
|
|
43
|
+
this._state = -1 /* State.NONE */;
|
|
44
|
+
this._spherical = new THREE.Spherical();
|
|
45
|
+
this._sphericalDelta = new THREE.Spherical();
|
|
46
|
+
this._scale = 1;
|
|
47
|
+
this._panOffset = new THREE.Vector3();
|
|
48
|
+
this._zoomChanged = false;
|
|
49
|
+
this._rotateStart = new THREE.Vector2();
|
|
50
|
+
this._rotateEnd = new THREE.Vector2();
|
|
51
|
+
this._rotateDelta = new THREE.Vector2();
|
|
52
|
+
this._panStart = new THREE.Vector2();
|
|
53
|
+
this._panEnd = new THREE.Vector2();
|
|
54
|
+
this._panDelta = new THREE.Vector2();
|
|
55
|
+
this._dollyStart = new THREE.Vector2();
|
|
56
|
+
this._dollyEnd = new THREE.Vector2();
|
|
57
|
+
this._dollyDelta = new THREE.Vector2();
|
|
58
|
+
this._startTime = null;
|
|
59
|
+
this._offsetTheta = 0;
|
|
60
|
+
// Cached objects for update()
|
|
61
|
+
this._offset = new THREE.Vector3();
|
|
62
|
+
this._lastPosition = new THREE.Vector3();
|
|
63
|
+
this._lastQuaternion = new THREE.Quaternion();
|
|
64
|
+
// Cached vectors for pan helpers
|
|
65
|
+
this._panLeftV = new THREE.Vector3();
|
|
66
|
+
this._panUpV = new THREE.Vector3();
|
|
67
|
+
this._panCalcOffset = new THREE.Vector3();
|
|
68
|
+
this.object = object;
|
|
69
|
+
this.component = component;
|
|
70
|
+
this.autoRotate =
|
|
71
|
+
(component.app && !component.app.isEditMode && component.state.autoRotate) || false;
|
|
72
|
+
this.autoRotateSpeed = component.state.rotationSpeed || 2.0;
|
|
73
|
+
this.target0 = this.target.clone();
|
|
74
|
+
this.position0 = object.position.clone();
|
|
75
|
+
this.zoom0 = object.zoom;
|
|
76
|
+
this._quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0));
|
|
77
|
+
this._quatInverse = this._quat.clone().invert();
|
|
78
|
+
this.update();
|
|
79
|
+
}
|
|
80
|
+
getPolarAngle() {
|
|
81
|
+
return this._spherical.phi;
|
|
82
|
+
}
|
|
83
|
+
getAzimuthalAngle() {
|
|
84
|
+
return this._spherical.theta;
|
|
85
|
+
}
|
|
86
|
+
saveState() {
|
|
87
|
+
this.target0.copy(this.target);
|
|
88
|
+
this.position0.copy(this.object.position);
|
|
89
|
+
this.zoom0 = this.object.zoom;
|
|
90
|
+
}
|
|
91
|
+
reset() {
|
|
92
|
+
this.target.copy(this.target0);
|
|
93
|
+
this.object.position.copy(this.position0);
|
|
94
|
+
this.object.zoom = this.zoom0;
|
|
95
|
+
this.object.updateProjectionMatrix();
|
|
96
|
+
this.update();
|
|
97
|
+
this._state = -1 /* State.NONE */;
|
|
98
|
+
}
|
|
99
|
+
update() {
|
|
100
|
+
const position = this.object.position;
|
|
101
|
+
this._offset.copy(position).sub(this.target);
|
|
102
|
+
this._offset.applyQuaternion(this._quat);
|
|
103
|
+
this._spherical.setFromVector3(this._offset);
|
|
104
|
+
if (this.autoRotate && this._state === -1 /* State.NONE */) {
|
|
105
|
+
this._rotateLeft(this._getAutoRotationAngle());
|
|
106
|
+
}
|
|
107
|
+
this._spherical.theta += this._sphericalDelta.theta;
|
|
108
|
+
this._spherical.phi += this._sphericalDelta.phi;
|
|
109
|
+
this._spherical.theta = Math.max(this.minAzimuthAngle, Math.min(this.maxAzimuthAngle, this._spherical.theta));
|
|
110
|
+
this._spherical.phi = Math.max(this.minPolarAngle, Math.min(this.maxPolarAngle, this._spherical.phi));
|
|
111
|
+
this._spherical.makeSafe();
|
|
112
|
+
this._spherical.radius *= this._scale;
|
|
113
|
+
this._spherical.radius = Math.max(this.minDistance, Math.min(this.maxDistance, this._spherical.radius));
|
|
114
|
+
this.target.add(this._panOffset);
|
|
115
|
+
this._offset.setFromSpherical(this._spherical);
|
|
116
|
+
this._offset.applyQuaternion(this._quatInverse);
|
|
117
|
+
position.copy(this.target).add(this._offset);
|
|
118
|
+
this.object.lookAt(this.target);
|
|
119
|
+
if (this.enableDamping) {
|
|
120
|
+
this._sphericalDelta.theta *= 1 - this.dampingFactor;
|
|
121
|
+
this._sphericalDelta.phi *= 1 - this.dampingFactor;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
this._sphericalDelta.set(0, 0, 0);
|
|
125
|
+
}
|
|
126
|
+
this._scale = 1;
|
|
127
|
+
this._panOffset.set(0, 0, 0);
|
|
128
|
+
if (this._zoomChanged ||
|
|
129
|
+
this._lastPosition.distanceToSquared(this.object.position) > EPS ||
|
|
130
|
+
8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > EPS) {
|
|
131
|
+
this._lastPosition.copy(this.object.position);
|
|
132
|
+
this._lastQuaternion.copy(this.object.quaternion);
|
|
133
|
+
this.component.invalidate();
|
|
134
|
+
this.cameraChanged = false;
|
|
135
|
+
this._zoomChanged = false;
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
dispose() { }
|
|
141
|
+
// Event handlers
|
|
142
|
+
onDragStart(event) {
|
|
143
|
+
if (!this.enabled || !this.enableRotate)
|
|
160
144
|
return;
|
|
161
|
-
|
|
145
|
+
this.component.stop();
|
|
162
146
|
this.autoRotate = false;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
state = STATE.ROTATE;
|
|
167
|
-
switch (state) {
|
|
168
|
-
case STATE.ROTATE:
|
|
147
|
+
this._state = event.altKey ? 2 /* State.PAN */ : 0 /* State.ROTATE */;
|
|
148
|
+
switch (this._state) {
|
|
149
|
+
case 0 /* State.ROTATE */:
|
|
169
150
|
if (this.enableRotate)
|
|
170
|
-
|
|
151
|
+
this._handleDragStartRotate(event);
|
|
171
152
|
break;
|
|
172
|
-
case
|
|
173
|
-
if (this.enableZoom)
|
|
174
|
-
handleDragStartDolly(event);
|
|
175
|
-
break;
|
|
176
|
-
case STATE.PAN:
|
|
153
|
+
case 2 /* State.PAN */:
|
|
177
154
|
if (this.enablePan)
|
|
178
|
-
|
|
155
|
+
this._handleDragStartPan(event);
|
|
179
156
|
break;
|
|
180
157
|
}
|
|
181
|
-
}
|
|
182
|
-
|
|
158
|
+
}
|
|
159
|
+
onDragMove(event) {
|
|
183
160
|
if (!this.enabled)
|
|
184
161
|
return;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
state = STATE.ROTATE;
|
|
189
|
-
switch (state) {
|
|
190
|
-
case STATE.ROTATE:
|
|
162
|
+
this._state = event.altKey ? 2 /* State.PAN */ : 0 /* State.ROTATE */;
|
|
163
|
+
switch (this._state) {
|
|
164
|
+
case 0 /* State.ROTATE */:
|
|
191
165
|
if (this.enableRotate)
|
|
192
|
-
|
|
166
|
+
this._handleDragMoveRotate(event);
|
|
193
167
|
break;
|
|
194
|
-
case
|
|
195
|
-
if (this.enableZoom)
|
|
196
|
-
handleDragMoveDolly(event);
|
|
197
|
-
break;
|
|
198
|
-
case STATE.PAN:
|
|
168
|
+
case 2 /* State.PAN */:
|
|
199
169
|
if (this.enablePan)
|
|
200
|
-
|
|
170
|
+
this._handleDragMovePan(event);
|
|
201
171
|
break;
|
|
202
172
|
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
if (this.enabled
|
|
173
|
+
}
|
|
174
|
+
onDragEnd(event) {
|
|
175
|
+
if (!this.enabled || !this.enableRotate)
|
|
206
176
|
return;
|
|
207
|
-
|
|
208
|
-
|
|
177
|
+
this._state = -1 /* State.NONE */;
|
|
178
|
+
this._startTime = null;
|
|
209
179
|
this.autoRotate = this.component.state.autoRotate || false;
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
if (this.enabled === false || this.enableKeys === false || this.enablePan === false)
|
|
180
|
+
this.component.threed_animate();
|
|
181
|
+
}
|
|
182
|
+
onKeyDown(event) {
|
|
183
|
+
if (!this.enabled || !this.enableKeys || !this.enablePan)
|
|
215
184
|
return;
|
|
216
|
-
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
if (this.enabled
|
|
185
|
+
this._handleKeyDown(event);
|
|
186
|
+
}
|
|
187
|
+
onTouchStart(event) {
|
|
188
|
+
if (!this.enabled)
|
|
220
189
|
return;
|
|
221
190
|
switch (event.touches.length) {
|
|
222
|
-
case 1:
|
|
223
|
-
if (this.enableRotate
|
|
191
|
+
case 1:
|
|
192
|
+
if (!this.enableRotate)
|
|
224
193
|
return;
|
|
225
|
-
|
|
226
|
-
|
|
194
|
+
this._handleTouchStartRotate(event);
|
|
195
|
+
this._state = 3 /* State.TOUCH_ROTATE */;
|
|
227
196
|
break;
|
|
228
|
-
case 2:
|
|
197
|
+
case 2:
|
|
229
198
|
this.lastScale = event.scale || 1;
|
|
230
|
-
if (this.enablePan
|
|
199
|
+
if (!this.enablePan)
|
|
231
200
|
return;
|
|
232
|
-
|
|
233
|
-
|
|
201
|
+
this._handleTouchStartPan(event);
|
|
202
|
+
this._state = 5 /* State.TOUCH_PAN */;
|
|
234
203
|
break;
|
|
235
|
-
// case 2: // two-fingered touch: dolly
|
|
236
|
-
// if ( this.enableZoom === false ) return;
|
|
237
|
-
// handleTouchStartDolly( event );
|
|
238
|
-
// state = STATE.TOUCH_DOLLY;
|
|
239
|
-
// break;
|
|
240
|
-
// case 3: // three-fingered touch: pan
|
|
241
|
-
// if ( this.enablePan === false ) return;
|
|
242
|
-
// handleTouchStartPan( event );
|
|
243
|
-
// state = STATE.TOUCH_PAN;
|
|
244
|
-
// break;
|
|
245
204
|
default:
|
|
246
|
-
|
|
205
|
+
this._state = -1 /* State.NONE */;
|
|
247
206
|
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
if (this.enabled
|
|
207
|
+
}
|
|
208
|
+
onTouchMove(event) {
|
|
209
|
+
if (!this.enabled)
|
|
251
210
|
return;
|
|
252
211
|
switch (event.touches.length) {
|
|
253
|
-
case 1:
|
|
254
|
-
if (this.enableRotate
|
|
212
|
+
case 1:
|
|
213
|
+
if (!this.enableRotate)
|
|
214
|
+
return;
|
|
215
|
+
if (this._state !== 3 /* State.TOUCH_ROTATE */)
|
|
255
216
|
return;
|
|
256
|
-
|
|
257
|
-
return; // is this needed?...
|
|
258
|
-
handleTouchMoveRotate(event);
|
|
217
|
+
this._handleTouchMoveRotate(event);
|
|
259
218
|
break;
|
|
260
|
-
case 2:
|
|
261
|
-
if (Math.abs(this.lastScale - event.scale || 1) > 0.05)
|
|
219
|
+
case 2:
|
|
220
|
+
if (Math.abs(this.lastScale - (event.scale || 1)) > 0.05)
|
|
262
221
|
return;
|
|
263
|
-
|
|
264
|
-
if (this.enablePan === false)
|
|
222
|
+
if (!this.enablePan)
|
|
265
223
|
return;
|
|
266
|
-
if (
|
|
267
|
-
return;
|
|
268
|
-
|
|
224
|
+
if (this._state !== 5 /* State.TOUCH_PAN */)
|
|
225
|
+
return;
|
|
226
|
+
this._handleTouchMovePan(event);
|
|
269
227
|
break;
|
|
270
|
-
// case 2: // two-fingered touch: dolly
|
|
271
|
-
// if ( this.enableZoom === false ) return;
|
|
272
|
-
// if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?...
|
|
273
|
-
// handleTouchMoveDolly( event );
|
|
274
|
-
// break;
|
|
275
|
-
// case 3: // three-fingered touch: pan
|
|
276
|
-
// if ( this.enablePan === false ) return;
|
|
277
|
-
// if ( state !== STATE.TOUCH_PAN ) return; // is this needed?...
|
|
278
|
-
// handleTouchMovePan( event );
|
|
279
|
-
// break;
|
|
280
228
|
default:
|
|
281
|
-
|
|
229
|
+
this._state = -1 /* State.NONE */;
|
|
282
230
|
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
if (this.enabled
|
|
231
|
+
}
|
|
232
|
+
onTouchEnd(event) {
|
|
233
|
+
if (!this.enabled)
|
|
286
234
|
return;
|
|
287
235
|
this.lastScale = 1;
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
this.doAutoRotate = function (autoRotate) {
|
|
293
|
-
START_TIME = null;
|
|
236
|
+
this._state = -1 /* State.NONE */;
|
|
237
|
+
}
|
|
238
|
+
doAutoRotate(autoRotate) {
|
|
239
|
+
this._startTime = null;
|
|
294
240
|
this.cameraChanged = true;
|
|
295
241
|
this.autoRotate = autoRotate;
|
|
296
242
|
this.update();
|
|
297
|
-
}
|
|
298
|
-
//
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
var startEvent = { type: 'start' };
|
|
304
|
-
var endEvent = { type: 'end' };
|
|
305
|
-
var STATE = { NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 };
|
|
306
|
-
var state = STATE.NONE;
|
|
307
|
-
var EPS = 0.000001;
|
|
308
|
-
// current position in spherical coordinates
|
|
309
|
-
var spherical = new THREE.Spherical();
|
|
310
|
-
var sphericalDelta = new THREE.Spherical();
|
|
311
|
-
var scale = 1;
|
|
312
|
-
var panOffset = new THREE.Vector3();
|
|
313
|
-
var zoomChanged = false;
|
|
314
|
-
var rotateStart = new THREE.Vector2();
|
|
315
|
-
var rotateEnd = new THREE.Vector2();
|
|
316
|
-
var rotateDelta = new THREE.Vector2();
|
|
317
|
-
var panStart = new THREE.Vector2();
|
|
318
|
-
var panEnd = new THREE.Vector2();
|
|
319
|
-
var panDelta = new THREE.Vector2();
|
|
320
|
-
var dollyStart = new THREE.Vector2();
|
|
321
|
-
var dollyEnd = new THREE.Vector2();
|
|
322
|
-
var dollyDelta = new THREE.Vector2();
|
|
323
|
-
var START_TIME = null;
|
|
324
|
-
var offsetTheta = 0;
|
|
325
|
-
function getAutoRotationAngle() {
|
|
326
|
-
if (!START_TIME) {
|
|
327
|
-
START_TIME = performance.now();
|
|
328
|
-
offsetTheta = spherical.theta;
|
|
243
|
+
}
|
|
244
|
+
// Private helpers
|
|
245
|
+
_getAutoRotationAngle() {
|
|
246
|
+
if (!this._startTime) {
|
|
247
|
+
this._startTime = performance.now();
|
|
248
|
+
this._offsetTheta = this._spherical.theta;
|
|
329
249
|
return 0;
|
|
330
250
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
// panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );
|
|
378
|
-
panUp((2 * deltaY * targetDistance) / height, scope.object.matrix);
|
|
379
|
-
// panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );
|
|
380
|
-
}
|
|
381
|
-
else if (scope.object.isOrthographicCamera) {
|
|
382
|
-
// orthographic
|
|
383
|
-
panLeft((deltaX * (scope.object.right - scope.object.left)) / scope.object.zoom / width, scope.object.matrix);
|
|
384
|
-
// panLeft( deltaX * ( scope.object.right - scope.object.left ) / element.clientWidth, scope.object.matrix );
|
|
385
|
-
panUp((deltaY * (scope.object.top - scope.object.bottom)) / scope.object.zoom / height, scope.object.matrix);
|
|
386
|
-
// panUp( deltaY * ( scope.object.top - scope.object.bottom ) / element.clientHeight, scope.object.matrix );
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
// camera neither orthographic nor perspective
|
|
390
|
-
console.warn('WARNING: ThreeControls.js encountered an unknown camera type - pan disabled.');
|
|
391
|
-
scope.enablePan = false;
|
|
392
|
-
}
|
|
393
|
-
};
|
|
394
|
-
})();
|
|
395
|
-
function dollyIn(dollyScale) {
|
|
396
|
-
if (scope.object.isPerspectiveCamera) {
|
|
397
|
-
scale /= dollyScale;
|
|
251
|
+
const elapsed = performance.now() - this._startTime;
|
|
252
|
+
const progress = elapsed / (60000 / this.autoRotateSpeed);
|
|
253
|
+
return 2 * Math.PI * progress + this._spherical.theta - this._offsetTheta;
|
|
254
|
+
}
|
|
255
|
+
_getZoomScale() {
|
|
256
|
+
return Math.pow(0.95, this.zoomSpeed);
|
|
257
|
+
}
|
|
258
|
+
_rotateLeft(angle) {
|
|
259
|
+
this._sphericalDelta.theta -= angle;
|
|
260
|
+
}
|
|
261
|
+
_rotateUp(angle) {
|
|
262
|
+
this._sphericalDelta.phi -= angle;
|
|
263
|
+
}
|
|
264
|
+
_panLeft(distance, objectMatrix) {
|
|
265
|
+
this._panLeftV.setFromMatrixColumn(objectMatrix, 0);
|
|
266
|
+
this._panLeftV.multiplyScalar(-distance);
|
|
267
|
+
this._panOffset.add(this._panLeftV);
|
|
268
|
+
}
|
|
269
|
+
_panUp(distance, objectMatrix) {
|
|
270
|
+
this._panUpV.setFromMatrixColumn(objectMatrix, 1);
|
|
271
|
+
this._panUpV.multiplyScalar(distance);
|
|
272
|
+
this._panOffset.add(this._panUpV);
|
|
273
|
+
}
|
|
274
|
+
_pan(deltaX, deltaY) {
|
|
275
|
+
const { width, height } = this.component.bounds;
|
|
276
|
+
const cam = this.object;
|
|
277
|
+
if (cam.isPerspectiveCamera) {
|
|
278
|
+
this._panCalcOffset.copy(cam.position).sub(this.target);
|
|
279
|
+
let targetDistance = this._panCalcOffset.length();
|
|
280
|
+
targetDistance *= Math.tan(((cam.fov / 2) * Math.PI) / 180.0);
|
|
281
|
+
this._panLeft((2 * deltaX * targetDistance) / height, cam.matrix);
|
|
282
|
+
this._panUp((2 * deltaY * targetDistance) / height, cam.matrix);
|
|
283
|
+
}
|
|
284
|
+
else if (cam.isOrthographicCamera) {
|
|
285
|
+
this._panLeft((deltaX * (cam.right - cam.left)) / cam.zoom / width, cam.matrix);
|
|
286
|
+
this._panUp((deltaY * (cam.top - cam.bottom)) / cam.zoom / height, cam.matrix);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
console.warn('WARNING: ThreeControls encountered an unknown camera type - pan disabled.');
|
|
290
|
+
this.enablePan = false;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
_dollyIn(dollyScale) {
|
|
294
|
+
const cam = this.object;
|
|
295
|
+
if (cam.isPerspectiveCamera) {
|
|
296
|
+
this._scale /= dollyScale;
|
|
398
297
|
}
|
|
399
|
-
else if (
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
298
|
+
else if (cam.isOrthographicCamera) {
|
|
299
|
+
cam.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, cam.zoom * dollyScale));
|
|
300
|
+
cam.updateProjectionMatrix();
|
|
301
|
+
this._zoomChanged = true;
|
|
403
302
|
}
|
|
404
303
|
else {
|
|
405
|
-
console.warn('WARNING: ThreeControls
|
|
406
|
-
|
|
304
|
+
console.warn('WARNING: ThreeControls encountered an unknown camera type - dolly/zoom disabled.');
|
|
305
|
+
this.enableZoom = false;
|
|
407
306
|
}
|
|
408
307
|
}
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
308
|
+
_dollyOut(dollyScale) {
|
|
309
|
+
const cam = this.object;
|
|
310
|
+
if (cam.isPerspectiveCamera) {
|
|
311
|
+
this._scale *= dollyScale;
|
|
412
312
|
}
|
|
413
|
-
else if (
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
313
|
+
else if (cam.isOrthographicCamera) {
|
|
314
|
+
cam.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, cam.zoom / dollyScale));
|
|
315
|
+
cam.updateProjectionMatrix();
|
|
316
|
+
this._zoomChanged = true;
|
|
417
317
|
}
|
|
418
318
|
else {
|
|
419
|
-
console.warn('WARNING: ThreeControls
|
|
420
|
-
|
|
319
|
+
console.warn('WARNING: ThreeControls encountered an unknown camera type - dolly/zoom disabled.');
|
|
320
|
+
this.enableZoom = false;
|
|
421
321
|
}
|
|
422
322
|
}
|
|
423
|
-
//
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
dollyEnd.set(event.offsetX, event.offsetY);
|
|
448
|
-
dollyDelta.subVectors(dollyEnd, dollyStart);
|
|
449
|
-
if (dollyDelta.y > 0) {
|
|
450
|
-
dollyIn(getZoomScale());
|
|
323
|
+
// Drag handlers
|
|
324
|
+
_handleDragStartRotate(event) {
|
|
325
|
+
this._rotateStart.set(event.offsetX, event.offsetY);
|
|
326
|
+
}
|
|
327
|
+
_handleDragStartDolly(event) {
|
|
328
|
+
this._dollyStart.set(event.offsetX, event.offsetY);
|
|
329
|
+
}
|
|
330
|
+
_handleDragStartPan(event) {
|
|
331
|
+
this._panStart.set(event.offsetX, event.offsetY);
|
|
332
|
+
}
|
|
333
|
+
_handleDragMoveRotate(event) {
|
|
334
|
+
this._rotateEnd.set(event.offsetX, event.offsetY);
|
|
335
|
+
this._rotateDelta.subVectors(this._rotateEnd, this._rotateStart);
|
|
336
|
+
const element = this.component;
|
|
337
|
+
this._rotateLeft(((2 * Math.PI * this._rotateDelta.x) / element.getState('width')) * this.rotateSpeed);
|
|
338
|
+
this._rotateUp(((2 * Math.PI * this._rotateDelta.y) / element.getState('height')) * this.rotateSpeed);
|
|
339
|
+
this._rotateStart.copy(this._rotateEnd);
|
|
340
|
+
this.update();
|
|
341
|
+
}
|
|
342
|
+
_handleDragMoveDolly(event) {
|
|
343
|
+
this._dollyEnd.set(event.offsetX, event.offsetY);
|
|
344
|
+
this._dollyDelta.subVectors(this._dollyEnd, this._dollyStart);
|
|
345
|
+
if (this._dollyDelta.y > 0) {
|
|
346
|
+
this._dollyIn(this._getZoomScale());
|
|
451
347
|
}
|
|
452
|
-
else if (
|
|
453
|
-
|
|
348
|
+
else if (this._dollyDelta.y < 0) {
|
|
349
|
+
this._dollyOut(this._getZoomScale());
|
|
454
350
|
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
function handleKeyDown(event) {
|
|
351
|
+
this._dollyStart.copy(this._dollyEnd);
|
|
352
|
+
this.update();
|
|
353
|
+
}
|
|
354
|
+
_handleDragMovePan(event) {
|
|
355
|
+
this._panEnd.set(event.offsetX, event.offsetY);
|
|
356
|
+
this._panDelta.subVectors(this._panEnd, this._panStart);
|
|
357
|
+
this._pan(this._panDelta.x, this._panDelta.y);
|
|
358
|
+
this._panStart.copy(this._panEnd);
|
|
359
|
+
this.update();
|
|
360
|
+
}
|
|
361
|
+
_handleKeyDown(event) {
|
|
467
362
|
switch (event.keyCode) {
|
|
468
|
-
case
|
|
469
|
-
|
|
470
|
-
|
|
363
|
+
case this.keys.UP:
|
|
364
|
+
this._pan(0, this.keyPanSpeed);
|
|
365
|
+
this.update();
|
|
471
366
|
break;
|
|
472
|
-
case
|
|
473
|
-
|
|
474
|
-
|
|
367
|
+
case this.keys.BOTTOM:
|
|
368
|
+
this._pan(0, -this.keyPanSpeed);
|
|
369
|
+
this.update();
|
|
475
370
|
break;
|
|
476
|
-
case
|
|
477
|
-
|
|
478
|
-
|
|
371
|
+
case this.keys.LEFT:
|
|
372
|
+
this._pan(this.keyPanSpeed, 0);
|
|
373
|
+
this.update();
|
|
479
374
|
break;
|
|
480
|
-
case
|
|
481
|
-
|
|
482
|
-
|
|
375
|
+
case this.keys.RIGHT:
|
|
376
|
+
this._pan(-this.keyPanSpeed, 0);
|
|
377
|
+
this.update();
|
|
483
378
|
break;
|
|
484
379
|
}
|
|
485
380
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
}
|
|
517
|
-
function handleTouchMoveDolly(event) {
|
|
518
|
-
var dx = event.touches[0].pageX - event.touches[1].pageX;
|
|
519
|
-
var dy = event.touches[0].pageY - event.touches[1].pageY;
|
|
520
|
-
var distance = Math.sqrt(dx * dx + dy * dy);
|
|
521
|
-
dollyEnd.set(0, distance);
|
|
522
|
-
dollyDelta.subVectors(dollyEnd, dollyStart);
|
|
523
|
-
if (dollyDelta.y > 0) {
|
|
524
|
-
dollyOut(getZoomScale());
|
|
525
|
-
}
|
|
526
|
-
else if (dollyDelta.y < 0) {
|
|
527
|
-
dollyIn(getZoomScale());
|
|
528
|
-
}
|
|
529
|
-
dollyStart.copy(dollyEnd);
|
|
530
|
-
scope.update();
|
|
531
|
-
}
|
|
532
|
-
function handleTouchMovePan(event) {
|
|
533
|
-
var x = event.touches[0].offsetX || event.touches[0].pageX;
|
|
534
|
-
var y = event.touches[0].offsetY || event.touches[0].pageY;
|
|
535
|
-
panEnd.set(x, y);
|
|
536
|
-
panDelta.subVectors(panEnd, panStart);
|
|
537
|
-
pan(panDelta.x, panDelta.y);
|
|
538
|
-
panStart.copy(panEnd);
|
|
539
|
-
scope.update();
|
|
540
|
-
}
|
|
541
|
-
function handleTouchEnd(event) { }
|
|
542
|
-
this.update();
|
|
543
|
-
};
|
|
544
|
-
ThreeControls.prototype = {}; //Object.create( THREE.EventDispatcher.prototype );
|
|
545
|
-
ThreeControls.prototype.constructor = ThreeControls;
|
|
546
|
-
Object.defineProperties(ThreeControls.prototype, {
|
|
547
|
-
center: {
|
|
548
|
-
get: function () {
|
|
549
|
-
console.warn('THREE.OrbitControls: .center has been renamed to .target');
|
|
550
|
-
return this.target;
|
|
551
|
-
}
|
|
552
|
-
},
|
|
553
|
-
// backward compatibility
|
|
554
|
-
noZoom: {
|
|
555
|
-
get: function () {
|
|
556
|
-
console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');
|
|
557
|
-
return !this.enableZoom;
|
|
558
|
-
},
|
|
559
|
-
set: function (value) {
|
|
560
|
-
console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.');
|
|
561
|
-
this.enableZoom = !value;
|
|
562
|
-
}
|
|
563
|
-
},
|
|
564
|
-
noRotate: {
|
|
565
|
-
get: function () {
|
|
566
|
-
console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');
|
|
567
|
-
return !this.enableRotate;
|
|
568
|
-
},
|
|
569
|
-
set: function (value) {
|
|
570
|
-
console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.');
|
|
571
|
-
this.enableRotate = !value;
|
|
572
|
-
}
|
|
573
|
-
},
|
|
574
|
-
noPan: {
|
|
575
|
-
get: function () {
|
|
576
|
-
console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.');
|
|
577
|
-
return !this.enablePan;
|
|
578
|
-
},
|
|
579
|
-
set: function (value) {
|
|
580
|
-
console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.');
|
|
581
|
-
this.enablePan = !value;
|
|
582
|
-
}
|
|
583
|
-
},
|
|
584
|
-
noKeys: {
|
|
585
|
-
get: function () {
|
|
586
|
-
console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');
|
|
587
|
-
return !this.enableKeys;
|
|
588
|
-
},
|
|
589
|
-
set: function (value) {
|
|
590
|
-
console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.');
|
|
591
|
-
this.enableKeys = !value;
|
|
592
|
-
}
|
|
593
|
-
},
|
|
594
|
-
staticMoving: {
|
|
595
|
-
get: function () {
|
|
596
|
-
console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');
|
|
597
|
-
return !this.enableDamping;
|
|
598
|
-
},
|
|
599
|
-
set: function (value) {
|
|
600
|
-
console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.');
|
|
601
|
-
this.enableDamping = !value;
|
|
602
|
-
}
|
|
603
|
-
},
|
|
604
|
-
dynamicDampingFactor: {
|
|
605
|
-
get: function () {
|
|
606
|
-
console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');
|
|
607
|
-
return this.dampingFactor;
|
|
608
|
-
},
|
|
609
|
-
set: function (value) {
|
|
610
|
-
console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.');
|
|
611
|
-
this.dampingFactor = value;
|
|
612
|
-
}
|
|
381
|
+
// Touch handlers
|
|
382
|
+
_handleTouchStartRotate(event) {
|
|
383
|
+
const x = event.touches[0].offsetX || event.touches[0].pageX;
|
|
384
|
+
const y = event.touches[0].offsetY || event.touches[0].pageY;
|
|
385
|
+
this._rotateStart.set(x, y);
|
|
386
|
+
}
|
|
387
|
+
_handleTouchStartPan(event) {
|
|
388
|
+
const x = event.touches[0].offsetX || event.touches[0].pageX;
|
|
389
|
+
const y = event.touches[0].offsetY || event.touches[0].pageY;
|
|
390
|
+
this._panStart.set(x, y);
|
|
391
|
+
}
|
|
392
|
+
_handleTouchMoveRotate(event) {
|
|
393
|
+
const x = event.touches[0].offsetX || event.touches[0].pageX;
|
|
394
|
+
const y = event.touches[0].offsetY || event.touches[0].pageY;
|
|
395
|
+
this._rotateEnd.set(x, y);
|
|
396
|
+
this._rotateDelta.subVectors(this._rotateEnd, this._rotateStart);
|
|
397
|
+
const model = this.component.model;
|
|
398
|
+
this._rotateLeft(((2 * Math.PI * this._rotateDelta.x) / model.width) * this.rotateSpeed);
|
|
399
|
+
this._rotateUp(((2 * Math.PI * this._rotateDelta.y) / model.height) * this.rotateSpeed);
|
|
400
|
+
this._rotateStart.copy(this._rotateEnd);
|
|
401
|
+
this.update();
|
|
402
|
+
}
|
|
403
|
+
_handleTouchMovePan(event) {
|
|
404
|
+
const x = event.touches[0].offsetX || event.touches[0].pageX;
|
|
405
|
+
const y = event.touches[0].offsetY || event.touches[0].pageY;
|
|
406
|
+
this._panEnd.set(x, y);
|
|
407
|
+
this._panDelta.subVectors(this._panEnd, this._panStart);
|
|
408
|
+
this._pan(this._panDelta.x, this._panDelta.y);
|
|
409
|
+
this._panStart.copy(this._panEnd);
|
|
410
|
+
this.update();
|
|
613
411
|
}
|
|
614
|
-
}
|
|
412
|
+
}
|
|
615
413
|
export default ThreeControls;
|
|
616
414
|
//# sourceMappingURL=three-controls.js.map
|