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);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
  }