three-stdlib 2.7.0 → 2.7.1
Sign up to get free protection for your applications and to get access to all the features.
- package/{Nodes-ec4e1143.js → Nodes-894ac9dc.js} +0 -0
- package/{Nodes-427f68b0.js → Nodes-af575af7.js} +0 -0
- package/controls/ArcballControls.cjs.js +1 -1
- package/controls/ArcballControls.d.ts +4 -6
- package/controls/ArcballControls.js +188 -220
- package/controls/TransformControls.cjs.js +1 -1
- package/controls/TransformControls.d.ts +2 -1
- package/controls/TransformControls.js +25 -26
- package/geometries/TeapotGeometry.js +2 -2
- package/index.cjs.js +1 -1
- package/loaders/GLTFLoader.js +1 -3
- package/loaders/NodeMaterialLoader.cjs.js +1 -1
- package/loaders/STLLoader.js +7 -7
- package/nodes/accessors/CameraNode.js +12 -12
- package/nodes/accessors/PositionNode.js +3 -3
- package/nodes/accessors/ReflectNode.js +3 -3
- package/nodes/core/FunctionNode.js +3 -3
- package/nodes/core/InputNode.js +3 -3
- package/nodes/core/Node.js +6 -6
- package/nodes/core/TempNode.js +6 -6
- package/nodes/effects/BlurNode.js +3 -3
- package/nodes/math/MathNode.js +3 -3
- package/nodes/utils/VelocityNode.js +6 -6
- package/package.json +2 -2
- package/renderers/nodes/accessors/UVNode.js +1 -3
- package/renderers/nodes/core/AttributeNode.js +1 -3
- package/renderers/nodes/core/Node.js +4 -12
- package/renderers/nodes/core/NodeBuilder.js +6 -18
- package/webxr/ARButton.js +6 -6
- package/webxr/VRButton.js +6 -6
@@ -1,5 +1,5 @@
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
2
|
-
import { Matrix4, EventDispatcher, EllipseCurve, BufferGeometry,
|
2
|
+
import { Matrix4, EventDispatcher, EllipseCurve, BufferGeometry, MathUtils, Vector3, GridHelper, LineBasicMaterial, Line, Raycaster, Vector2, Quaternion, Group, Box3, Sphere } from 'three';
|
3
3
|
|
4
4
|
//trackball state
|
5
5
|
const STATE = {
|
@@ -44,13 +44,13 @@ const _endEvent = {
|
|
44
44
|
};
|
45
45
|
/**
|
46
46
|
*
|
47
|
-
* @param {
|
48
|
-
* @param {HTMLElement} domElement Renderer's dom element
|
49
|
-
* @param {Scene} scene The scene to be rendered
|
47
|
+
* @param {CamOrthographicCamera | PerspectiveCameraera} camera Virtual camera used in the scene
|
48
|
+
* @param {HTMLElement=null} domElement Renderer's dom element
|
49
|
+
* @param {Scene=null} scene The scene to be rendered
|
50
50
|
*/
|
51
51
|
|
52
52
|
class ArcballControls extends EventDispatcher {
|
53
|
-
constructor(_camera,
|
53
|
+
constructor(_camera, _domElement = null, scene = null) {
|
54
54
|
super();
|
55
55
|
|
56
56
|
_defineProperty(this, "camera", void 0);
|
@@ -143,8 +143,6 @@ class ArcballControls extends EventDispatcher {
|
|
143
143
|
|
144
144
|
_defineProperty(this, "_downEvents", void 0);
|
145
145
|
|
146
|
-
_defineProperty(this, "_downStart", void 0);
|
147
|
-
|
148
146
|
_defineProperty(this, "_clickStart", void 0);
|
149
147
|
|
150
148
|
_defineProperty(this, "_maxDownTime", void 0);
|
@@ -215,8 +213,6 @@ class ArcballControls extends EventDispatcher {
|
|
215
213
|
|
216
214
|
_defineProperty(this, "enableZoom", void 0);
|
217
215
|
|
218
|
-
_defineProperty(this, "enableGizmos", void 0);
|
219
|
-
|
220
216
|
_defineProperty(this, "minDistance", void 0);
|
221
217
|
|
222
218
|
_defineProperty(this, "maxDistance", void 0);
|
@@ -236,7 +232,7 @@ class ArcballControls extends EventDispatcher {
|
|
236
232
|
_defineProperty(this, "onWindowResize", () => {
|
237
233
|
const scale = (this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z) / 3;
|
238
234
|
|
239
|
-
if (this.camera
|
235
|
+
if (this.camera) {
|
240
236
|
const tbRadius = this.calculateTbRadius(this.camera);
|
241
237
|
|
242
238
|
if (tbRadius !== undefined) {
|
@@ -252,10 +248,7 @@ class ArcballControls extends EventDispatcher {
|
|
252
248
|
|
253
249
|
for (const gizmo in this._gizmos.children) {
|
254
250
|
const child = this._gizmos.children[gizmo];
|
255
|
-
|
256
|
-
if (child instanceof Mesh) {
|
257
|
-
child.geometry = curveGeometry;
|
258
|
-
}
|
251
|
+
child.geometry = curveGeometry;
|
259
252
|
}
|
260
253
|
|
261
254
|
this.dispatchEvent(_changeEvent);
|
@@ -288,8 +281,6 @@ class ArcballControls extends EventDispatcher {
|
|
288
281
|
this._downValid = true;
|
289
282
|
|
290
283
|
this._downEvents.push(event);
|
291
|
-
|
292
|
-
this._downStart = performance.now();
|
293
284
|
} else {
|
294
285
|
this._downValid = false;
|
295
286
|
}
|
@@ -334,7 +325,7 @@ class ArcballControls extends EventDispatcher {
|
|
334
325
|
|
335
326
|
this._mouseOp = this.getOpFromAction(event.button, modifier);
|
336
327
|
|
337
|
-
if (this._mouseOp
|
328
|
+
if (this._mouseOp) {
|
338
329
|
window.addEventListener('pointermove', this.onPointerMove);
|
339
330
|
window.addEventListener('pointerup', this.onPointerUp); //singleStart
|
340
331
|
|
@@ -392,7 +383,7 @@ class ArcballControls extends EventDispatcher {
|
|
392
383
|
|
393
384
|
const mouseOpState = this.getOpStateFromAction(this._button, modifier);
|
394
385
|
|
395
|
-
if (mouseOpState
|
386
|
+
if (mouseOpState) {
|
396
387
|
this.onSinglePanMove(event, mouseOpState);
|
397
388
|
}
|
398
389
|
} //checkDistance
|
@@ -505,7 +496,9 @@ class ArcballControls extends EventDispatcher {
|
|
505
496
|
});
|
506
497
|
|
507
498
|
_defineProperty(this, "onWheel", event => {
|
508
|
-
|
499
|
+
var _this$camera3;
|
500
|
+
|
501
|
+
if (this.enabled && this.enableZoom && this.domElement) {
|
509
502
|
let modifier = null;
|
510
503
|
|
511
504
|
if (event.ctrlKey || event.metaKey) {
|
@@ -516,7 +509,7 @@ class ArcballControls extends EventDispatcher {
|
|
516
509
|
|
517
510
|
const mouseOp = this.getOpFromAction('WHEEL', modifier);
|
518
511
|
|
519
|
-
if (mouseOp
|
512
|
+
if (mouseOp) {
|
520
513
|
event.preventDefault();
|
521
514
|
this.dispatchEvent(_startEvent);
|
522
515
|
const notchDeltaY = 125; //distance of one notch of mouse wheel
|
@@ -541,13 +534,17 @@ class ArcballControls extends EventDispatcher {
|
|
541
534
|
}
|
542
535
|
|
543
536
|
if (this.cursorZoom && this.enablePan) {
|
537
|
+
var _this$camera, _this$camera2;
|
538
|
+
|
544
539
|
let scalePoint;
|
545
540
|
|
546
|
-
if (this.camera
|
541
|
+
if (((_this$camera = this.camera) === null || _this$camera === void 0 ? void 0 : _this$camera.type) === 'OrthographicCamera') {
|
547
542
|
var _this$unprojectOnTbPl;
|
548
543
|
|
549
544
|
scalePoint = (_this$unprojectOnTbPl = this.unprojectOnTbPlane(this.camera, event.clientX, event.clientY, this.domElement)) === null || _this$unprojectOnTbPl === void 0 ? void 0 : _this$unprojectOnTbPl.applyQuaternion(this.camera.quaternion).multiplyScalar(1 / this.camera.zoom).add(this._gizmos.position);
|
550
|
-
}
|
545
|
+
}
|
546
|
+
|
547
|
+
if (((_this$camera2 = this.camera) === null || _this$camera2 === void 0 ? void 0 : _this$camera2.type) === 'PerspectiveCamera') {
|
551
548
|
var _this$unprojectOnTbPl2;
|
552
549
|
|
553
550
|
scalePoint = (_this$unprojectOnTbPl2 = this.unprojectOnTbPlane(this.camera, event.clientX, event.clientY, this.domElement)) === null || _this$unprojectOnTbPl2 === void 0 ? void 0 : _this$unprojectOnTbPl2.applyQuaternion(this.camera.quaternion).add(this._gizmos.position);
|
@@ -558,7 +555,7 @@ class ArcballControls extends EventDispatcher {
|
|
558
555
|
this.applyTransformMatrix(this.applyScale(size, this._gizmos.position));
|
559
556
|
}
|
560
557
|
|
561
|
-
if (this._grid
|
558
|
+
if (this._grid) {
|
562
559
|
this.disposeGrid();
|
563
560
|
this.drawGrid();
|
564
561
|
}
|
@@ -569,7 +566,7 @@ class ArcballControls extends EventDispatcher {
|
|
569
566
|
break;
|
570
567
|
|
571
568
|
case 'FOV':
|
572
|
-
if (this.camera
|
569
|
+
if (((_this$camera3 = this.camera) === null || _this$camera3 === void 0 ? void 0 : _this$camera3.type) === 'PerspectiveCamera') {
|
573
570
|
this.updateTbState(STATE.FOV, true); //Vertigo effect
|
574
571
|
// fov / 2
|
575
572
|
// |\
|
@@ -617,7 +614,7 @@ class ArcballControls extends EventDispatcher {
|
|
617
614
|
this.applyTransformMatrix(this.applyScale(size, this._gizmos.position, false));
|
618
615
|
}
|
619
616
|
|
620
|
-
if (this._grid
|
617
|
+
if (this._grid) {
|
621
618
|
this.disposeGrid();
|
622
619
|
this.drawGrid();
|
623
620
|
}
|
@@ -644,15 +641,15 @@ class ArcballControls extends EventDispatcher {
|
|
644
641
|
});
|
645
642
|
|
646
643
|
_defineProperty(this, "onSinglePanStart", (event, operation) => {
|
647
|
-
|
644
|
+
var _this$camera4;
|
645
|
+
|
646
|
+
if (this.enabled && this.domElement) {
|
648
647
|
this.dispatchEvent(_startEvent);
|
649
648
|
this.setCenter(event.clientX, event.clientY);
|
650
649
|
|
651
650
|
switch (operation) {
|
652
651
|
case 'PAN':
|
653
|
-
if (!this.enablePan)
|
654
|
-
return;
|
655
|
-
}
|
652
|
+
if (!this.enablePan) return;
|
656
653
|
|
657
654
|
if (this._animationId != -1) {
|
658
655
|
cancelAnimationFrame(this._animationId);
|
@@ -662,7 +659,7 @@ class ArcballControls extends EventDispatcher {
|
|
662
659
|
this.dispatchEvent(_changeEvent);
|
663
660
|
}
|
664
661
|
|
665
|
-
if (this.camera
|
662
|
+
if (this.camera) {
|
666
663
|
this.updateTbState(STATE.PAN, true);
|
667
664
|
const rayDir = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement);
|
668
665
|
|
@@ -679,9 +676,7 @@ class ArcballControls extends EventDispatcher {
|
|
679
676
|
break;
|
680
677
|
|
681
678
|
case 'ROTATE':
|
682
|
-
if (!this.enableRotate)
|
683
|
-
return;
|
684
|
-
}
|
679
|
+
if (!this.enableRotate) return;
|
685
680
|
|
686
681
|
if (this._animationId != -1) {
|
687
682
|
cancelAnimationFrame(this._animationId);
|
@@ -689,7 +684,7 @@ class ArcballControls extends EventDispatcher {
|
|
689
684
|
this._timeStart = -1;
|
690
685
|
}
|
691
686
|
|
692
|
-
if (this.camera
|
687
|
+
if (this.camera) {
|
693
688
|
this.updateTbState(STATE.ROTATE, true);
|
694
689
|
const rayDir = this.unprojectOnTbSurface(this.camera, _center.x, _center.y, this.domElement, this._tbRadius);
|
695
690
|
|
@@ -716,30 +711,28 @@ class ArcballControls extends EventDispatcher {
|
|
716
711
|
break;
|
717
712
|
|
718
713
|
case 'FOV':
|
719
|
-
if (!
|
720
|
-
return;
|
721
|
-
}
|
714
|
+
if (!this.enableZoom) return;
|
722
715
|
|
723
|
-
if (this.
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
716
|
+
if (((_this$camera4 = this.camera) === null || _this$camera4 === void 0 ? void 0 : _this$camera4.type) === 'PerspectiveCamera') {
|
717
|
+
if (this._animationId != -1) {
|
718
|
+
cancelAnimationFrame(this._animationId);
|
719
|
+
this._animationId = -1;
|
720
|
+
this._timeStart = -1;
|
721
|
+
this.activateGizmos(false);
|
722
|
+
this.dispatchEvent(_changeEvent);
|
723
|
+
}
|
730
724
|
|
731
|
-
|
725
|
+
this.updateTbState(STATE.FOV, true);
|
732
726
|
|
733
|
-
|
727
|
+
this._startCursorPosition.setY(this.getCursorNDC(_center.x, _center.y, this.domElement).y * 0.5);
|
734
728
|
|
735
|
-
|
729
|
+
this._currentCursorPosition.copy(this._startCursorPosition);
|
730
|
+
}
|
736
731
|
|
737
732
|
break;
|
738
733
|
|
739
734
|
case 'ZOOM':
|
740
|
-
if (!this.enableZoom)
|
741
|
-
return;
|
742
|
-
}
|
735
|
+
if (!this.enableZoom) return;
|
743
736
|
|
744
737
|
if (this._animationId != -1) {
|
745
738
|
cancelAnimationFrame(this._animationId);
|
@@ -761,13 +754,15 @@ class ArcballControls extends EventDispatcher {
|
|
761
754
|
});
|
762
755
|
|
763
756
|
_defineProperty(this, "onSinglePanMove", (event, opState) => {
|
764
|
-
|
757
|
+
var _this$camera5;
|
758
|
+
|
759
|
+
if (this.enabled && this.domElement) {
|
765
760
|
const restart = opState != this._state;
|
766
761
|
this.setCenter(event.clientX, event.clientY);
|
767
762
|
|
768
763
|
switch (opState) {
|
769
764
|
case STATE.PAN:
|
770
|
-
if (this.enablePan && this.camera
|
765
|
+
if (this.enablePan && this.camera) {
|
771
766
|
if (restart) {
|
772
767
|
//switch to pan operation
|
773
768
|
this.dispatchEvent(_endEvent);
|
@@ -799,7 +794,7 @@ class ArcballControls extends EventDispatcher {
|
|
799
794
|
break;
|
800
795
|
|
801
796
|
case STATE.ROTATE:
|
802
|
-
if (this.enableRotate && this.camera
|
797
|
+
if (this.enableRotate && this.camera) {
|
803
798
|
if (restart) {
|
804
799
|
//switch to rotate operation
|
805
800
|
this.dispatchEvent(_endEvent);
|
@@ -889,7 +884,7 @@ class ArcballControls extends EventDispatcher {
|
|
889
884
|
break;
|
890
885
|
|
891
886
|
case STATE.FOV:
|
892
|
-
if (this.enableZoom && this.camera
|
887
|
+
if (this.enableZoom && ((_this$camera5 = this.camera) === null || _this$camera5 === void 0 ? void 0 : _this$camera5.type) === 'PerspectiveCamera') {
|
893
888
|
if (restart) {
|
894
889
|
//switch to fov operation
|
895
890
|
this.dispatchEvent(_endEvent);
|
@@ -998,12 +993,12 @@ class ArcballControls extends EventDispatcher {
|
|
998
993
|
});
|
999
994
|
|
1000
995
|
_defineProperty(this, "onDoubleTap", event => {
|
1001
|
-
if (this.enabled && this.enablePan && this.scene
|
996
|
+
if (this.enabled && this.enablePan && this.scene && this.camera && this.domElement) {
|
1002
997
|
this.dispatchEvent(_startEvent);
|
1003
998
|
this.setCenter(event.clientX, event.clientY);
|
1004
999
|
const hitP = this.unprojectOnObj(this.getCursorNDC(_center.x, _center.y, this.domElement), this.camera);
|
1005
1000
|
|
1006
|
-
if (hitP
|
1001
|
+
if (hitP && this.enableAnimations) {
|
1007
1002
|
const self = this;
|
1008
1003
|
|
1009
1004
|
if (this._animationId != -1) {
|
@@ -1015,7 +1010,7 @@ class ArcballControls extends EventDispatcher {
|
|
1015
1010
|
self.updateTbState(STATE.ANIMATION_FOCUS, true);
|
1016
1011
|
self.onFocusAnim(t, hitP, self._cameraMatrixState, self._gizmoMatrixState);
|
1017
1012
|
});
|
1018
|
-
} else if (hitP
|
1013
|
+
} else if (hitP && !this.enableAnimations) {
|
1019
1014
|
this.updateTbState(STATE.FOCUS, true);
|
1020
1015
|
this.focus(hitP, this.scaleFactor);
|
1021
1016
|
this.updateTbState(STATE.IDLE, false);
|
@@ -1027,7 +1022,7 @@ class ArcballControls extends EventDispatcher {
|
|
1027
1022
|
});
|
1028
1023
|
|
1029
1024
|
_defineProperty(this, "onDoublePanStart", () => {
|
1030
|
-
if (this.enabled && this.enablePan && this.camera
|
1025
|
+
if (this.enabled && this.enablePan && this.camera && this.domElement) {
|
1031
1026
|
this.dispatchEvent(_startEvent);
|
1032
1027
|
this.updateTbState(STATE.PAN, true);
|
1033
1028
|
this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
|
@@ -1044,7 +1039,7 @@ class ArcballControls extends EventDispatcher {
|
|
1044
1039
|
});
|
1045
1040
|
|
1046
1041
|
_defineProperty(this, "onDoublePanMove", () => {
|
1047
|
-
if (this.enabled && this.enablePan && this.camera
|
1042
|
+
if (this.enabled && this.enablePan && this.camera && this.domElement) {
|
1048
1043
|
this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
|
1049
1044
|
|
1050
1045
|
if (this._state != STATE.PAN) {
|
@@ -1067,14 +1062,14 @@ class ArcballControls extends EventDispatcher {
|
|
1067
1062
|
|
1068
1063
|
_defineProperty(this, "onRotateStart", () => {
|
1069
1064
|
if (this.enabled && this.enableRotate) {
|
1070
|
-
var _this$
|
1065
|
+
var _this$camera6;
|
1071
1066
|
|
1072
1067
|
this.dispatchEvent(_startEvent);
|
1073
1068
|
this.updateTbState(STATE.ZROTATE, true); //this._startFingerRotation = event.rotation;
|
1074
1069
|
|
1075
1070
|
this._startFingerRotation = this.getAngle(this._touchCurrent[1], this._touchCurrent[0]) + this.getAngle(this._touchStart[1], this._touchStart[0]);
|
1076
1071
|
this._currentFingerRotation = this._startFingerRotation;
|
1077
|
-
(_this$
|
1072
|
+
(_this$camera6 = this.camera) === null || _this$camera6 === void 0 ? void 0 : _this$camera6.getWorldDirection(this._rotationAxis); //rotation axis
|
1078
1073
|
|
1079
1074
|
if (!this.enablePan && !this.enableZoom) {
|
1080
1075
|
this.activateGizmos(true);
|
@@ -1083,7 +1078,7 @@ class ArcballControls extends EventDispatcher {
|
|
1083
1078
|
});
|
1084
1079
|
|
1085
1080
|
_defineProperty(this, "onRotateMove", () => {
|
1086
|
-
if (this.enabled && this.enableRotate && this.camera
|
1081
|
+
if (this.enabled && this.enableRotate && this.camera && this.domElement) {
|
1087
1082
|
this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
|
1088
1083
|
let rotationPoint;
|
1089
1084
|
|
@@ -1097,7 +1092,7 @@ class ArcballControls extends EventDispatcher {
|
|
1097
1092
|
|
1098
1093
|
if (!this.enablePan) {
|
1099
1094
|
rotationPoint = new Vector3().setFromMatrixPosition(this._gizmoMatrixState);
|
1100
|
-
} else if (this.camera
|
1095
|
+
} else if (this.camera) {
|
1101
1096
|
var _this$unprojectOnTbPl3;
|
1102
1097
|
|
1103
1098
|
this._v3_2.setFromMatrixPosition(this._gizmoMatrixState);
|
@@ -1132,7 +1127,7 @@ class ArcballControls extends EventDispatcher {
|
|
1132
1127
|
});
|
1133
1128
|
|
1134
1129
|
_defineProperty(this, "onPinchMove", () => {
|
1135
|
-
if (this.enabled && this.enableZoom) {
|
1130
|
+
if (this.enabled && this.enableZoom && this.domElement) {
|
1136
1131
|
this.setCenter((this._touchCurrent[0].clientX + this._touchCurrent[1].clientX) / 2, (this._touchCurrent[0].clientY + this._touchCurrent[1].clientY) / 2);
|
1137
1132
|
const minDistance = 12; //minimum distance between fingers (in css pixels)
|
1138
1133
|
|
@@ -1148,11 +1143,13 @@ class ArcballControls extends EventDispatcher {
|
|
1148
1143
|
if (!this.enablePan) {
|
1149
1144
|
scalePoint = this._gizmos.position;
|
1150
1145
|
} else {
|
1151
|
-
|
1146
|
+
var _this$camera7, _this$camera8;
|
1147
|
+
|
1148
|
+
if (((_this$camera7 = this.camera) === null || _this$camera7 === void 0 ? void 0 : _this$camera7.type) === 'OrthographicCamera') {
|
1152
1149
|
var _this$unprojectOnTbPl4;
|
1153
1150
|
|
1154
1151
|
scalePoint = (_this$unprojectOnTbPl4 = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement)) === null || _this$unprojectOnTbPl4 === void 0 ? void 0 : _this$unprojectOnTbPl4.applyQuaternion(this.camera.quaternion).multiplyScalar(1 / this.camera.zoom).add(this._gizmos.position);
|
1155
|
-
} else if (this.camera
|
1152
|
+
} else if (((_this$camera8 = this.camera) === null || _this$camera8 === void 0 ? void 0 : _this$camera8.type) === 'PerspectiveCamera') {
|
1156
1153
|
var _this$unprojectOnTbPl5;
|
1157
1154
|
|
1158
1155
|
scalePoint = (_this$unprojectOnTbPl5 = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement)) === null || _this$unprojectOnTbPl5 === void 0 ? void 0 : _this$unprojectOnTbPl5.applyQuaternion(this.camera.quaternion).add(this._gizmos.position);
|
@@ -1173,7 +1170,7 @@ class ArcballControls extends EventDispatcher {
|
|
1173
1170
|
});
|
1174
1171
|
|
1175
1172
|
_defineProperty(this, "onTriplePanStart", () => {
|
1176
|
-
if (this.enabled && this.enableZoom) {
|
1173
|
+
if (this.enabled && this.enableZoom && this.domElement) {
|
1177
1174
|
this.dispatchEvent(_startEvent);
|
1178
1175
|
this.updateTbState(STATE.SCALE, true); //const center = event.center;
|
1179
1176
|
|
@@ -1195,7 +1192,7 @@ class ArcballControls extends EventDispatcher {
|
|
1195
1192
|
});
|
1196
1193
|
|
1197
1194
|
_defineProperty(this, "onTriplePanMove", () => {
|
1198
|
-
if (this.enabled && this.enableZoom && this.camera
|
1195
|
+
if (this.enabled && this.enableZoom && this.camera && this.domElement) {
|
1199
1196
|
// fov / 2
|
1200
1197
|
// |\
|
1201
1198
|
// | \
|
@@ -1278,18 +1275,6 @@ class ArcballControls extends EventDispatcher {
|
|
1278
1275
|
this.setMouseAction('FOV', 1, 'SHIFT');
|
1279
1276
|
});
|
1280
1277
|
|
1281
|
-
_defineProperty(this, "compareMouseAction", (action1, action2) => {
|
1282
|
-
if (action1.operation == action2.operation) {
|
1283
|
-
if (action1.mouse == action2.mouse && action1.key == action2.key) {
|
1284
|
-
return true;
|
1285
|
-
} else {
|
1286
|
-
return false;
|
1287
|
-
}
|
1288
|
-
} else {
|
1289
|
-
return false;
|
1290
|
-
}
|
1291
|
-
});
|
1292
|
-
|
1293
1278
|
_defineProperty(this, "setMouseAction", (operation, mouse, key = null) => {
|
1294
1279
|
const operationInput = ['PAN', 'ROTATE', 'ZOOM', 'FOV'];
|
1295
1280
|
const mouseInput = [0, 1, 2, 'WHEEL'];
|
@@ -1344,17 +1329,6 @@ class ArcballControls extends EventDispatcher {
|
|
1344
1329
|
return true;
|
1345
1330
|
});
|
1346
1331
|
|
1347
|
-
_defineProperty(this, "unsetMouseAction", (mouse, key = null) => {
|
1348
|
-
for (let i = 0; i < this.mouseActions.length; i++) {
|
1349
|
-
if (this.mouseActions[i].mouse == mouse && this.mouseActions[i].key == key) {
|
1350
|
-
this.mouseActions.splice(i, 1);
|
1351
|
-
return true;
|
1352
|
-
}
|
1353
|
-
}
|
1354
|
-
|
1355
|
-
return false;
|
1356
|
-
});
|
1357
|
-
|
1358
1332
|
_defineProperty(this, "getOpFromAction", (mouse, key) => {
|
1359
1333
|
let action;
|
1360
1334
|
|
@@ -1366,7 +1340,7 @@ class ArcballControls extends EventDispatcher {
|
|
1366
1340
|
}
|
1367
1341
|
}
|
1368
1342
|
|
1369
|
-
if (key
|
1343
|
+
if (key) {
|
1370
1344
|
for (let i = 0; i < this.mouseActions.length; i++) {
|
1371
1345
|
action = this.mouseActions[i];
|
1372
1346
|
|
@@ -1390,7 +1364,7 @@ class ArcballControls extends EventDispatcher {
|
|
1390
1364
|
}
|
1391
1365
|
}
|
1392
1366
|
|
1393
|
-
if (key
|
1367
|
+
if (key) {
|
1394
1368
|
for (let i = 0; i < this.mouseActions.length; i++) {
|
1395
1369
|
action = this.mouseActions[i];
|
1396
1370
|
|
@@ -1446,19 +1420,19 @@ class ArcballControls extends EventDispatcher {
|
|
1446
1420
|
const factor = 0.67;
|
1447
1421
|
const distance = camera.position.distanceTo(this._gizmos.position);
|
1448
1422
|
|
1449
|
-
if (camera.type == 'PerspectiveCamera'
|
1423
|
+
if (camera.type == 'PerspectiveCamera') {
|
1450
1424
|
const halfFovV = MathUtils.DEG2RAD * camera.fov * 0.5; //vertical fov/2 in radians
|
1451
1425
|
|
1452
1426
|
const halfFovH = Math.atan(camera.aspect * Math.tan(halfFovV)); //horizontal fov/2 in radians
|
1453
1427
|
|
1454
1428
|
return Math.tan(Math.min(halfFovV, halfFovH)) * distance * factor;
|
1455
|
-
} else if (camera.type == 'OrthographicCamera'
|
1429
|
+
} else if (camera.type == 'OrthographicCamera') {
|
1456
1430
|
return Math.min(camera.top, camera.right) * factor;
|
1457
1431
|
}
|
1458
1432
|
});
|
1459
1433
|
|
1460
1434
|
_defineProperty(this, "focus", (point, size, amount = 1) => {
|
1461
|
-
if (this.camera
|
1435
|
+
if (this.camera) {
|
1462
1436
|
const focusPoint = point.clone(); //move center of camera (along with gizmos) towards point of interest
|
1463
1437
|
|
1464
1438
|
focusPoint.sub(this._gizmos.position).multiplyScalar(amount);
|
@@ -1489,19 +1463,21 @@ class ArcballControls extends EventDispatcher {
|
|
1489
1463
|
});
|
1490
1464
|
|
1491
1465
|
_defineProperty(this, "drawGrid", () => {
|
1492
|
-
if (this.scene
|
1466
|
+
if (this.scene) {
|
1467
|
+
var _this$camera9, _this$camera10;
|
1468
|
+
|
1493
1469
|
const color = 0x888888;
|
1494
1470
|
const multiplier = 3;
|
1495
1471
|
let size, divisions, maxLength, tick;
|
1496
1472
|
|
1497
|
-
if (this.camera
|
1473
|
+
if (((_this$camera9 = this.camera) === null || _this$camera9 === void 0 ? void 0 : _this$camera9.type) === 'OrthographicCamera') {
|
1498
1474
|
const width = this.camera.right - this.camera.left;
|
1499
1475
|
const height = this.camera.bottom - this.camera.top;
|
1500
1476
|
maxLength = Math.max(width, height);
|
1501
1477
|
tick = maxLength / 20;
|
1502
1478
|
size = maxLength / this.camera.zoom * multiplier;
|
1503
1479
|
divisions = size / tick * this.camera.zoom;
|
1504
|
-
} else if (this.camera
|
1480
|
+
} else if (((_this$camera10 = this.camera) === null || _this$camera10 === void 0 ? void 0 : _this$camera10.type) === 'PerspectiveCamera') {
|
1505
1481
|
const distance = this.camera.position.distanceTo(this._gizmos.position);
|
1506
1482
|
const halfFovV = MathUtils.DEG2RAD * this.camera.fov * 0.5;
|
1507
1483
|
const halfFovH = Math.atan(this.camera.aspect * Math.tan(halfFovV));
|
@@ -1511,7 +1487,7 @@ class ArcballControls extends EventDispatcher {
|
|
1511
1487
|
divisions = size / tick;
|
1512
1488
|
}
|
1513
1489
|
|
1514
|
-
if (this._grid == null && this.camera
|
1490
|
+
if (this._grid == null && this.camera) {
|
1515
1491
|
this._grid = new GridHelper(size, divisions, color, color);
|
1516
1492
|
|
1517
1493
|
this._grid.position.copy(this._gizmos.position);
|
@@ -1527,17 +1503,34 @@ class ArcballControls extends EventDispatcher {
|
|
1527
1503
|
}
|
1528
1504
|
});
|
1529
1505
|
|
1506
|
+
_defineProperty(this, "connect", domElement => {
|
1507
|
+
// https://github.com/mrdoob/three.js/issues/20575
|
1508
|
+
if (domElement === document) {
|
1509
|
+
console.error('THREE.ArcballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.');
|
1510
|
+
}
|
1511
|
+
|
1512
|
+
this.domElement = domElement; // disables touch scroll
|
1513
|
+
// touch-action needs to be defined for pointer events to work on mobile
|
1514
|
+
// https://stackoverflow.com/a/48254578
|
1515
|
+
|
1516
|
+
this.domElement.style.touchAction = 'none';
|
1517
|
+
this.domElement.addEventListener('contextmenu', this.onContextMenu);
|
1518
|
+
this.domElement.addEventListener('pointerdown', this.onPointerDown);
|
1519
|
+
this.domElement.addEventListener('pointercancel', this.onPointerCancel);
|
1520
|
+
this.domElement.addEventListener('wheel', this.onWheel);
|
1521
|
+
});
|
1522
|
+
|
1530
1523
|
_defineProperty(this, "dispose", () => {
|
1531
|
-
var _this$scene;
|
1524
|
+
var _this$domElement, _this$domElement2, _this$domElement3, _this$domElement4, _this$scene;
|
1532
1525
|
|
1533
1526
|
if (this._animationId != -1) {
|
1534
1527
|
window.cancelAnimationFrame(this._animationId);
|
1535
1528
|
}
|
1536
1529
|
|
1537
|
-
this.domElement.removeEventListener('pointerdown', this.onPointerDown);
|
1538
|
-
this.domElement.removeEventListener('pointercancel', this.onPointerCancel);
|
1539
|
-
this.domElement.removeEventListener('wheel', this.onWheel);
|
1540
|
-
this.domElement.removeEventListener('contextmenu', this.onContextMenu);
|
1530
|
+
(_this$domElement = this.domElement) === null || _this$domElement === void 0 ? void 0 : _this$domElement.removeEventListener('pointerdown', this.onPointerDown);
|
1531
|
+
(_this$domElement2 = this.domElement) === null || _this$domElement2 === void 0 ? void 0 : _this$domElement2.removeEventListener('pointercancel', this.onPointerCancel);
|
1532
|
+
(_this$domElement3 = this.domElement) === null || _this$domElement3 === void 0 ? void 0 : _this$domElement3.removeEventListener('wheel', this.onWheel);
|
1533
|
+
(_this$domElement4 = this.domElement) === null || _this$domElement4 === void 0 ? void 0 : _this$domElement4.removeEventListener('contextmenu', this.onContextMenu);
|
1541
1534
|
window.removeEventListener('pointermove', this.onPointerMove);
|
1542
1535
|
window.removeEventListener('pointerup', this.onPointerUp);
|
1543
1536
|
window.removeEventListener('resize', this.onWindowResize);
|
@@ -1547,7 +1540,7 @@ class ArcballControls extends EventDispatcher {
|
|
1547
1540
|
});
|
1548
1541
|
|
1549
1542
|
_defineProperty(this, "disposeGrid", () => {
|
1550
|
-
if (this._grid
|
1543
|
+
if (this._grid && this.scene) {
|
1551
1544
|
this.scene.remove(this._grid);
|
1552
1545
|
this._grid = null;
|
1553
1546
|
}
|
@@ -1558,29 +1551,9 @@ class ArcballControls extends EventDispatcher {
|
|
1558
1551
|
});
|
1559
1552
|
|
1560
1553
|
_defineProperty(this, "activateGizmos", isActive => {
|
1561
|
-
const
|
1562
|
-
|
1563
|
-
|
1564
|
-
|
1565
|
-
if (isActive) {
|
1566
|
-
gizmoX.material.setValues({
|
1567
|
-
opacity: 1
|
1568
|
-
});
|
1569
|
-
gizmoY.material.setValues({
|
1570
|
-
opacity: 1
|
1571
|
-
});
|
1572
|
-
gizmoZ.material.setValues({
|
1573
|
-
opacity: 1
|
1574
|
-
});
|
1575
|
-
} else {
|
1576
|
-
gizmoX.material.setValues({
|
1577
|
-
opacity: 0.6
|
1578
|
-
});
|
1579
|
-
gizmoY.material.setValues({
|
1580
|
-
opacity: 0.6
|
1581
|
-
});
|
1582
|
-
gizmoZ.material.setValues({
|
1583
|
-
opacity: 0.6
|
1554
|
+
for (const gizmo of this._gizmos.children) {
|
1555
|
+
gizmo.material.setValues({
|
1556
|
+
opacity: isActive ? 1 : 0.6
|
1584
1557
|
});
|
1585
1558
|
}
|
1586
1559
|
});
|
@@ -1596,9 +1569,11 @@ class ArcballControls extends EventDispatcher {
|
|
1596
1569
|
});
|
1597
1570
|
|
1598
1571
|
_defineProperty(this, "getCursorPosition", (cursorX, cursorY, canvas) => {
|
1572
|
+
var _this$camera11;
|
1573
|
+
|
1599
1574
|
this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas));
|
1600
1575
|
|
1601
|
-
if (this.camera
|
1576
|
+
if (((_this$camera11 = this.camera) === null || _this$camera11 === void 0 ? void 0 : _this$camera11.type) === 'OrthographicCamera') {
|
1602
1577
|
this._v2_1.x *= (this.camera.right - this.camera.left) * 0.5;
|
1603
1578
|
this._v2_1.y *= (this.camera.top - this.camera.bottom) * 0.5;
|
1604
1579
|
}
|
@@ -1607,11 +1582,11 @@ class ArcballControls extends EventDispatcher {
|
|
1607
1582
|
});
|
1608
1583
|
|
1609
1584
|
_defineProperty(this, "setCamera", camera => {
|
1610
|
-
if (camera
|
1585
|
+
if (camera) {
|
1611
1586
|
camera.lookAt(this.target);
|
1612
1587
|
camera.updateMatrix(); //setting state
|
1613
1588
|
|
1614
|
-
if ((camera === null || camera === void 0 ? void 0 : camera.type) == 'PerspectiveCamera'
|
1589
|
+
if ((camera === null || camera === void 0 ? void 0 : camera.type) == 'PerspectiveCamera') {
|
1615
1590
|
this._fov0 = camera.fov;
|
1616
1591
|
this._fovState = camera.fov;
|
1617
1592
|
}
|
@@ -1636,11 +1611,7 @@ class ArcballControls extends EventDispatcher {
|
|
1636
1611
|
this._upState.copy(camera.up);
|
1637
1612
|
|
1638
1613
|
this.camera = camera;
|
1639
|
-
|
1640
|
-
if (this.camera instanceof PerspectiveCamera || this.camera instanceof OrthographicCamera) {
|
1641
|
-
this.camera.updateProjectionMatrix();
|
1642
|
-
} //making gizmos
|
1643
|
-
|
1614
|
+
this.camera.updateProjectionMatrix(); //making gizmos
|
1644
1615
|
|
1645
1616
|
const tbRadius = this.calculateTbRadius(camera);
|
1646
1617
|
|
@@ -1689,7 +1660,7 @@ class ArcballControls extends EventDispatcher {
|
|
1689
1660
|
|
1690
1661
|
this._gizmoMatrixState.copy(this._gizmoMatrixState0);
|
1691
1662
|
|
1692
|
-
if (
|
1663
|
+
if (this.camera && this.camera.zoom != 1) {
|
1693
1664
|
//adapt gizmos size to camera zoom
|
1694
1665
|
const size = 1 / this.camera.zoom;
|
1695
1666
|
|
@@ -1798,13 +1769,15 @@ class ArcballControls extends EventDispatcher {
|
|
1798
1769
|
});
|
1799
1770
|
|
1800
1771
|
_defineProperty(this, "pan", (p0, p1, adjust = false) => {
|
1801
|
-
if (this.camera
|
1772
|
+
if (this.camera) {
|
1802
1773
|
const movement = p0.clone().sub(p1);
|
1803
1774
|
|
1804
|
-
if (this.camera
|
1775
|
+
if (this.camera.type === 'OrthographicCamera') {
|
1805
1776
|
//adjust movement amount
|
1806
1777
|
movement.multiplyScalar(1 / this.camera.zoom);
|
1807
|
-
}
|
1778
|
+
}
|
1779
|
+
|
1780
|
+
if (this.camera.type === 'PerspectiveCamera' && adjust) {
|
1808
1781
|
//adjust movement amount
|
1809
1782
|
this._v3_1.setFromMatrixPosition(this._cameraMatrixState0); //camera's initial position
|
1810
1783
|
|
@@ -1827,10 +1800,10 @@ class ArcballControls extends EventDispatcher {
|
|
1827
1800
|
});
|
1828
1801
|
|
1829
1802
|
_defineProperty(this, "reset", () => {
|
1830
|
-
if (this.camera
|
1803
|
+
if (this.camera) {
|
1831
1804
|
this.camera.zoom = this._zoom0;
|
1832
1805
|
|
1833
|
-
if (this.camera
|
1806
|
+
if (this.camera.type === 'PerspectiveCamera') {
|
1834
1807
|
this.camera.fov = this._fov0;
|
1835
1808
|
}
|
1836
1809
|
|
@@ -1883,10 +1856,10 @@ class ArcballControls extends EventDispatcher {
|
|
1883
1856
|
});
|
1884
1857
|
|
1885
1858
|
_defineProperty(this, "copyState", () => {
|
1886
|
-
|
1859
|
+
if (this.camera) {
|
1860
|
+
var _this$camera12;
|
1887
1861
|
|
1888
|
-
|
1889
|
-
state = JSON.stringify({
|
1862
|
+
const state = JSON.stringify(((_this$camera12 = this.camera) === null || _this$camera12 === void 0 ? void 0 : _this$camera12.type) === 'OrthographicCamera' ? {
|
1890
1863
|
arcballState: {
|
1891
1864
|
cameraFar: this.camera.far,
|
1892
1865
|
cameraMatrix: this.camera.matrix,
|
@@ -1895,9 +1868,7 @@ class ArcballControls extends EventDispatcher {
|
|
1895
1868
|
cameraZoom: this.camera.zoom,
|
1896
1869
|
gizmoMatrix: this._gizmos.matrix
|
1897
1870
|
}
|
1898
|
-
}
|
1899
|
-
} else if (this.camera instanceof PerspectiveCamera && this.camera.isPerspectiveCamera) {
|
1900
|
-
state = JSON.stringify({
|
1871
|
+
} : {
|
1901
1872
|
arcballState: {
|
1902
1873
|
cameraFar: this.camera.far,
|
1903
1874
|
cameraFov: this.camera.fov,
|
@@ -1908,9 +1879,6 @@ class ArcballControls extends EventDispatcher {
|
|
1908
1879
|
gizmoMatrix: this._gizmos.matrix
|
1909
1880
|
}
|
1910
1881
|
});
|
1911
|
-
}
|
1912
|
-
|
1913
|
-
if (state !== undefined) {
|
1914
1882
|
navigator.clipboard.writeText(state);
|
1915
1883
|
}
|
1916
1884
|
});
|
@@ -1923,28 +1891,29 @@ class ArcballControls extends EventDispatcher {
|
|
1923
1891
|
});
|
1924
1892
|
|
1925
1893
|
_defineProperty(this, "saveState", () => {
|
1926
|
-
if (this.camera
|
1927
|
-
this._cameraMatrixState0.copy(this.camera.matrix);
|
1894
|
+
if (!this.camera) return;
|
1928
1895
|
|
1929
|
-
|
1896
|
+
this._cameraMatrixState0.copy(this.camera.matrix);
|
1930
1897
|
|
1931
|
-
|
1932
|
-
this._farPos = this.camera.far;
|
1933
|
-
this._zoom0 = this.camera.zoom;
|
1898
|
+
this._gizmoMatrixState0.copy(this._gizmos.matrix);
|
1934
1899
|
|
1935
|
-
|
1900
|
+
this._nearPos = this.camera.near;
|
1901
|
+
this._farPos = this.camera.far;
|
1902
|
+
this._zoom0 = this.camera.zoom;
|
1936
1903
|
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1904
|
+
this._up0.copy(this.camera.up);
|
1905
|
+
|
1906
|
+
if (this.camera.type === 'PerspectiveCamera') {
|
1907
|
+
this._fov0 = this.camera.fov;
|
1940
1908
|
}
|
1941
1909
|
});
|
1942
1910
|
|
1943
1911
|
_defineProperty(this, "applyScale", (size, point, scaleGizmos = true) => {
|
1912
|
+
if (!this.camera) return;
|
1944
1913
|
const scalePoint = point.clone();
|
1945
1914
|
let sizeInverse = 1 / size;
|
1946
1915
|
|
1947
|
-
if (this.camera
|
1916
|
+
if (this.camera.type === 'OrthographicCamera') {
|
1948
1917
|
//camera zoom
|
1949
1918
|
this.camera.zoom = this._zoomState;
|
1950
1919
|
this.camera.zoom *= size; //check min and max zoom
|
@@ -1982,7 +1951,9 @@ class ArcballControls extends EventDispatcher {
|
|
1982
1951
|
|
1983
1952
|
this.setTransformationMatrices(this._m4_1, this._m4_2);
|
1984
1953
|
return _transformation;
|
1985
|
-
}
|
1954
|
+
}
|
1955
|
+
|
1956
|
+
if (this.camera.type === 'PerspectiveCamera') {
|
1986
1957
|
this._v3_1.setFromMatrixPosition(this._cameraMatrixState);
|
1987
1958
|
|
1988
1959
|
this._v3_2.setFromMatrixPosition(this._gizmoMatrixState); //move camera
|
@@ -2035,14 +2006,16 @@ class ArcballControls extends EventDispatcher {
|
|
2035
2006
|
});
|
2036
2007
|
|
2037
2008
|
_defineProperty(this, "setFov", value => {
|
2038
|
-
|
2009
|
+
var _this$camera13;
|
2010
|
+
|
2011
|
+
if (((_this$camera13 = this.camera) === null || _this$camera13 === void 0 ? void 0 : _this$camera13.type) === 'PerspectiveCamera') {
|
2039
2012
|
this.camera.fov = MathUtils.clamp(value, this.minFov, this.maxFov);
|
2040
2013
|
this.camera.updateProjectionMatrix();
|
2041
2014
|
}
|
2042
2015
|
});
|
2043
2016
|
|
2044
2017
|
_defineProperty(this, "setTarget", (x, y, z) => {
|
2045
|
-
if (this.camera
|
2018
|
+
if (this.camera) {
|
2046
2019
|
this.target.set(x, y, z);
|
2047
2020
|
|
2048
2021
|
this._gizmos.position.set(x, y, z); //for correct radius calculation
|
@@ -2085,17 +2058,16 @@ class ArcballControls extends EventDispatcher {
|
|
2085
2058
|
});
|
2086
2059
|
|
2087
2060
|
_defineProperty(this, "unprojectOnObj", (cursor, camera) => {
|
2088
|
-
if (
|
2089
|
-
|
2090
|
-
|
2091
|
-
|
2092
|
-
|
2093
|
-
|
2094
|
-
|
2095
|
-
|
2096
|
-
|
2097
|
-
|
2098
|
-
}
|
2061
|
+
if (!this.scene) return null;
|
2062
|
+
const raycaster = new Raycaster();
|
2063
|
+
raycaster.near = camera.near;
|
2064
|
+
raycaster.far = camera.far;
|
2065
|
+
raycaster.setFromCamera(cursor, camera);
|
2066
|
+
const intersect = raycaster.intersectObjects(this.scene.children, true);
|
2067
|
+
|
2068
|
+
for (let i = 0; i < intersect.length; i++) {
|
2069
|
+
if (intersect[i].object.uuid != this._gizmos.uuid && intersect[i].face) {
|
2070
|
+
return intersect[i].point.clone();
|
2099
2071
|
}
|
2100
2072
|
}
|
2101
2073
|
|
@@ -2121,7 +2093,9 @@ class ArcballControls extends EventDispatcher {
|
|
2121
2093
|
}
|
2122
2094
|
|
2123
2095
|
return this._v3_1;
|
2124
|
-
}
|
2096
|
+
}
|
2097
|
+
|
2098
|
+
if (camera.type == 'PerspectiveCamera') {
|
2125
2099
|
//unproject cursor on the near plane
|
2126
2100
|
this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas));
|
2127
2101
|
|
@@ -2216,7 +2190,9 @@ class ArcballControls extends EventDispatcher {
|
|
2216
2190
|
this._v3_1.set(this._v2_1.x, this._v2_1.y, 0);
|
2217
2191
|
|
2218
2192
|
return this._v3_1.clone();
|
2219
|
-
}
|
2193
|
+
}
|
2194
|
+
|
2195
|
+
if (camera.type == 'PerspectiveCamera') {
|
2220
2196
|
this._v2_1.copy(this.getCursorNDC(cursorX, cursorY, canvas)); //unproject cursor on the near plane
|
2221
2197
|
|
2222
2198
|
|
@@ -2271,20 +2247,21 @@ class ArcballControls extends EventDispatcher {
|
|
2271
2247
|
});
|
2272
2248
|
|
2273
2249
|
_defineProperty(this, "updateMatrixState", () => {
|
2274
|
-
if (this.camera
|
2275
|
-
//update camera and gizmos state
|
2276
|
-
this._cameraMatrixState.copy(this.camera.matrix);
|
2250
|
+
if (!this.camera) return; //update camera and gizmos state
|
2277
2251
|
|
2278
|
-
|
2252
|
+
this._cameraMatrixState.copy(this.camera.matrix);
|
2279
2253
|
|
2280
|
-
|
2281
|
-
this._cameraProjectionState.copy(this.camera.projectionMatrix);
|
2254
|
+
this._gizmoMatrixState.copy(this._gizmos.matrix);
|
2282
2255
|
|
2283
|
-
|
2284
|
-
|
2285
|
-
|
2286
|
-
|
2287
|
-
|
2256
|
+
if (this.camera.type === 'OrthographicCamera') {
|
2257
|
+
this._cameraProjectionState.copy(this.camera.projectionMatrix);
|
2258
|
+
|
2259
|
+
this.camera.updateProjectionMatrix();
|
2260
|
+
this._zoomState = this.camera.zoom;
|
2261
|
+
}
|
2262
|
+
|
2263
|
+
if (this.camera.type === 'PerspectiveCamera') {
|
2264
|
+
this._fovState = this.camera.fov;
|
2288
2265
|
}
|
2289
2266
|
});
|
2290
2267
|
|
@@ -2297,11 +2274,9 @@ class ArcballControls extends EventDispatcher {
|
|
2297
2274
|
});
|
2298
2275
|
|
2299
2276
|
_defineProperty(this, "update", () => {
|
2300
|
-
var _this$camera2;
|
2301
|
-
|
2302
2277
|
const EPS = 0.000001; // Update target and gizmos state
|
2303
2278
|
|
2304
|
-
if (!this.target.equals(this._currentTarget) && this.camera
|
2279
|
+
if (!this.target.equals(this._currentTarget) && this.camera) {
|
2305
2280
|
this._gizmos.position.set(this.target.x, this.target.y, this.target.z); //for correct radius calculation
|
2306
2281
|
|
2307
2282
|
|
@@ -2314,16 +2289,19 @@ class ArcballControls extends EventDispatcher {
|
|
2314
2289
|
this.makeGizmos(this.target, this._tbRadius);
|
2315
2290
|
|
2316
2291
|
this._currentTarget.copy(this.target);
|
2317
|
-
}
|
2292
|
+
}
|
2318
2293
|
|
2294
|
+
if (!this.camera) return; //check min/max parameters
|
2319
2295
|
|
2320
|
-
if (this.camera
|
2296
|
+
if (this.camera.type === 'OrthographicCamera') {
|
2321
2297
|
//check zoom
|
2322
2298
|
if (this.camera.zoom > this.maxZoom || this.camera.zoom < this.minZoom) {
|
2323
2299
|
const newZoom = MathUtils.clamp(this.camera.zoom, this.minZoom, this.maxZoom);
|
2324
2300
|
this.applyTransformMatrix(this.applyScale(newZoom / this.camera.zoom, this._gizmos.position, true));
|
2325
2301
|
}
|
2326
|
-
}
|
2302
|
+
}
|
2303
|
+
|
2304
|
+
if (this.camera.type === 'PerspectiveCamera') {
|
2327
2305
|
//check distance
|
2328
2306
|
const distance = this.camera.position.distanceTo(this._gizmos.position);
|
2329
2307
|
|
@@ -2356,21 +2334,18 @@ class ArcballControls extends EventDispatcher {
|
|
2356
2334
|
|
2357
2335
|
for (const gizmo in this._gizmos.children) {
|
2358
2336
|
const child = this._gizmos.children[gizmo];
|
2359
|
-
|
2360
|
-
if (child instanceof Mesh) {
|
2361
|
-
child.geometry = curveGeometry;
|
2362
|
-
}
|
2337
|
+
child.geometry = curveGeometry;
|
2363
2338
|
}
|
2364
2339
|
}
|
2365
2340
|
}
|
2366
2341
|
|
2367
|
-
|
2342
|
+
this.camera.lookAt(this._gizmos.position);
|
2368
2343
|
});
|
2369
2344
|
|
2370
2345
|
_defineProperty(this, "setStateFromJSON", json => {
|
2371
2346
|
const state = JSON.parse(json);
|
2372
2347
|
|
2373
|
-
if (state.arcballState
|
2348
|
+
if (state.arcballState && this.camera) {
|
2374
2349
|
this._cameraMatrixState.fromArray(state.arcballState.cameraMatrix.elements);
|
2375
2350
|
|
2376
2351
|
this._cameraMatrixState.decompose(this.camera.position, this.camera.quaternion, this.camera.scale);
|
@@ -2380,7 +2355,7 @@ class ArcballControls extends EventDispatcher {
|
|
2380
2355
|
this.camera.far = state.arcballState.cameraFar;
|
2381
2356
|
this.camera.zoom = state.arcballState.cameraZoom;
|
2382
2357
|
|
2383
|
-
if (this.camera
|
2358
|
+
if (this.camera.type === 'PerspectiveCamera') {
|
2384
2359
|
this.camera.fov = state.arcballState.cameraFov;
|
2385
2360
|
}
|
2386
2361
|
|
@@ -2411,7 +2386,7 @@ class ArcballControls extends EventDispatcher {
|
|
2411
2386
|
});
|
2412
2387
|
|
2413
2388
|
this.camera = null;
|
2414
|
-
this.domElement =
|
2389
|
+
this.domElement = _domElement;
|
2415
2390
|
this.scene = scene;
|
2416
2391
|
this.mouseActions = [];
|
2417
2392
|
this._mouseOp = null; //global vectors and matrices that are used in some operations to avoid creating new objects every time (e.g. every time cursor moves)
|
@@ -2469,8 +2444,6 @@ class ArcballControls extends EventDispatcher {
|
|
2469
2444
|
this._downValid = true;
|
2470
2445
|
this._nclicks = 0;
|
2471
2446
|
this._downEvents = [];
|
2472
|
-
this._downStart = 0; //pointerDown time
|
2473
|
-
|
2474
2447
|
this._clickStart = 0; //first click time
|
2475
2448
|
|
2476
2449
|
this._maxDownTime = 250;
|
@@ -2530,7 +2503,6 @@ class ArcballControls extends EventDispatcher {
|
|
2530
2503
|
this.enablePan = true;
|
2531
2504
|
this.enableRotate = true;
|
2532
2505
|
this.enableZoom = true;
|
2533
|
-
this.enableGizmos = true;
|
2534
2506
|
this.minDistance = 0;
|
2535
2507
|
this.maxDistance = Infinity;
|
2536
2508
|
this.minZoom = 0;
|
@@ -2543,17 +2515,13 @@ class ArcballControls extends EventDispatcher {
|
|
2543
2515
|
this._state = STATE.IDLE;
|
2544
2516
|
this.setCamera(_camera);
|
2545
2517
|
|
2546
|
-
if (this.scene
|
2518
|
+
if (this.scene) {
|
2547
2519
|
this.scene.add(this._gizmos);
|
2548
2520
|
}
|
2549
2521
|
|
2550
|
-
this.domElement.style.touchAction = 'none';
|
2551
2522
|
this._devPxRatio = window.devicePixelRatio;
|
2552
2523
|
this.initializeMouseActions();
|
2553
|
-
this.domElement.
|
2554
|
-
this.domElement.addEventListener('wheel', this.onWheel);
|
2555
|
-
this.domElement.addEventListener('pointerdown', this.onPointerDown);
|
2556
|
-
this.domElement.addEventListener('pointercancel', this.onPointerCancel);
|
2524
|
+
if (this.domElement) this.connect(this.domElement);
|
2557
2525
|
window.addEventListener('keydown', this.onKeyDown);
|
2558
2526
|
window.addEventListener('resize', this.onWindowResize);
|
2559
2527
|
} //listeners
|
@@ -2564,7 +2532,7 @@ class ArcballControls extends EventDispatcher {
|
|
2564
2532
|
* @param {Object} transformation Object containing matrices to apply to camera and gizmos
|
2565
2533
|
*/
|
2566
2534
|
applyTransformMatrix(transformation) {
|
2567
|
-
if (
|
2535
|
+
if (transformation !== null && transformation !== void 0 && transformation.camera && this.camera) {
|
2568
2536
|
this._m4_1.copy(this._cameraMatrixState).premultiply(transformation.camera);
|
2569
2537
|
|
2570
2538
|
this._m4_1.decompose(this.camera.position, this.camera.quaternion, this.camera.scale);
|
@@ -2576,7 +2544,7 @@ class ArcballControls extends EventDispatcher {
|
|
2576
2544
|
}
|
2577
2545
|
}
|
2578
2546
|
|
2579
|
-
if (
|
2547
|
+
if (transformation !== null && transformation !== void 0 && transformation.gizmos) {
|
2580
2548
|
this._m4_1.copy(this._gizmoMatrixState).premultiply(transformation.gizmos);
|
2581
2549
|
|
2582
2550
|
this._m4_1.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale);
|
@@ -2584,7 +2552,7 @@ class ArcballControls extends EventDispatcher {
|
|
2584
2552
|
this._gizmos.updateMatrix();
|
2585
2553
|
}
|
2586
2554
|
|
2587
|
-
if ((this._state == STATE.SCALE || this._state == STATE.FOCUS || this._state == STATE.ANIMATION_FOCUS) &&
|
2555
|
+
if ((this._state == STATE.SCALE || this._state == STATE.FOCUS || this._state == STATE.ANIMATION_FOCUS) && this.camera) {
|
2588
2556
|
const tbRadius = this.calculateTbRadius(this.camera);
|
2589
2557
|
|
2590
2558
|
if (tbRadius !== undefined) {
|
@@ -2655,8 +2623,8 @@ class ArcballControls extends EventDispatcher {
|
|
2655
2623
|
* @param {Matrix4} gizmos Transformation to be applied to gizmos
|
2656
2624
|
*/
|
2657
2625
|
setTransformationMatrices(camera = null, gizmos = null) {
|
2658
|
-
if (camera
|
2659
|
-
if (_transformation.camera
|
2626
|
+
if (camera) {
|
2627
|
+
if (_transformation.camera) {
|
2660
2628
|
_transformation.camera.copy(camera);
|
2661
2629
|
} else {
|
2662
2630
|
_transformation.camera = camera.clone();
|
@@ -2665,8 +2633,8 @@ class ArcballControls extends EventDispatcher {
|
|
2665
2633
|
_transformation.camera = null;
|
2666
2634
|
}
|
2667
2635
|
|
2668
|
-
if (gizmos
|
2669
|
-
if (_transformation.gizmos
|
2636
|
+
if (gizmos) {
|
2637
|
+
if (_transformation.gizmos) {
|
2670
2638
|
_transformation.gizmos.copy(gizmos);
|
2671
2639
|
} else {
|
2672
2640
|
_transformation.gizmos = gizmos.clone();
|