three-stdlib 2.35.16 → 2.36.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.
@@ -13,6 +13,7 @@ const _vector = /* @__PURE__ */ new THREE.Vector3();
13
13
  const _changeEvent = { type: "change" };
14
14
  const _lockEvent = { type: "lock" };
15
15
  const _unlockEvent = { type: "unlock" };
16
+ const _MOUSE_SENSITIVITY = 2e-3;
16
17
  const _PI_2 = Math.PI / 2;
17
18
  class PointerLockControls extends EventDispatcher.EventDispatcher {
18
19
  constructor(camera, domElement) {
@@ -27,8 +28,8 @@ class PointerLockControls extends EventDispatcher.EventDispatcher {
27
28
  if (!this.domElement || this.isLocked === false)
28
29
  return;
29
30
  _euler.setFromQuaternion(this.camera.quaternion);
30
- _euler.y -= event.movementX * 2e-3 * this.pointerSpeed;
31
- _euler.x -= event.movementY * 2e-3 * this.pointerSpeed;
31
+ _euler.y -= event.movementX * _MOUSE_SENSITIVITY * this.pointerSpeed;
32
+ _euler.x -= event.movementY * _MOUSE_SENSITIVITY * this.pointerSpeed;
32
33
  _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x));
33
34
  this.camera.quaternion.setFromEuler(_euler);
34
35
  this.dispatchEvent(_changeEvent);
@@ -1 +1 @@
1
- {"version":3,"file":"PointerLockControls.cjs","sources":["../../src/controls/PointerLockControls.ts"],"sourcesContent":["import { Euler, Camera, Vector3 } from 'three'\nimport { EventDispatcher } from './EventDispatcher'\n\nconst _euler = /* @__PURE__ */ new Euler(0, 0, 0, 'YXZ')\nconst _vector = /* @__PURE__ */ new Vector3()\nconst _changeEvent = { type: 'change' }\nconst _lockEvent = { type: 'lock' }\nconst _unlockEvent = { type: 'unlock' }\nconst _PI_2 = Math.PI / 2\n\nexport interface PointerLockControlsEventMap {\n /**\n * Fires when the user moves the mouse.\n */\n change: {}\n\n /**\n * Fires when the pointer lock status is \"locked\" (in other words: the mouse is captured).\n */\n lock: {}\n\n /**\n * Fires when the pointer lock status is \"unlocked\" (in other words: the mouse is not captured anymore).\n */\n unlock: {}\n}\n\nclass PointerLockControls extends EventDispatcher<PointerLockControlsEventMap> {\n public camera: Camera\n public domElement?: HTMLElement\n public isLocked: boolean\n public minPolarAngle: number\n public maxPolarAngle: number\n public pointerSpeed: number\n\n constructor(camera: Camera, domElement?: HTMLElement) {\n super()\n\n this.camera = camera\n this.domElement = domElement\n this.isLocked = false\n\n // Set to constrain the pitch of the camera\n // Range is 0 to Math.PI radians\n this.minPolarAngle = 0 // radians\n this.maxPolarAngle = Math.PI // radians\n\n this.pointerSpeed = 1.0\n if (domElement) this.connect(domElement)\n }\n\n private onMouseMove = (event: MouseEvent): void => {\n if (!this.domElement || this.isLocked === false) return\n _euler.setFromQuaternion(this.camera.quaternion)\n _euler.y -= event.movementX * 0.002 * this.pointerSpeed\n _euler.x -= event.movementY * 0.002 * this.pointerSpeed\n _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x))\n this.camera.quaternion.setFromEuler(_euler)\n // @ts-ignore\n this.dispatchEvent(_changeEvent)\n }\n\n private onPointerlockChange = (): void => {\n if (!this.domElement) return\n if (this.domElement.ownerDocument.pointerLockElement === this.domElement) {\n // @ts-ignore\n this.dispatchEvent(_lockEvent)\n this.isLocked = true\n } else {\n // @ts-ignore\n this.dispatchEvent(_unlockEvent)\n this.isLocked = false\n }\n }\n\n private onPointerlockError = (): void => {\n console.error('THREE.PointerLockControls: Unable to use Pointer Lock API')\n }\n\n public connect = (domElement: HTMLElement): void => {\n this.domElement = domElement || this.domElement\n if (!this.domElement) return\n this.domElement.ownerDocument.addEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.addEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.addEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public disconnect = (): void => {\n if (!this.domElement) return\n this.domElement.ownerDocument.removeEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.removeEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.removeEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public dispose = (): void => {\n this.disconnect()\n }\n\n public getObject = (): Camera => {\n // retaining this method for backward compatibility\n return this.camera\n }\n\n private direction = new Vector3(0, 0, -1)\n public getDirection = (v: Vector3): Vector3 => {\n return v.copy(this.direction).applyQuaternion(this.camera.quaternion)\n }\n\n public moveForward = (distance: number): void => {\n // move forward parallel to the xz-plane\n // assumes camera.up is y-up\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n _vector.crossVectors(this.camera.up, _vector)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public moveRight = (distance: number): void => {\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public lock = (): void => {\n if (this.domElement) this.domElement.requestPointerLock()\n }\n\n public unlock = (): void => {\n if (this.domElement) this.domElement.ownerDocument.exitPointerLock()\n }\n}\n\nexport { PointerLockControls }\n"],"names":["Euler","Vector3","EventDispatcher"],"mappings":"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"}
1
+ {"version":3,"file":"PointerLockControls.cjs","sources":["../../src/controls/PointerLockControls.ts"],"sourcesContent":["import { Euler, Camera, Vector3 } from 'three'\nimport { EventDispatcher } from './EventDispatcher'\n\nconst _euler = /* @__PURE__ */ new Euler(0, 0, 0, 'YXZ')\nconst _vector = /* @__PURE__ */ new Vector3()\nconst _changeEvent = { type: 'change' }\nconst _lockEvent = { type: 'lock' }\nconst _unlockEvent = { type: 'unlock' }\nconst _MOUSE_SENSITIVITY = 0.002\nconst _PI_2 = Math.PI / 2\n\nexport interface PointerLockControlsEventMap {\n /**\n * Fires when the user moves the mouse.\n */\n change: {}\n\n /**\n * Fires when the pointer lock status is \"locked\" (in other words: the mouse is captured).\n */\n lock: {}\n\n /**\n * Fires when the pointer lock status is \"unlocked\" (in other words: the mouse is not captured anymore).\n */\n unlock: {}\n}\n\nclass PointerLockControls extends EventDispatcher<PointerLockControlsEventMap> {\n public camera: Camera\n public domElement?: HTMLElement\n public isLocked: boolean\n public minPolarAngle: number\n public maxPolarAngle: number\n public pointerSpeed: number\n\n constructor(camera: Camera, domElement?: HTMLElement) {\n super()\n\n this.camera = camera\n this.domElement = domElement\n this.isLocked = false\n\n // Set to constrain the pitch of the camera\n // Range is 0 to Math.PI radians\n this.minPolarAngle = 0 // radians\n this.maxPolarAngle = Math.PI // radians\n\n this.pointerSpeed = 1.0\n if (domElement) this.connect(domElement)\n }\n\n private onMouseMove = (event: MouseEvent): void => {\n if (!this.domElement || this.isLocked === false) return\n _euler.setFromQuaternion(this.camera.quaternion)\n _euler.y -= event.movementX * _MOUSE_SENSITIVITY * this.pointerSpeed\n _euler.x -= event.movementY * _MOUSE_SENSITIVITY * this.pointerSpeed\n _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x))\n this.camera.quaternion.setFromEuler(_euler)\n // @ts-ignore\n this.dispatchEvent(_changeEvent)\n }\n\n private onPointerlockChange = (): void => {\n if (!this.domElement) return\n if (this.domElement.ownerDocument.pointerLockElement === this.domElement) {\n // @ts-ignore\n this.dispatchEvent(_lockEvent)\n this.isLocked = true\n } else {\n // @ts-ignore\n this.dispatchEvent(_unlockEvent)\n this.isLocked = false\n }\n }\n\n private onPointerlockError = (): void => {\n console.error('THREE.PointerLockControls: Unable to use Pointer Lock API')\n }\n\n public connect = (domElement: HTMLElement): void => {\n this.domElement = domElement || this.domElement\n if (!this.domElement) return\n this.domElement.ownerDocument.addEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.addEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.addEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public disconnect = (): void => {\n if (!this.domElement) return\n this.domElement.ownerDocument.removeEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.removeEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.removeEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public dispose = (): void => {\n this.disconnect()\n }\n\n public getObject = (): Camera => {\n // retaining this method for backward compatibility\n return this.camera\n }\n\n private direction = new Vector3(0, 0, -1)\n public getDirection = (v: Vector3): Vector3 => {\n return v.copy(this.direction).applyQuaternion(this.camera.quaternion)\n }\n\n public moveForward = (distance: number): void => {\n // move forward parallel to the xz-plane\n // assumes camera.up is y-up\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n _vector.crossVectors(this.camera.up, _vector)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public moveRight = (distance: number): void => {\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public lock = (): void => {\n if (this.domElement) this.domElement.requestPointerLock()\n }\n\n public unlock = (): void => {\n if (this.domElement) this.domElement.ownerDocument.exitPointerLock()\n }\n}\n\nexport { PointerLockControls }\n"],"names":["Euler","Vector3","EventDispatcher"],"mappings":"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"}
@@ -11,6 +11,7 @@ const _vector = /* @__PURE__ */ new Vector3();
11
11
  const _changeEvent = { type: "change" };
12
12
  const _lockEvent = { type: "lock" };
13
13
  const _unlockEvent = { type: "unlock" };
14
+ const _MOUSE_SENSITIVITY = 2e-3;
14
15
  const _PI_2 = Math.PI / 2;
15
16
  class PointerLockControls extends EventDispatcher {
16
17
  constructor(camera, domElement) {
@@ -25,8 +26,8 @@ class PointerLockControls extends EventDispatcher {
25
26
  if (!this.domElement || this.isLocked === false)
26
27
  return;
27
28
  _euler.setFromQuaternion(this.camera.quaternion);
28
- _euler.y -= event.movementX * 2e-3 * this.pointerSpeed;
29
- _euler.x -= event.movementY * 2e-3 * this.pointerSpeed;
29
+ _euler.y -= event.movementX * _MOUSE_SENSITIVITY * this.pointerSpeed;
30
+ _euler.x -= event.movementY * _MOUSE_SENSITIVITY * this.pointerSpeed;
30
31
  _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x));
31
32
  this.camera.quaternion.setFromEuler(_euler);
32
33
  this.dispatchEvent(_changeEvent);
@@ -1 +1 @@
1
- {"version":3,"file":"PointerLockControls.js","sources":["../../src/controls/PointerLockControls.ts"],"sourcesContent":["import { Euler, Camera, Vector3 } from 'three'\nimport { EventDispatcher } from './EventDispatcher'\n\nconst _euler = /* @__PURE__ */ new Euler(0, 0, 0, 'YXZ')\nconst _vector = /* @__PURE__ */ new Vector3()\nconst _changeEvent = { type: 'change' }\nconst _lockEvent = { type: 'lock' }\nconst _unlockEvent = { type: 'unlock' }\nconst _PI_2 = Math.PI / 2\n\nexport interface PointerLockControlsEventMap {\n /**\n * Fires when the user moves the mouse.\n */\n change: {}\n\n /**\n * Fires when the pointer lock status is \"locked\" (in other words: the mouse is captured).\n */\n lock: {}\n\n /**\n * Fires when the pointer lock status is \"unlocked\" (in other words: the mouse is not captured anymore).\n */\n unlock: {}\n}\n\nclass PointerLockControls extends EventDispatcher<PointerLockControlsEventMap> {\n public camera: Camera\n public domElement?: HTMLElement\n public isLocked: boolean\n public minPolarAngle: number\n public maxPolarAngle: number\n public pointerSpeed: number\n\n constructor(camera: Camera, domElement?: HTMLElement) {\n super()\n\n this.camera = camera\n this.domElement = domElement\n this.isLocked = false\n\n // Set to constrain the pitch of the camera\n // Range is 0 to Math.PI radians\n this.minPolarAngle = 0 // radians\n this.maxPolarAngle = Math.PI // radians\n\n this.pointerSpeed = 1.0\n if (domElement) this.connect(domElement)\n }\n\n private onMouseMove = (event: MouseEvent): void => {\n if (!this.domElement || this.isLocked === false) return\n _euler.setFromQuaternion(this.camera.quaternion)\n _euler.y -= event.movementX * 0.002 * this.pointerSpeed\n _euler.x -= event.movementY * 0.002 * this.pointerSpeed\n _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x))\n this.camera.quaternion.setFromEuler(_euler)\n // @ts-ignore\n this.dispatchEvent(_changeEvent)\n }\n\n private onPointerlockChange = (): void => {\n if (!this.domElement) return\n if (this.domElement.ownerDocument.pointerLockElement === this.domElement) {\n // @ts-ignore\n this.dispatchEvent(_lockEvent)\n this.isLocked = true\n } else {\n // @ts-ignore\n this.dispatchEvent(_unlockEvent)\n this.isLocked = false\n }\n }\n\n private onPointerlockError = (): void => {\n console.error('THREE.PointerLockControls: Unable to use Pointer Lock API')\n }\n\n public connect = (domElement: HTMLElement): void => {\n this.domElement = domElement || this.domElement\n if (!this.domElement) return\n this.domElement.ownerDocument.addEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.addEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.addEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public disconnect = (): void => {\n if (!this.domElement) return\n this.domElement.ownerDocument.removeEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.removeEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.removeEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public dispose = (): void => {\n this.disconnect()\n }\n\n public getObject = (): Camera => {\n // retaining this method for backward compatibility\n return this.camera\n }\n\n private direction = new Vector3(0, 0, -1)\n public getDirection = (v: Vector3): Vector3 => {\n return v.copy(this.direction).applyQuaternion(this.camera.quaternion)\n }\n\n public moveForward = (distance: number): void => {\n // move forward parallel to the xz-plane\n // assumes camera.up is y-up\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n _vector.crossVectors(this.camera.up, _vector)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public moveRight = (distance: number): void => {\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public lock = (): void => {\n if (this.domElement) this.domElement.requestPointerLock()\n }\n\n public unlock = (): void => {\n if (this.domElement) this.domElement.ownerDocument.exitPointerLock()\n }\n}\n\nexport { PointerLockControls }\n"],"names":[],"mappings":";;;;;;;;AAGA,MAAM,SAA6B,oBAAA,MAAM,GAAG,GAAG,GAAG,KAAK;AACvD,MAAM,8BAA8B;AACpC,MAAM,eAAe,EAAE,MAAM;AAC7B,MAAM,aAAa,EAAE,MAAM;AAC3B,MAAM,eAAe,EAAE,MAAM;AAC7B,MAAM,QAAQ,KAAK,KAAK;AAmBxB,MAAM,4BAA4B,gBAA6C;AAAA,EAQ7E,YAAY,QAAgB,YAA0B;AAC9C;AARD;AACA;AACA;AACA;AACA;AACA;AAkBC,uCAAc,CAAC,UAA4B;AACjD,UAAI,CAAC,KAAK,cAAc,KAAK,aAAa;AAAO;AAC1C,aAAA,kBAAkB,KAAK,OAAO,UAAU;AAC/C,aAAO,KAAK,MAAM,YAAY,OAAQ,KAAK;AAC3C,aAAO,KAAK,MAAM,YAAY,OAAQ,KAAK;AAC3C,aAAO,IAAI,KAAK,IAAI,QAAQ,KAAK,eAAe,KAAK,IAAI,QAAQ,KAAK,eAAe,OAAO,CAAC,CAAC;AACzF,WAAA,OAAO,WAAW,aAAa,MAAM;AAE1C,WAAK,cAAc,YAAY;AAAA,IAAA;AAGzB,+CAAsB,MAAY;AACxC,UAAI,CAAC,KAAK;AAAY;AACtB,UAAI,KAAK,WAAW,cAAc,uBAAuB,KAAK,YAAY;AAExE,aAAK,cAAc,UAAU;AAC7B,aAAK,WAAW;AAAA,MAAA,OACX;AAEL,aAAK,cAAc,YAAY;AAC/B,aAAK,WAAW;AAAA,MAClB;AAAA,IAAA;AAGM,8CAAqB,MAAY;AACvC,cAAQ,MAAM,2DAA2D;AAAA,IAAA;AAGpE,mCAAU,CAAC,eAAkC;AAC7C,WAAA,aAAa,cAAc,KAAK;AACrC,UAAI,CAAC,KAAK;AAAY;AACtB,WAAK,WAAW,cAAc,iBAAiB,aAAa,KAAK,WAAW;AAC5E,WAAK,WAAW,cAAc,iBAAiB,qBAAqB,KAAK,mBAAmB;AAC5F,WAAK,WAAW,cAAc,iBAAiB,oBAAoB,KAAK,kBAAkB;AAAA,IAAA;AAGrF,sCAAa,MAAY;AAC9B,UAAI,CAAC,KAAK;AAAY;AACtB,WAAK,WAAW,cAAc,oBAAoB,aAAa,KAAK,WAAW;AAC/E,WAAK,WAAW,cAAc,oBAAoB,qBAAqB,KAAK,mBAAmB;AAC/F,WAAK,WAAW,cAAc,oBAAoB,oBAAoB,KAAK,kBAAkB;AAAA,IAAA;AAGxF,mCAAU,MAAY;AAC3B,WAAK,WAAW;AAAA,IAAA;AAGX,qCAAY,MAAc;AAE/B,aAAO,KAAK;AAAA,IAAA;AAGN,qCAAY,IAAI,QAAQ,GAAG,GAAG,EAAE;AACjC,wCAAe,CAAC,MAAwB;AACtC,aAAA,EAAE,KAAK,KAAK,SAAS,EAAE,gBAAgB,KAAK,OAAO,UAAU;AAAA,IAAA;AAG/D,uCAAc,CAAC,aAA2B;AAG/C,cAAQ,oBAAoB,KAAK,OAAO,QAAQ,CAAC;AACjD,cAAQ,aAAa,KAAK,OAAO,IAAI,OAAO;AAC5C,WAAK,OAAO,SAAS,gBAAgB,SAAS,QAAQ;AAAA,IAAA;AAGjD,qCAAY,CAAC,aAA2B;AAC7C,cAAQ,oBAAoB,KAAK,OAAO,QAAQ,CAAC;AACjD,WAAK,OAAO,SAAS,gBAAgB,SAAS,QAAQ;AAAA,IAAA;AAGjD,gCAAO,MAAY;AACxB,UAAI,KAAK;AAAY,aAAK,WAAW;IAAmB;AAGnD,kCAAS,MAAY;AAC1B,UAAI,KAAK;AAAiB,aAAA,WAAW,cAAc;IAAgB;AAxFnE,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,WAAW;AAIhB,SAAK,gBAAgB;AACrB,SAAK,gBAAgB,KAAK;AAE1B,SAAK,eAAe;AAChB,QAAA;AAAY,WAAK,QAAQ,UAAU;AAAA,EACzC;AA+EF;"}
1
+ {"version":3,"file":"PointerLockControls.js","sources":["../../src/controls/PointerLockControls.ts"],"sourcesContent":["import { Euler, Camera, Vector3 } from 'three'\nimport { EventDispatcher } from './EventDispatcher'\n\nconst _euler = /* @__PURE__ */ new Euler(0, 0, 0, 'YXZ')\nconst _vector = /* @__PURE__ */ new Vector3()\nconst _changeEvent = { type: 'change' }\nconst _lockEvent = { type: 'lock' }\nconst _unlockEvent = { type: 'unlock' }\nconst _MOUSE_SENSITIVITY = 0.002\nconst _PI_2 = Math.PI / 2\n\nexport interface PointerLockControlsEventMap {\n /**\n * Fires when the user moves the mouse.\n */\n change: {}\n\n /**\n * Fires when the pointer lock status is \"locked\" (in other words: the mouse is captured).\n */\n lock: {}\n\n /**\n * Fires when the pointer lock status is \"unlocked\" (in other words: the mouse is not captured anymore).\n */\n unlock: {}\n}\n\nclass PointerLockControls extends EventDispatcher<PointerLockControlsEventMap> {\n public camera: Camera\n public domElement?: HTMLElement\n public isLocked: boolean\n public minPolarAngle: number\n public maxPolarAngle: number\n public pointerSpeed: number\n\n constructor(camera: Camera, domElement?: HTMLElement) {\n super()\n\n this.camera = camera\n this.domElement = domElement\n this.isLocked = false\n\n // Set to constrain the pitch of the camera\n // Range is 0 to Math.PI radians\n this.minPolarAngle = 0 // radians\n this.maxPolarAngle = Math.PI // radians\n\n this.pointerSpeed = 1.0\n if (domElement) this.connect(domElement)\n }\n\n private onMouseMove = (event: MouseEvent): void => {\n if (!this.domElement || this.isLocked === false) return\n _euler.setFromQuaternion(this.camera.quaternion)\n _euler.y -= event.movementX * _MOUSE_SENSITIVITY * this.pointerSpeed\n _euler.x -= event.movementY * _MOUSE_SENSITIVITY * this.pointerSpeed\n _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x))\n this.camera.quaternion.setFromEuler(_euler)\n // @ts-ignore\n this.dispatchEvent(_changeEvent)\n }\n\n private onPointerlockChange = (): void => {\n if (!this.domElement) return\n if (this.domElement.ownerDocument.pointerLockElement === this.domElement) {\n // @ts-ignore\n this.dispatchEvent(_lockEvent)\n this.isLocked = true\n } else {\n // @ts-ignore\n this.dispatchEvent(_unlockEvent)\n this.isLocked = false\n }\n }\n\n private onPointerlockError = (): void => {\n console.error('THREE.PointerLockControls: Unable to use Pointer Lock API')\n }\n\n public connect = (domElement: HTMLElement): void => {\n this.domElement = domElement || this.domElement\n if (!this.domElement) return\n this.domElement.ownerDocument.addEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.addEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.addEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public disconnect = (): void => {\n if (!this.domElement) return\n this.domElement.ownerDocument.removeEventListener('mousemove', this.onMouseMove)\n this.domElement.ownerDocument.removeEventListener('pointerlockchange', this.onPointerlockChange)\n this.domElement.ownerDocument.removeEventListener('pointerlockerror', this.onPointerlockError)\n }\n\n public dispose = (): void => {\n this.disconnect()\n }\n\n public getObject = (): Camera => {\n // retaining this method for backward compatibility\n return this.camera\n }\n\n private direction = new Vector3(0, 0, -1)\n public getDirection = (v: Vector3): Vector3 => {\n return v.copy(this.direction).applyQuaternion(this.camera.quaternion)\n }\n\n public moveForward = (distance: number): void => {\n // move forward parallel to the xz-plane\n // assumes camera.up is y-up\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n _vector.crossVectors(this.camera.up, _vector)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public moveRight = (distance: number): void => {\n _vector.setFromMatrixColumn(this.camera.matrix, 0)\n this.camera.position.addScaledVector(_vector, distance)\n }\n\n public lock = (): void => {\n if (this.domElement) this.domElement.requestPointerLock()\n }\n\n public unlock = (): void => {\n if (this.domElement) this.domElement.ownerDocument.exitPointerLock()\n }\n}\n\nexport { PointerLockControls }\n"],"names":[],"mappings":";;;;;;;;AAGA,MAAM,SAA6B,oBAAA,MAAM,GAAG,GAAG,GAAG,KAAK;AACvD,MAAM,8BAA8B;AACpC,MAAM,eAAe,EAAE,MAAM;AAC7B,MAAM,aAAa,EAAE,MAAM;AAC3B,MAAM,eAAe,EAAE,MAAM;AAC7B,MAAM,qBAAqB;AAC3B,MAAM,QAAQ,KAAK,KAAK;AAmBxB,MAAM,4BAA4B,gBAA6C;AAAA,EAQ7E,YAAY,QAAgB,YAA0B;AAC9C;AARD;AACA;AACA;AACA;AACA;AACA;AAkBC,uCAAc,CAAC,UAA4B;AACjD,UAAI,CAAC,KAAK,cAAc,KAAK,aAAa;AAAO;AAC1C,aAAA,kBAAkB,KAAK,OAAO,UAAU;AAC/C,aAAO,KAAK,MAAM,YAAY,qBAAqB,KAAK;AACxD,aAAO,KAAK,MAAM,YAAY,qBAAqB,KAAK;AACxD,aAAO,IAAI,KAAK,IAAI,QAAQ,KAAK,eAAe,KAAK,IAAI,QAAQ,KAAK,eAAe,OAAO,CAAC,CAAC;AACzF,WAAA,OAAO,WAAW,aAAa,MAAM;AAE1C,WAAK,cAAc,YAAY;AAAA,IAAA;AAGzB,+CAAsB,MAAY;AACxC,UAAI,CAAC,KAAK;AAAY;AACtB,UAAI,KAAK,WAAW,cAAc,uBAAuB,KAAK,YAAY;AAExE,aAAK,cAAc,UAAU;AAC7B,aAAK,WAAW;AAAA,MAAA,OACX;AAEL,aAAK,cAAc,YAAY;AAC/B,aAAK,WAAW;AAAA,MAClB;AAAA,IAAA;AAGM,8CAAqB,MAAY;AACvC,cAAQ,MAAM,2DAA2D;AAAA,IAAA;AAGpE,mCAAU,CAAC,eAAkC;AAC7C,WAAA,aAAa,cAAc,KAAK;AACrC,UAAI,CAAC,KAAK;AAAY;AACtB,WAAK,WAAW,cAAc,iBAAiB,aAAa,KAAK,WAAW;AAC5E,WAAK,WAAW,cAAc,iBAAiB,qBAAqB,KAAK,mBAAmB;AAC5F,WAAK,WAAW,cAAc,iBAAiB,oBAAoB,KAAK,kBAAkB;AAAA,IAAA;AAGrF,sCAAa,MAAY;AAC9B,UAAI,CAAC,KAAK;AAAY;AACtB,WAAK,WAAW,cAAc,oBAAoB,aAAa,KAAK,WAAW;AAC/E,WAAK,WAAW,cAAc,oBAAoB,qBAAqB,KAAK,mBAAmB;AAC/F,WAAK,WAAW,cAAc,oBAAoB,oBAAoB,KAAK,kBAAkB;AAAA,IAAA;AAGxF,mCAAU,MAAY;AAC3B,WAAK,WAAW;AAAA,IAAA;AAGX,qCAAY,MAAc;AAE/B,aAAO,KAAK;AAAA,IAAA;AAGN,qCAAY,IAAI,QAAQ,GAAG,GAAG,EAAE;AACjC,wCAAe,CAAC,MAAwB;AACtC,aAAA,EAAE,KAAK,KAAK,SAAS,EAAE,gBAAgB,KAAK,OAAO,UAAU;AAAA,IAAA;AAG/D,uCAAc,CAAC,aAA2B;AAG/C,cAAQ,oBAAoB,KAAK,OAAO,QAAQ,CAAC;AACjD,cAAQ,aAAa,KAAK,OAAO,IAAI,OAAO;AAC5C,WAAK,OAAO,SAAS,gBAAgB,SAAS,QAAQ;AAAA,IAAA;AAGjD,qCAAY,CAAC,aAA2B;AAC7C,cAAQ,oBAAoB,KAAK,OAAO,QAAQ,CAAC;AACjD,WAAK,OAAO,SAAS,gBAAgB,SAAS,QAAQ;AAAA,IAAA;AAGjD,gCAAO,MAAY;AACxB,UAAI,KAAK;AAAY,aAAK,WAAW;IAAmB;AAGnD,kCAAS,MAAY;AAC1B,UAAI,KAAK;AAAiB,aAAA,WAAW,cAAc;IAAgB;AAxFnE,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,WAAW;AAIhB,SAAK,gBAAgB;AACrB,SAAK,gBAAgB,KAAK;AAE1B,SAAK,eAAe;AAChB,QAAA;AAAY,WAAK,QAAQ,UAAU;AAAA,EACzC;AA+EF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-stdlib",
3
- "version": "2.35.16",
3
+ "version": "2.36.0",
4
4
  "description": "stand-alone library of threejs examples",
5
5
  "keywords": [
6
6
  "three",