From 6033736d7eb19d892a9188ff67167854aba47f1c Mon Sep 17 00:00:00 2001 From: Cody Bennett Date: Fri, 5 Jan 2024 06:52:22 -0600 Subject: [PATCH] fix(types): three r160 breaking changes (#332) --- src/controls/ArcballControls.ts | 48 +++++++++++++++++++ src/controls/DeviceOrientationControls.ts | 1 + src/controls/DragControls.ts | 8 ++++ src/controls/FlyControls.ts | 3 +- src/controls/OrbitControls.ts | 7 +++ src/controls/PointerLockControls.ts | 3 ++ src/controls/TrackballControls.ts | 12 +++-- src/controls/TransformControls.ts | 8 +++- src/controls/experimental/CameraControls.ts | 8 ++++ src/loaders/FontLoader.ts | 2 +- src/loaders/HDRCubeTextureLoader.d.ts | 2 +- src/loaders/HDRCubeTextureLoader.js | 4 +- src/modifiers/CurveModifier.ts | 7 ++- src/modifiers/TessellateModifier.ts | 52 ++++++++++----------- src/postprocessing/BloomPass.ts | 14 ++++-- src/postprocessing/DotScreenPass.ts | 4 +- src/postprocessing/FilmPass.ts | 4 +- src/postprocessing/GlitchPass.ts | 3 +- src/postprocessing/WaterPass.ts | 15 ++++-- src/webxr/OculusHandModel.ts | 2 +- 20 files changed, 155 insertions(+), 52 deletions(-) diff --git a/src/controls/ArcballControls.ts b/src/controls/ArcballControls.ts index 3a45773c..c64a77a3 100644 --- a/src/controls/ArcballControls.ts +++ b/src/controls/ArcballControls.ts @@ -370,6 +370,7 @@ class ArcballControls extends EventDispatcher { child.geometry = curveGeometry } + // @ts-ignore this.dispatchEvent(_changeEvent) } @@ -630,6 +631,7 @@ class ArcballControls extends EventDispatcher { if (mouseOp) { event.preventDefault() + // @ts-ignore this.dispatchEvent(_startEvent) const notchDeltaY = 125 //distance of one notch of mouse wheel @@ -681,7 +683,9 @@ class ArcballControls extends EventDispatcher { this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_changeEvent) + // @ts-ignore this.dispatchEvent(_endEvent) break @@ -748,7 +752,9 @@ class ArcballControls extends EventDispatcher { this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_changeEvent) + // @ts-ignore this.dispatchEvent(_endEvent) break @@ -759,6 +765,7 @@ class ArcballControls extends EventDispatcher { private onSinglePanStart = (event: PointerEvent, operation: Operation): void => { if (this.enabled && this.domElement) { + // @ts-ignore this.dispatchEvent(_startEvent) this.setCenter(event.clientX, event.clientY) @@ -773,6 +780,7 @@ class ArcballControls extends EventDispatcher { this._timeStart = -1 this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } @@ -784,6 +792,7 @@ class ArcballControls extends EventDispatcher { } if (this.enableGrid) { this.drawGrid() + // @ts-ignore this.dispatchEvent(_changeEvent) } } @@ -816,6 +825,7 @@ class ArcballControls extends EventDispatcher { } } + // @ts-ignore this.dispatchEvent(_changeEvent) break @@ -829,6 +839,7 @@ class ArcballControls extends EventDispatcher { this._timeStart = -1 this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } @@ -847,6 +858,7 @@ class ArcballControls extends EventDispatcher { this._timeStart = -1 this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } @@ -869,7 +881,9 @@ class ArcballControls extends EventDispatcher { if (restart) { //switch to pan operation + // @ts-ignore this.dispatchEvent(_endEvent) + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(opState, true) @@ -899,7 +913,9 @@ class ArcballControls extends EventDispatcher { if (restart) { //switch to rotate operation + // @ts-ignore this.dispatchEvent(_endEvent) + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(opState, true) @@ -965,7 +981,9 @@ class ArcballControls extends EventDispatcher { if (restart) { //switch to zoom operation + // @ts-ignore this.dispatchEvent(_endEvent) + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(opState, true) @@ -1003,7 +1021,9 @@ class ArcballControls extends EventDispatcher { if (restart) { //switch to fov operation + // @ts-ignore this.dispatchEvent(_endEvent) + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(opState, true) @@ -1065,6 +1085,7 @@ class ArcballControls extends EventDispatcher { break } + // @ts-ignore this.dispatchEvent(_changeEvent) } } @@ -1092,11 +1113,13 @@ class ArcballControls extends EventDispatcher { //cursor has been standing still for over 120 ms since last movement this.updateTbState(STATE.IDLE, false) this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } } else { this.updateTbState(STATE.IDLE, false) this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } } else if (this._state == STATE.PAN || this._state == STATE.IDLE) { @@ -1107,14 +1130,17 @@ class ArcballControls extends EventDispatcher { } this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } + // @ts-ignore this.dispatchEvent(_endEvent) } private onDoubleTap = (event: PointerEvent): void => { if (this.enabled && this.enablePan && this.scene && this.camera && this.domElement) { + // @ts-ignore this.dispatchEvent(_startEvent) this.setCenter(event.clientX, event.clientY) @@ -1135,15 +1161,18 @@ class ArcballControls extends EventDispatcher { this.updateTbState(STATE.FOCUS, true) this.focus(hitP, this.scaleFactor) this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_changeEvent) } } + // @ts-ignore this.dispatchEvent(_endEvent) } private onDoublePanStart = (): void => { if (this.enabled && this.enablePan && this.camera && this.domElement) { + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(STATE.PAN, true) @@ -1178,17 +1207,20 @@ class ArcballControls extends EventDispatcher { const rayDir = this.unprojectOnTbPlane(this.camera, _center.x, _center.y, this.domElement, true) if (rayDir !== undefined) this._currentCursorPosition.copy(rayDir) this.applyTransformMatrix(this.pan(this._startCursorPosition, this._currentCursorPosition, true)) + // @ts-ignore this.dispatchEvent(_changeEvent) } } private onDoublePanEnd = (): void => { this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_endEvent) } private onRotateStart = (): void => { if (this.enabled && this.enableRotate) { + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(STATE.ZROTATE, true) @@ -1241,6 +1273,7 @@ class ArcballControls extends EventDispatcher { if (rotationPoint !== undefined) { this.applyTransformMatrix(this.zRotate(rotationPoint, amount)) } + // @ts-ignore this.dispatchEvent(_changeEvent) } } @@ -1248,11 +1281,13 @@ class ArcballControls extends EventDispatcher { private onRotateEnd = (): void => { this.updateTbState(STATE.IDLE, false) this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_endEvent) } private onPinchStart = (): void => { if (this.enabled && this.enableZoom) { + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(STATE.SCALE, true) @@ -1302,17 +1337,20 @@ class ArcballControls extends EventDispatcher { if (scalePoint !== undefined) { this.applyTransformMatrix(this.applyScale(amount, scalePoint)) } + // @ts-ignore this.dispatchEvent(_changeEvent) } } private onPinchEnd = (): void => { this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_endEvent) } private onTriplePanStart = (): void => { if (this.enabled && this.enableZoom && this.domElement) { + // @ts-ignore this.dispatchEvent(_startEvent) this.updateTbState(STATE.SCALE, true) @@ -1401,12 +1439,14 @@ class ArcballControls extends EventDispatcher { .multiplyScalar(newDistance / x) this._m4_1.makeTranslation(direction.x, direction.y, direction.z) + // @ts-ignore this.dispatchEvent(_changeEvent) } } private onTriplePanEnd = (): void => { this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_endEvent) //this.dispatchEvent( _changeEvent ); } @@ -1933,6 +1973,7 @@ class ArcballControls extends EventDispatcher { */ public setGizmosVisible(value: boolean): void { this._gizmos.visible = value + // @ts-ignore this.dispatchEvent(_changeEvent) } @@ -2017,6 +2058,7 @@ class ArcballControls extends EventDispatcher { this.updateTbState(STATE.IDLE, false) this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } else { const amount = this.easeOutCubic(animTime) @@ -2025,6 +2067,7 @@ class ArcballControls extends EventDispatcher { this._gizmoMatrixState.decompose(this._gizmos.position, this._gizmos.quaternion, this._gizmos.scale) this.focus(point, size, amount) + // @ts-ignore this.dispatchEvent(_changeEvent) const self = this this._animationId = window.requestAnimationFrame(function (t) { @@ -2062,6 +2105,7 @@ class ArcballControls extends EventDispatcher { //tetha = 0.5 * alpha * t^2 + w0 * t + tetha0 this._angleCurrent = 0.5 * -this.dampingFactor * Math.pow(deltaTime, 2) + w0 * deltaTime + 0 this.applyTransformMatrix(this.rotate(rotationAxis, this._angleCurrent)) + // @ts-ignore this.dispatchEvent(_changeEvent) const self = this this._animationId = window.requestAnimationFrame(function (t) { @@ -2074,6 +2118,7 @@ class ArcballControls extends EventDispatcher { this.updateTbState(STATE.IDLE, false) this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } } else { @@ -2084,6 +2129,7 @@ class ArcballControls extends EventDispatcher { if (this._state != STATE.ROTATE) { this.activateGizmos(false) + // @ts-ignore this.dispatchEvent(_changeEvent) } } @@ -2156,6 +2202,7 @@ class ArcballControls extends EventDispatcher { this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_changeEvent) } } @@ -2774,6 +2821,7 @@ class ArcballControls extends EventDispatcher { this.camera.lookAt(this._gizmos.position) this.updateTbState(STATE.IDLE, false) + // @ts-ignore this.dispatchEvent(_changeEvent) } } diff --git a/src/controls/DeviceOrientationControls.ts b/src/controls/DeviceOrientationControls.ts index 64eb1a8b..ab6a821a 100644 --- a/src/controls/DeviceOrientationControls.ts +++ b/src/controls/DeviceOrientationControls.ts @@ -103,6 +103,7 @@ class DeviceOrientationControls extends EventDispatcher { if (8 * (1 - this.lastQuaternion.dot(this.object.quaternion)) > this.EPS) { this.lastQuaternion.copy(this.object.quaternion) + // @ts-ignore this.dispatchEvent(this.changeEvent) } } diff --git a/src/controls/DragControls.ts b/src/controls/DragControls.ts index 4bb03349..86877de6 100644 --- a/src/controls/DragControls.ts +++ b/src/controls/DragControls.ts @@ -72,6 +72,7 @@ class DragControls extends EventDispatcher { this._selected.position.copy(this._intersection.sub(this._offset).applyMatrix4(this._inverseMatrix)) } + // @ts-ignore this.dispatchEvent({ type: 'drag', object: this._selected }) return @@ -91,6 +92,7 @@ class DragControls extends EventDispatcher { ) if (this._hovered !== object) { + // @ts-ignore this.dispatchEvent({ type: 'hoveron', object }) this._domElement.style.cursor = 'pointer' @@ -98,6 +100,7 @@ class DragControls extends EventDispatcher { } } else { if (this._hovered !== null) { + // @ts-ignore this.dispatchEvent({ type: 'hoveroff', object: this._hovered }) this._domElement.style.cursor = 'auto' @@ -122,12 +125,14 @@ class DragControls extends EventDispatcher { this._domElement.style.cursor = 'move' + // @ts-ignore this.dispatchEvent({ type: 'dragstart', object: this._selected }) } } private onMouseCancel = (): void => { if (this._selected) { + // @ts-ignore this.dispatchEvent({ type: 'dragend', object: this._selected }) this._selected = null @@ -185,6 +190,7 @@ class DragControls extends EventDispatcher { this._selected.position.copy(this._intersection.sub(this._offset).applyMatrix4(this._inverseMatrix)) } + // @ts-ignore this.dispatchEvent({ type: 'drag', object: this._selected }) return @@ -220,6 +226,7 @@ class DragControls extends EventDispatcher { this._domElement.style.cursor = 'move' + // @ts-ignore this.dispatchEvent({ type: 'dragstart', object: this._selected }) } } @@ -228,6 +235,7 @@ class DragControls extends EventDispatcher { event.preventDefault() if (this._selected) { + // @ts-ignore this.dispatchEvent({ type: 'dragend', object: this._selected }) this._selected = null diff --git a/src/controls/FlyControls.ts b/src/controls/FlyControls.ts index 833f0ba6..bbd8da7d 100644 --- a/src/controls/FlyControls.ts +++ b/src/controls/FlyControls.ts @@ -235,6 +235,7 @@ class FlyControls extends EventDispatcher { this.lastPosition.distanceToSquared(this.object.position) > this.EPS || 8 * (1 - this.lastQuaternion.dot(this.object.quaternion)) > this.EPS ) { + // @ts-ignore this.dispatchEvent(this.changeEvent) this.lastQuaternion.copy(this.object.quaternion) this.lastPosition.copy(this.object.position) @@ -276,7 +277,7 @@ class FlyControls extends EventDispatcher { public connect = (domElement: HTMLElement | Document): void => { this.domElement = domElement - if (domElement && !(domElement instanceof Document)) { + if (!(domElement instanceof Document)) { domElement.setAttribute('tabindex', -1 as any) } diff --git a/src/controls/OrbitControls.ts b/src/controls/OrbitControls.ts index 1932130e..c2341e9b 100644 --- a/src/controls/OrbitControls.ts +++ b/src/controls/OrbitControls.ts @@ -191,6 +191,7 @@ class OrbitControls extends EventDispatcher { scope.object.zoom = scope.zoom0 scope.object.updateProjectionMatrix() + // @ts-ignore scope.dispatchEvent(changeEvent) scope.update() @@ -382,6 +383,7 @@ class OrbitControls extends EventDispatcher { lastPosition.distanceToSquared(scope.object.position) > EPS || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS ) { + // @ts-ignore scope.dispatchEvent(changeEvent) lastPosition.copy(scope.object.position) @@ -849,6 +851,7 @@ class OrbitControls extends EventDispatcher { scope.domElement?.ownerDocument.removeEventListener('pointerup', onPointerUp) } + // @ts-ignore scope.dispatchEvent(endEvent) state = STATE.NONE @@ -914,6 +917,7 @@ class OrbitControls extends EventDispatcher { } if (state !== STATE.NONE) { + // @ts-ignore scope.dispatchEvent(startEvent) } } @@ -946,10 +950,12 @@ class OrbitControls extends EventDispatcher { event.preventDefault() + // @ts-ignore scope.dispatchEvent(startEvent) handleMouseWheel(event) + // @ts-ignore scope.dispatchEvent(endEvent) } @@ -1007,6 +1013,7 @@ class OrbitControls extends EventDispatcher { } if (state !== STATE.NONE) { + // @ts-ignore scope.dispatchEvent(startEvent) } } diff --git a/src/controls/PointerLockControls.ts b/src/controls/PointerLockControls.ts index 9170daf6..55fa7f78 100644 --- a/src/controls/PointerLockControls.ts +++ b/src/controls/PointerLockControls.ts @@ -40,15 +40,18 @@ class PointerLockControls extends EventDispatcher { _euler.x -= movementY * 0.002 * this.pointerSpeed _euler.x = Math.max(_PI_2 - this.maxPolarAngle, Math.min(_PI_2 - this.minPolarAngle, _euler.x)) this.camera.quaternion.setFromEuler(_euler) + // @ts-ignore this.dispatchEvent(_changeEvent) } private onPointerlockChange = (): void => { if (!this.domElement) return if (this.domElement.ownerDocument.pointerLockElement === this.domElement) { + // @ts-ignore this.dispatchEvent(_lockEvent) this.isLocked = true } else { + // @ts-ignore this.dispatchEvent(_unlockEvent) this.isLocked = false } diff --git a/src/controls/TrackballControls.ts b/src/controls/TrackballControls.ts index 0fe0c7da..b523b5a5 100644 --- a/src/controls/TrackballControls.ts +++ b/src/controls/TrackballControls.ts @@ -303,6 +303,7 @@ class TrackballControls extends EventDispatcher { this.object.lookAt(this.target) if (this.lastPosition.distanceToSquared(this.object.position) > this.EPS) { + // @ts-ignore this.dispatchEvent(this.changeEvent) this.lastPosition.copy(this.object.position) @@ -311,6 +312,7 @@ class TrackballControls extends EventDispatcher { this.object.lookAt(this.target) if (this.lastPosition.distanceToSquared(this.object.position) > this.EPS || this.lastZoom !== this.object.zoom) { + // @ts-ignore this.dispatchEvent(this.changeEvent) this.lastPosition.copy(this.object.position) @@ -336,6 +338,7 @@ class TrackballControls extends EventDispatcher { this.object.lookAt(this.target) + // @ts-ignore this.dispatchEvent(this.changeEvent) this.lastPosition.copy(this.object.position) @@ -420,9 +423,6 @@ class TrackballControls extends EventDispatcher { case this.mouseButtons.RIGHT: this._state = this.STATE.PAN break - - default: - this._state = this.STATE.NONE } } @@ -442,6 +442,7 @@ class TrackballControls extends EventDispatcher { this.domElement.ownerDocument.addEventListener('pointermove', this.onPointerMove) this.domElement.ownerDocument.addEventListener('pointerup', this.onPointerUp) + // @ts-ignore this.dispatchEvent(this.startEvent) } @@ -469,6 +470,7 @@ class TrackballControls extends EventDispatcher { this.domElement.ownerDocument.removeEventListener('pointermove', this.onPointerMove) this.domElement.ownerDocument.removeEventListener('pointerup', this.onPointerUp) + // @ts-ignore this.dispatchEvent(this.endEvent) } @@ -499,7 +501,9 @@ class TrackballControls extends EventDispatcher { this.mousePosition.x = (event.offsetX / this.screen.width) * 2 - 1 this.mousePosition.y = -(event.offsetY / this.screen.height) * 2 + 1 + // @ts-ignore this.dispatchEvent(this.startEvent) + // @ts-ignore this.dispatchEvent(this.endEvent) } @@ -529,6 +533,7 @@ class TrackballControls extends EventDispatcher { break } + // @ts-ignore this.dispatchEvent(this.startEvent) } @@ -571,6 +576,7 @@ class TrackballControls extends EventDispatcher { break } + // @ts-ignore this.dispatchEvent(this.endEvent) } diff --git a/src/controls/TransformControls.ts b/src/controls/TransformControls.ts index edfd5790..ad3ff514 100644 --- a/src/controls/TransformControls.ts +++ b/src/controls/TransformControls.ts @@ -220,7 +220,9 @@ class TransformControls extends Object3D { this.object.position.copy(this.positionStart) this.object.quaternion.copy(this.quaternionStart) this.object.scale.copy(this.scaleStart) + // @ts-ignore this.dispatchEvent(this.changeEvent) + // @ts-ignore this.dispatchEvent(this.objectChangeEvent) this.pointStart.copy(this.pointEnd) } @@ -309,6 +311,7 @@ class TransformControls extends Object3D { this.dragging = true this.mouseDownEvent.mode = this.mode + // @ts-ignore this.dispatchEvent(this.mouseDownEvent) } } @@ -493,7 +496,9 @@ class TransformControls extends Object3D { } } + // @ts-ignore this.dispatchEvent(this.changeEvent) + // @ts-ignore this.dispatchEvent(this.objectChangeEvent) } @@ -502,6 +507,7 @@ class TransformControls extends Object3D { if (this.dragging && this.axis !== null) { this.mouseUpEvent.mode = this.mode + // @ts-ignore this.dispatchEvent(this.mouseUpEvent) } @@ -521,7 +527,7 @@ class TransformControls extends Object3D { ? (event as TouchEvent).changedTouches[0] : (event as MouseEvent) - const rect = (this.domElement as HTMLElement)?.getBoundingClientRect() + const rect = this.domElement!.getBoundingClientRect() return { x: ((pointer.clientX - rect.left) / rect.width) * 2 - 1, diff --git a/src/controls/experimental/CameraControls.ts b/src/controls/experimental/CameraControls.ts index 8d70954a..c894ec6b 100644 --- a/src/controls/experimental/CameraControls.ts +++ b/src/controls/experimental/CameraControls.ts @@ -230,6 +230,7 @@ class CameraControls extends EventDispatcher { this.object.zoom = this.zoom0 this.object.updateProjectionMatrix() + // @ts-ignore this.dispatchEvent(this.changeEvent) this.update() @@ -361,6 +362,7 @@ class CameraControls extends EventDispatcher { this.lastPosition.distanceToSquared(this.object.position) > this.EPS || 8 * (1 - this.lastQuaternion.dot(this.object.quaternion)) > this.EPS ) { + // @ts-ignore this.dispatchEvent(this.changeEvent) this.lastPosition.copy(this.object.position) @@ -773,6 +775,7 @@ class CameraControls extends EventDispatcher { document.addEventListener('mousemove', this.onMouseMove, false) document.addEventListener('mouseup', this.onMouseUp, false) + // @ts-ignore this.dispatchEvent(this.startEvent) } } @@ -814,6 +817,7 @@ class CameraControls extends EventDispatcher { document.removeEventListener('mousemove', this.onMouseMove, false) document.removeEventListener('mouseup', this.onMouseUp, false) + // @ts-ignore this.dispatchEvent(this.endEvent) this.state = STATE.NONE @@ -830,10 +834,12 @@ class CameraControls extends EventDispatcher { event.preventDefault() + // @ts-ignore this.dispatchEvent(this.startEvent) this.handleMouseWheel(event) + // @ts-ignore this.dispatchEvent(this.endEvent) } @@ -906,6 +912,7 @@ class CameraControls extends EventDispatcher { } if (this.state !== STATE.NONE) { + // @ts-ignore this.dispatchEvent(this.startEvent) } } @@ -962,6 +969,7 @@ class CameraControls extends EventDispatcher { // this.handleTouchEnd() + // @ts-ignore this.dispatchEvent(this.endEvent) this.state = STATE.NONE diff --git a/src/loaders/FontLoader.ts b/src/loaders/FontLoader.ts index 8b855326..cb0e4ee4 100644 --- a/src/loaders/FontLoader.ts +++ b/src/loaders/FontLoader.ts @@ -36,7 +36,7 @@ export class FontLoader extends Loader { if (onLoad) onLoad(font) }, onProgress, - onError, + onError as (event: unknown) => void, ) } diff --git a/src/loaders/HDRCubeTextureLoader.d.ts b/src/loaders/HDRCubeTextureLoader.d.ts index 80015421..e08f55e2 100644 --- a/src/loaders/HDRCubeTextureLoader.d.ts +++ b/src/loaders/HDRCubeTextureLoader.d.ts @@ -8,7 +8,7 @@ export class HDRCubeTextureLoader extends Loader { type: TextureDataType load( - urls: string[], + urls: string | string[], onLoad: (texture: CubeTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void, diff --git a/src/loaders/HDRCubeTextureLoader.js b/src/loaders/HDRCubeTextureLoader.js index 9042ae4d..91ceac1d 100644 --- a/src/loaders/HDRCubeTextureLoader.js +++ b/src/loaders/HDRCubeTextureLoader.js @@ -10,7 +10,9 @@ class HDRCubeTextureLoader extends Loader { } load(urls, onLoad, onProgress, onError) { - if (!Array.isArray(urls)) { + if (typeof urls === 'string') { + urls = [urls] + } else if (!Array.isArray(urls)) { console.warn('THREE.HDRCubeTextureLoader signature has changed. Use .setDataType() instead.') this.setDataType(urls) diff --git a/src/modifiers/CurveModifier.ts b/src/modifiers/CurveModifier.ts index 84d00332..2097a471 100644 --- a/src/modifiers/CurveModifier.ts +++ b/src/modifiers/CurveModifier.ts @@ -14,7 +14,6 @@ import { DynamicDrawUsage, Matrix4, Material, - Shader, Curve, BufferGeometry, } from 'three' @@ -123,9 +122,9 @@ export function modifyShader( if (material.__ok) return material.__ok = true - material.onBeforeCompile = (shader: Shader & { __modified: boolean }): void => { - if (shader.__modified) return - shader.__modified = true + material.onBeforeCompile = (shader: { vertexShader: string; uniforms: { [uniform: string]: IUniform } }): void => { + if ((shader as any).__modified) return + ;(shader as any).__modified = true Object.assign(shader.uniforms, uniforms) diff --git a/src/modifiers/TessellateModifier.ts b/src/modifiers/TessellateModifier.ts index 02a4b3aa..152f53f7 100644 --- a/src/modifiers/TessellateModifier.ts +++ b/src/modifiers/TessellateModifier.ts @@ -65,11 +65,11 @@ class TessellateModifier { let uvs = hasUVs ? attributes.uv.array : null let uv2s = hasUV2s ? attributes.uv2.array : null - let positions2 = positions as number[] - let normals2 = normals - let colors2 = colors - let uvs2 = uvs - let uv2s2 = uv2s + let positions2 = (positions as unknown) as number[] + let normals2 = (normals as unknown) as number[] + let colors2 = (colors as unknown) as number[] + let uvs2 = (uvs as unknown) as number[] + let uv2s2 = (uv2s as unknown) as number[] let iteration = 0 let tessellating = true @@ -88,9 +88,9 @@ class TessellateModifier { const n2 = ns[b] const n3 = ns[c] - ;(normals2 as number[]).push(n1.x, n1.y, n1.z) - ;(normals2 as number[]).push(n2.x, n2.y, n2.z) - ;(normals2 as number[]).push(n3.x, n3.y, n3.z) + normals2.push(n1.x, n1.y, n1.z) + normals2.push(n2.x, n2.y, n2.z) + normals2.push(n3.x, n3.y, n3.z) } if (hasColors) { @@ -98,9 +98,9 @@ class TessellateModifier { const c2 = cs[b] const c3 = cs[c] - ;(colors2 as number[]).push(c1.r, c1.g, c1.b) - ;(colors2 as number[]).push(c2.r, c2.g, c2.b) - ;(colors2 as number[]).push(c3.r, c3.g, c3.b) + colors2.push(c1.r, c1.g, c1.b) + colors2.push(c2.r, c2.g, c2.b) + colors2.push(c3.r, c3.g, c3.b) } if (hasUVs) { @@ -108,9 +108,9 @@ class TessellateModifier { const u2 = us[b] const u3 = us[c] - ;(uvs2 as number[]).push(u1.x, u1.y) - ;(uvs2 as number[]).push(u2.x, u2.y) - ;(uvs2 as number[]).push(u3.x, u3.y) + uvs2.push(u1.x, u1.y) + uvs2.push(u2.x, u2.y) + uvs2.push(u3.x, u3.y) } if (hasUV2s) { @@ -118,9 +118,9 @@ class TessellateModifier { const u22 = u2s[b] const u23 = u2s[c] - ;(uv2s2 as number[]).push(u21.x, u21.y) - ;(uv2s2 as number[]).push(u22.x, u22.y) - ;(uv2s2 as number[]).push(u23.x, u23.y) + uv2s2.push(u21.x, u21.y) + uv2s2.push(u22.x, u22.y) + uv2s2.push(u23.x, u23.y) } } @@ -128,26 +128,26 @@ class TessellateModifier { iteration++ tessellating = false - positions = positions2 + positions = positions2 as any positions2 = [] if (hasNormals) { - normals = normals2 + normals = normals2 as any normals2 = [] } if (hasColors) { - colors = colors2 + colors = colors2 as any colors2 = [] } if (hasUVs) { - uvs = uvs2 + uvs = uvs2 as any uvs2 = [] } if (hasUV2s) { - uv2s = uv2s2 + uv2s = uv2s2 as any uv2s2 = [] } @@ -226,19 +226,19 @@ class TessellateModifier { geometry2.setAttribute('position', new Float32BufferAttribute(positions2, 3)) if (hasNormals) { - geometry2.setAttribute('normal', new Float32BufferAttribute(normals2 as number[], 3)) + geometry2.setAttribute('normal', new Float32BufferAttribute(normals2 as any, 3)) } if (hasColors) { - geometry2.setAttribute('color', new Float32BufferAttribute(colors2 as number[], 3)) + geometry2.setAttribute('color', new Float32BufferAttribute(colors2 as any, 3)) } if (hasUVs) { - geometry2.setAttribute('uv', new Float32BufferAttribute(uvs2 as number[], 2)) + geometry2.setAttribute('uv', new Float32BufferAttribute(uvs2 as any, 2)) } if (hasUV2s) { - geometry2.setAttribute('uv2', new Float32BufferAttribute(uv2s2 as number[], 2)) + geometry2.setAttribute('uv2', new Float32BufferAttribute(uv2s2 as any, 2)) } return geometry2 diff --git a/src/postprocessing/BloomPass.ts b/src/postprocessing/BloomPass.ts index 63756338..07401ad9 100644 --- a/src/postprocessing/BloomPass.ts +++ b/src/postprocessing/BloomPass.ts @@ -1,5 +1,13 @@ import { Pass, FullScreenQuad } from './Pass' -import { AdditiveBlending, ShaderMaterial, UniformsUtils, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three' +import { + AdditiveBlending, + IUniform, + ShaderMaterial, + UniformsUtils, + Vector2, + WebGLRenderer, + WebGLRenderTarget, +} from 'three' import { ConvolutionShader } from '../shaders/ConvolutionShader' class BloomPass extends Pass { @@ -8,8 +16,8 @@ class BloomPass extends Pass { public materialCombine: ShaderMaterial public materialConvolution: ShaderMaterial public fsQuad: FullScreenQuad - public combineUniforms - public convolutionUniforms + public combineUniforms: Record> + public convolutionUniforms: Record> public blurX = new Vector2(0.001953125, 0.0) public blurY = new Vector2(0.0, 0.001953125) diff --git a/src/postprocessing/DotScreenPass.ts b/src/postprocessing/DotScreenPass.ts index 99316c1d..b03f038b 100644 --- a/src/postprocessing/DotScreenPass.ts +++ b/src/postprocessing/DotScreenPass.ts @@ -1,12 +1,12 @@ import { Pass, FullScreenQuad } from './Pass' -import { ShaderMaterial, UniformsUtils, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three' +import { IUniform, ShaderMaterial, UniformsUtils, Vector2, WebGLRenderer, WebGLRenderTarget } from 'three' import { DotScreenShader } from '../shaders/DotScreenShader' class DotScreenPass extends Pass { public material: ShaderMaterial public fsQuad: FullScreenQuad - public uniforms + public uniforms: Record> constructor(center?: Vector2, angle?: number, scale?: number) { super() diff --git a/src/postprocessing/FilmPass.ts b/src/postprocessing/FilmPass.ts index 35ef3fbe..6a9e2739 100644 --- a/src/postprocessing/FilmPass.ts +++ b/src/postprocessing/FilmPass.ts @@ -1,12 +1,12 @@ import { Pass, FullScreenQuad } from './Pass' -import { ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three' +import { IUniform, ShaderMaterial, UniformsUtils, WebGLRenderer, WebGLRenderTarget } from 'three' import { FilmShader } from '../shaders/FilmShader' class FilmPass extends Pass { public material: ShaderMaterial public fsQuad: FullScreenQuad - public uniforms + public uniforms: Record> constructor(noiseIntensity?: number, scanlinesIntensity?: number, scanlinesCount?: number, grayscale?: boolean) { super() diff --git a/src/postprocessing/GlitchPass.ts b/src/postprocessing/GlitchPass.ts index 417261fd..b35a45fb 100644 --- a/src/postprocessing/GlitchPass.ts +++ b/src/postprocessing/GlitchPass.ts @@ -9,6 +9,7 @@ import { UniformsUtils, WebGLRenderTarget, WebGLRenderer, + IUniform, } from 'three' import { DigitalGlitch } from '../shaders/DigitalGlitch' @@ -19,7 +20,7 @@ class GlitchPass extends Pass { public curF: number public randX!: number - public uniforms + public uniforms: Record> constructor(dt_size = 64) { super() diff --git a/src/postprocessing/WaterPass.ts b/src/postprocessing/WaterPass.ts index 763df4d8..9a365e5e 100644 --- a/src/postprocessing/WaterPass.ts +++ b/src/postprocessing/WaterPass.ts @@ -1,4 +1,4 @@ -import { WebGLRenderer, WebGLRenderTarget, ShaderMaterial, UniformsUtils, Vector2 } from 'three' +import { WebGLRenderer, WebGLRenderTarget, ShaderMaterial, Vector2, IUniform, Texture } from 'three' import { Pass, FullScreenQuad } from '../postprocessing/Pass' /** @@ -25,16 +25,21 @@ class WaterPass extends Pass { public fsQuad: FullScreenQuad public factor: number public time: number - public uniforms + public uniforms: { + tex: IUniform + time: IUniform + factor: IUniform + resolution: IUniform + } constructor() { super() - this.uniforms = UniformsUtils.clone({ - tex: { value: null }, + this.uniforms = { + tex: { value: null! }, time: { value: 0.0 }, factor: { value: 0.0 }, resolution: { value: new Vector2(64, 64) }, - }) + } this.material = new ShaderMaterial({ uniforms: this.uniforms, vertexShader: ` diff --git a/src/webxr/OculusHandModel.ts b/src/webxr/OculusHandModel.ts index 18acee9d..fee1dc05 100644 --- a/src/webxr/OculusHandModel.ts +++ b/src/webxr/OculusHandModel.ts @@ -29,7 +29,7 @@ class OculusHandModel extends Object3D { this.xrInputSource = null controller.addEventListener('connected', (event) => { - const xrInputSource = event.data + const xrInputSource = (event as any).data if (xrInputSource.hand && !this.motionController) { this.xrInputSource = xrInputSource