three-stdlib 2.7.2 → 2.8.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("three");function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=i(t);
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@babel/runtime/helpers/defineProperty"),e=require("three");function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var s=i(t);const o=new e.Vector3;class a extends e.EventDispatcher{constructor(t,i){super(),s.default(this,"object",void 0),s.default(this,"domElement",void 0),s.default(this,"enabled",!0),s.default(this,"movementSpeed",1),s.default(this,"lookSpeed",.005),s.default(this,"lookVertical",!0),s.default(this,"autoForward",!1),s.default(this,"activeLook",!0),s.default(this,"heightSpeed",!1),s.default(this,"heightCoef",1),s.default(this,"heightMin",0),s.default(this,"heightMax",1),s.default(this,"constrainVertical",!1),s.default(this,"verticalMin",0),s.default(this,"verticalMax",Math.PI),s.default(this,"mouseDragOn",!1),s.default(this,"autoSpeedFactor",0),s.default(this,"mouseX",0),s.default(this,"mouseY",0),s.default(this,"moveForward",!1),s.default(this,"moveBackward",!1),s.default(this,"moveLeft",!1),s.default(this,"moveRight",!1),s.default(this,"moveUp",!1),s.default(this,"moveDown",!1),s.default(this,"viewHalfX",0),s.default(this,"viewHalfY",0),s.default(this,"lat",0),s.default(this,"lon",0),s.default(this,"lookDirection",new e.Vector3),s.default(this,"spherical",new e.Spherical),s.default(this,"target",new e.Vector3),s.default(this,"connect",(t=>{t.setAttribute("tabindex","-1"),t.style.touchAction="none",t.addEventListener("contextmenu",this.contextmenu),t.addEventListener("mousemove",this.onMouseMove),t.addEventListener("mousedown",this.onMouseDown),t.addEventListener("mouseup",this.onMouseUp),this.domElement=t,window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp),this.handleResize()})),s.default(this,"dispose",(()=>{var t,e,i,s;null===(t=this.domElement)||void 0===t||t.removeEventListener("contextmenu",this.contextmenu),null===(e=this.domElement)||void 0===e||e.removeEventListener("mousedown",this.onMouseDown),null===(i=this.domElement)||void 0===i||i.removeEventListener("mousemove",this.onMouseMove),null===(s=this.domElement)||void 0===s||s.removeEventListener("mouseup",this.onMouseUp),window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp)})),s.default(this,"handleResize",(()=>{this.domElement&&(this.viewHalfX=this.domElement.offsetWidth/2,this.viewHalfY=this.domElement.offsetHeight/2)})),s.default(this,"onMouseDown",(t=>{var e;if(null===(e=this.domElement)||void 0===e||e.focus(),this.activeLook)switch(t.button){case 0:this.moveForward=!0;break;case 2:this.moveBackward=!0}this.mouseDragOn=!0})),s.default(this,"onMouseUp",(t=>{if(this.activeLook)switch(t.button){case 0:this.moveForward=!1;break;case 2:this.moveBackward=!1}this.mouseDragOn=!1})),s.default(this,"onMouseMove",(t=>{this.domElement&&(this.mouseX=t.pageX-this.domElement.offsetLeft-this.viewHalfX,this.mouseY=t.pageY-this.domElement.offsetTop-this.viewHalfY)})),s.default(this,"onKeyDown",(t=>{switch(t.code){case"ArrowUp":case"KeyW":this.moveForward=!0;break;case"ArrowLeft":case"KeyA":this.moveLeft=!0;break;case"ArrowDown":case"KeyS":this.moveBackward=!0;break;case"ArrowRight":case"KeyD":this.moveRight=!0;break;case"KeyR":this.moveUp=!0;break;case"KeyF":this.moveDown=!0}})),s.default(this,"onKeyUp",(t=>{switch(t.code){case"ArrowUp":case"KeyW":this.moveForward=!1;break;case"ArrowLeft":case"KeyA":this.moveLeft=!1;break;case"ArrowDown":case"KeyS":this.moveBackward=!1;break;case"ArrowRight":case"KeyD":this.moveRight=!1;break;case"KeyR":this.moveUp=!1;break;case"KeyF":this.moveDown=!1}})),s.default(this,"lookAt",((t,i,s)=>(t instanceof e.Vector3?this.target.copy(t):i&&s&&this.target.set(t,i,s),this.object.lookAt(this.target),this.setOrientation(),this))),s.default(this,"update",(t=>{if(!this.enabled)return;if(this.heightSpeed){const i=e.MathUtils.clamp(this.object.position.y,this.heightMin,this.heightMax)-this.heightMin;this.autoSpeedFactor=t*(i*this.heightCoef)}else this.autoSpeedFactor=0;const i=t*this.movementSpeed;(this.moveForward||this.autoForward&&!this.moveBackward)&&this.object.translateZ(-(i+this.autoSpeedFactor)),this.moveBackward&&this.object.translateZ(i),this.moveLeft&&this.object.translateX(-i),this.moveRight&&this.object.translateX(i),this.moveUp&&this.object.translateY(i),this.moveDown&&this.object.translateY(-i);let s=t*this.lookSpeed;this.activeLook||(s=0);let a=1;this.constrainVertical&&(a=Math.PI/(this.verticalMax-this.verticalMin)),this.lon-=this.mouseX*s,this.lookVertical&&(this.lat-=this.mouseY*s*a),this.lat=Math.max(-85,Math.min(85,this.lat));let h=e.MathUtils.degToRad(90-this.lat);const n=e.MathUtils.degToRad(this.lon);this.constrainVertical&&(h=e.MathUtils.mapLinear(h,0,Math.PI,this.verticalMin,this.verticalMax));const r=this.object.position;o.setFromSphericalCoords(1,h,n).add(r),this.object.lookAt(o)})),s.default(this,"contextmenu",(t=>t.preventDefault())),s.default(this,"setOrientation",(()=>{this.lookDirection.set(0,0,-1).applyQuaternion(this.object.quaternion),this.spherical.setFromVector3(this.lookDirection),this.lat=90-e.MathUtils.radToDeg(this.spherical.phi),this.lon=e.MathUtils.radToDeg(this.spherical.theta)})),this.object=t,this.domElement=i,this.setOrientation(),i&&this.connect(i)}}exports.FirstPersonControls=a;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Vector3, EventDispatcher, Camera } from 'three';
|
|
2
|
-
declare class FirstPersonControls extends EventDispatcher {
|
|
2
|
+
export declare class FirstPersonControls extends EventDispatcher {
|
|
3
3
|
object: Camera;
|
|
4
|
-
domElement
|
|
4
|
+
domElement?: HTMLElement | null;
|
|
5
5
|
enabled: boolean;
|
|
6
6
|
movementSpeed: number;
|
|
7
7
|
lookSpeed: number;
|
|
@@ -32,7 +32,8 @@ declare class FirstPersonControls extends EventDispatcher {
|
|
|
32
32
|
private lookDirection;
|
|
33
33
|
private spherical;
|
|
34
34
|
private target;
|
|
35
|
-
constructor(object: Camera, domElement
|
|
35
|
+
constructor(object: Camera, domElement?: HTMLElement | null);
|
|
36
|
+
connect: (domElement: HTMLElement) => void;
|
|
36
37
|
dispose: () => void;
|
|
37
38
|
handleResize: () => void;
|
|
38
39
|
private onMouseDown;
|
|
@@ -41,9 +42,7 @@ declare class FirstPersonControls extends EventDispatcher {
|
|
|
41
42
|
private onKeyDown;
|
|
42
43
|
private onKeyUp;
|
|
43
44
|
lookAt: (x: Vector3 | number, y?: number | undefined, z?: number | undefined) => this;
|
|
44
|
-
private targetPosition;
|
|
45
45
|
update: (delta: number) => void;
|
|
46
46
|
private contextmenu;
|
|
47
47
|
private setOrientation;
|
|
48
48
|
}
|
|
49
|
-
export { FirstPersonControls };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
|
-
import {
|
|
2
|
+
import { Vector3, EventDispatcher, Spherical, MathUtils } from 'three';
|
|
3
3
|
|
|
4
|
+
const targetPosition = new Vector3();
|
|
4
5
|
class FirstPersonControls extends EventDispatcher {
|
|
5
6
|
// internals
|
|
6
|
-
constructor(object,
|
|
7
|
+
constructor(object, _domElement) {
|
|
7
8
|
super();
|
|
8
9
|
|
|
9
10
|
_defineProperty(this, "object", void 0);
|
|
@@ -70,29 +71,41 @@ class FirstPersonControls extends EventDispatcher {
|
|
|
70
71
|
|
|
71
72
|
_defineProperty(this, "target", new Vector3());
|
|
72
73
|
|
|
74
|
+
_defineProperty(this, "connect", domElement => {
|
|
75
|
+
domElement.setAttribute('tabindex', '-1');
|
|
76
|
+
domElement.style.touchAction = 'none';
|
|
77
|
+
domElement.addEventListener('contextmenu', this.contextmenu);
|
|
78
|
+
domElement.addEventListener('mousemove', this.onMouseMove);
|
|
79
|
+
domElement.addEventListener('mousedown', this.onMouseDown);
|
|
80
|
+
domElement.addEventListener('mouseup', this.onMouseUp);
|
|
81
|
+
this.domElement = domElement;
|
|
82
|
+
window.addEventListener('keydown', this.onKeyDown);
|
|
83
|
+
window.addEventListener('keyup', this.onKeyUp);
|
|
84
|
+
this.handleResize();
|
|
85
|
+
});
|
|
86
|
+
|
|
73
87
|
_defineProperty(this, "dispose", () => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
this.domElement.removeEventListener('
|
|
77
|
-
this.domElement.removeEventListener('
|
|
88
|
+
var _this$domElement, _this$domElement2, _this$domElement3, _this$domElement4;
|
|
89
|
+
|
|
90
|
+
(_this$domElement = this.domElement) === null || _this$domElement === void 0 ? void 0 : _this$domElement.removeEventListener('contextmenu', this.contextmenu);
|
|
91
|
+
(_this$domElement2 = this.domElement) === null || _this$domElement2 === void 0 ? void 0 : _this$domElement2.removeEventListener('mousedown', this.onMouseDown);
|
|
92
|
+
(_this$domElement3 = this.domElement) === null || _this$domElement3 === void 0 ? void 0 : _this$domElement3.removeEventListener('mousemove', this.onMouseMove);
|
|
93
|
+
(_this$domElement4 = this.domElement) === null || _this$domElement4 === void 0 ? void 0 : _this$domElement4.removeEventListener('mouseup', this.onMouseUp);
|
|
78
94
|
window.removeEventListener('keydown', this.onKeyDown);
|
|
79
95
|
window.removeEventListener('keyup', this.onKeyUp);
|
|
80
96
|
});
|
|
81
97
|
|
|
82
98
|
_defineProperty(this, "handleResize", () => {
|
|
83
|
-
if (this.domElement
|
|
84
|
-
this.viewHalfX = window.innerWidth / 2;
|
|
85
|
-
this.viewHalfY = window.innerHeight / 2;
|
|
86
|
-
} else {
|
|
99
|
+
if (this.domElement) {
|
|
87
100
|
this.viewHalfX = this.domElement.offsetWidth / 2;
|
|
88
101
|
this.viewHalfY = this.domElement.offsetHeight / 2;
|
|
89
102
|
}
|
|
90
103
|
});
|
|
91
104
|
|
|
92
105
|
_defineProperty(this, "onMouseDown", event => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
106
|
+
var _this$domElement5;
|
|
107
|
+
|
|
108
|
+
(_this$domElement5 = this.domElement) === null || _this$domElement5 === void 0 ? void 0 : _this$domElement5.focus();
|
|
96
109
|
|
|
97
110
|
if (this.activeLook) {
|
|
98
111
|
switch (event.button) {
|
|
@@ -126,10 +139,7 @@ class FirstPersonControls extends EventDispatcher {
|
|
|
126
139
|
});
|
|
127
140
|
|
|
128
141
|
_defineProperty(this, "onMouseMove", event => {
|
|
129
|
-
if (this.domElement
|
|
130
|
-
this.mouseX = event.pageX - this.viewHalfX;
|
|
131
|
-
this.mouseY = event.pageY - this.viewHalfY;
|
|
132
|
-
} else {
|
|
142
|
+
if (this.domElement) {
|
|
133
143
|
this.mouseX = event.pageX - this.domElement.offsetLeft - this.viewHalfX;
|
|
134
144
|
this.mouseY = event.pageY - this.domElement.offsetTop - this.viewHalfY;
|
|
135
145
|
}
|
|
@@ -207,14 +217,12 @@ class FirstPersonControls extends EventDispatcher {
|
|
|
207
217
|
}
|
|
208
218
|
|
|
209
219
|
this.object.lookAt(this.target);
|
|
210
|
-
this.setOrientation(
|
|
220
|
+
this.setOrientation();
|
|
211
221
|
return this;
|
|
212
222
|
});
|
|
213
223
|
|
|
214
|
-
_defineProperty(this, "targetPosition", new Vector3());
|
|
215
|
-
|
|
216
224
|
_defineProperty(this, "update", delta => {
|
|
217
|
-
if (this.enabled
|
|
225
|
+
if (!this.enabled) return;
|
|
218
226
|
|
|
219
227
|
if (this.heightSpeed) {
|
|
220
228
|
const y = MathUtils.clamp(this.object.position.y, this.heightMin, this.heightMax);
|
|
@@ -258,40 +266,23 @@ class FirstPersonControls extends EventDispatcher {
|
|
|
258
266
|
}
|
|
259
267
|
|
|
260
268
|
const position = this.object.position;
|
|
261
|
-
|
|
262
|
-
this.object.lookAt(
|
|
269
|
+
targetPosition.setFromSphericalCoords(1, phi, theta).add(position);
|
|
270
|
+
this.object.lookAt(targetPosition);
|
|
263
271
|
});
|
|
264
272
|
|
|
265
273
|
_defineProperty(this, "contextmenu", event => event.preventDefault());
|
|
266
274
|
|
|
267
|
-
_defineProperty(this, "setOrientation",
|
|
268
|
-
|
|
269
|
-
this.lookDirection.set(0, 0, -1).applyQuaternion(quaternion);
|
|
275
|
+
_defineProperty(this, "setOrientation", () => {
|
|
276
|
+
this.lookDirection.set(0, 0, -1).applyQuaternion(this.object.quaternion);
|
|
270
277
|
this.spherical.setFromVector3(this.lookDirection);
|
|
271
278
|
this.lat = 90 - MathUtils.radToDeg(this.spherical.phi);
|
|
272
279
|
this.lon = MathUtils.radToDeg(this.spherical.theta);
|
|
273
280
|
});
|
|
274
281
|
|
|
275
|
-
if (domElement === undefined) {
|
|
276
|
-
console.warn('THREE.FirstPersonControls: The second parameter "domElement" is now mandatory.');
|
|
277
|
-
domElement = document;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
282
|
this.object = object;
|
|
281
|
-
this.domElement =
|
|
282
|
-
|
|
283
|
-
if (this.
|
|
284
|
-
this.domElement.setAttribute('tabindex', '-1');
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
this.handleResize();
|
|
288
|
-
this.setOrientation(this);
|
|
289
|
-
this.domElement.addEventListener('contextmenu', this.contextmenu);
|
|
290
|
-
this.domElement.addEventListener('mousemove', this.onMouseMove);
|
|
291
|
-
this.domElement.addEventListener('mousedown', this.onMouseDown);
|
|
292
|
-
this.domElement.addEventListener('mouseup', this.onMouseUp);
|
|
293
|
-
window.addEventListener('keydown', this.onKeyDown);
|
|
294
|
-
window.addEventListener('keyup', this.onKeyUp);
|
|
283
|
+
this.domElement = _domElement;
|
|
284
|
+
this.setOrientation();
|
|
285
|
+
if (_domElement) this.connect(_domElement);
|
|
295
286
|
}
|
|
296
287
|
|
|
297
288
|
}
|