three-stdlib 2.7.2 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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);class o 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,"dispose",(()=>{this.domElement.removeEventListener("contextmenu",this.contextmenu),this.domElement.removeEventListener("mousedown",this.onMouseDown),this.domElement.removeEventListener("mousemove",this.onMouseMove),this.domElement.removeEventListener("mouseup",this.onMouseUp),window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp)})),s.default(this,"handleResize",(()=>{this.domElement instanceof Document?(this.viewHalfX=window.innerWidth/2,this.viewHalfY=window.innerHeight/2):(this.viewHalfX=this.domElement.offsetWidth/2,this.viewHalfY=this.domElement.offsetHeight/2)})),s.default(this,"onMouseDown",(t=>{if(this.domElement instanceof HTMLElement&&this.domElement.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 instanceof Document?(this.mouseX=t.pageX-this.viewHalfX,this.mouseY=t.pageY-this.viewHalfY):(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),this))),s.default(this,"targetPosition",new e.Vector3),s.default(this,"update",(t=>{if(!1===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 o=1;this.constrainVertical&&(o=Math.PI/(this.verticalMax-this.verticalMin)),this.lon-=this.mouseX*s,this.lookVertical&&(this.lat-=this.mouseY*s*o),this.lat=Math.max(-85,Math.min(85,this.lat));let a=e.MathUtils.degToRad(90-this.lat);const h=e.MathUtils.degToRad(this.lon);this.constrainVertical&&(a=e.MathUtils.mapLinear(a,0,Math.PI,this.verticalMin,this.verticalMax));const n=this.object.position;this.targetPosition.setFromSphericalCoords(1,a,h).add(n),this.object.lookAt(this.targetPosition)})),s.default(this,"contextmenu",(t=>t.preventDefault())),s.default(this,"setOrientation",(t=>{const i=t.object.quaternion;this.lookDirection.set(0,0,-1).applyQuaternion(i),this.spherical.setFromVector3(this.lookDirection),this.lat=90-e.MathUtils.radToDeg(this.spherical.phi),this.lon=e.MathUtils.radToDeg(this.spherical.theta)})),void 0===i&&(console.warn('THREE.FirstPersonControls: The second parameter "domElement" is now mandatory.'),i=document),this.object=t,this.domElement=i,this.domElement instanceof HTMLElement&&this.domElement.setAttribute("tabindex","-1"),this.handleResize(),this.setOrientation(this),this.domElement.addEventListener("contextmenu",this.contextmenu),this.domElement.addEventListener("mousemove",this.onMouseMove),this.domElement.addEventListener("mousedown",this.onMouseDown),this.domElement.addEventListener("mouseup",this.onMouseUp),window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp)}}exports.FirstPersonControls=o;
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: HTMLElement | Document;
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: HTMLElement | Document);
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 { EventDispatcher, Vector3, Spherical, MathUtils } from 'three';
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, domElement) {
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
- this.domElement.removeEventListener('contextmenu', this.contextmenu);
75
- this.domElement.removeEventListener('mousedown', this.onMouseDown);
76
- this.domElement.removeEventListener('mousemove', this.onMouseMove);
77
- this.domElement.removeEventListener('mouseup', this.onMouseUp);
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 instanceof Document) {
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
- if (this.domElement instanceof HTMLElement) {
94
- this.domElement.focus();
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 instanceof Document) {
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(this);
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 === false) return;
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
- this.targetPosition.setFromSphericalCoords(1, phi, theta).add(position);
262
- this.object.lookAt(this.targetPosition);
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", controls => {
268
- const quaternion = controls.object.quaternion;
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 = domElement;
282
-
283
- if (this.domElement instanceof HTMLElement) {
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
  }