@roomle/web-sdk 2.101.0-alpha.8 → 2.101.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.
- package/lib/{banana-for-scale-1b2f74f2.js → banana-for-scale-2377fbb7.js} +2 -2
- package/lib/{banana-for-scale-1b2f74f2.js.map → banana-for-scale-2377fbb7.js.map} +1 -1
- package/lib/{banana-for-scale-f917b709.nomodule.js → banana-for-scale-d8a216d3.nomodule.js} +2 -2
- package/lib/{banana-for-scale-f917b709.nomodule.js.map → banana-for-scale-d8a216d3.nomodule.js.map} +1 -1
- package/lib/camera-behaviour-3f3870c5.nomodule.js +2 -0
- package/lib/{camera-behaviour-23bb0632.nomodule.js.map → camera-behaviour-3f3870c5.nomodule.js.map} +1 -1
- package/lib/{camera-behaviour-65cbf7a9.js → camera-behaviour-95239f93.js} +2 -2
- package/lib/{camera-behaviour-65cbf7a9.js.map → camera-behaviour-95239f93.js.map} +1 -1
- package/lib/{component-dimensioning-b8f3ac83.nomodule.js → component-dimensioning-2feb82dd.nomodule.js} +2 -2
- package/lib/component-dimensioning-2feb82dd.nomodule.js.map +1 -0
- package/lib/{component-dimensioning-87f955e1.js → component-dimensioning-93bbf39b.js} +2 -2
- package/lib/component-dimensioning-93bbf39b.js.map +1 -0
- package/lib/{component-raycast-helper-20b8ab65.nomodule.js → component-raycast-helper-43a600c0.nomodule.js} +2 -2
- package/lib/component-raycast-helper-43a600c0.nomodule.js.map +1 -0
- package/lib/{component-raycast-helper-5e1d9061.js → component-raycast-helper-d4163971.js} +2 -2
- package/lib/component-raycast-helper-d4163971.js.map +1 -0
- package/lib/{configurator-b7c14c7e.nomodule.js → configurator-199df83b.nomodule.js} +2 -2
- package/lib/configurator-199df83b.nomodule.js.map +1 -0
- package/lib/{configurator-39439f9f.js → configurator-8bac2428.js} +2 -2
- package/lib/configurator-8bac2428.js.map +1 -0
- package/lib/configurator-main-1ffa3c8d.js +2 -0
- package/lib/configurator-main-1ffa3c8d.js.map +1 -0
- package/lib/configurator-main.nomodule.js +1 -1
- package/lib/{continuous-drawing-helper-c4d81566.js → continuous-drawing-helper-9541ee0e.js} +2 -2
- package/lib/continuous-drawing-helper-9541ee0e.js.map +1 -0
- package/lib/{continuous-drawing-helper-1b153523.nomodule.js → continuous-drawing-helper-fd647ca1.nomodule.js} +2 -2
- package/lib/continuous-drawing-helper-fd647ca1.nomodule.js.map +1 -0
- package/lib/{default-light-setting-d85282ec.js → default-light-setting-04cf417f.js} +2 -2
- package/lib/default-light-setting-04cf417f.js.map +1 -0
- package/lib/{default-light-setting-d1311475.nomodule.js → default-light-setting-99ee06de.nomodule.js} +2 -2
- package/lib/default-light-setting-99ee06de.nomodule.js.map +1 -0
- package/lib/definitions/common-core/src/input/input-manager.d.ts +11 -2
- package/lib/definitions/common-core/src/utils/dom-helper.d.ts +1 -0
- package/lib/definitions/configurator-core/mock/configurator-mock-data.d.ts +2 -0
- package/lib/definitions/packages/common-core/src/input/input-manager.d.ts +11 -2
- package/lib/definitions/packages/common-core/src/utils/dom-helper.d.ts +1 -0
- package/lib/definitions/packages/configurator-core/mock/configurator-mock-data.d.ts +2 -0
- package/lib/definitions/packages/planner-core/src/view-model/wall-plan-element-view-model.d.ts +1 -0
- package/lib/definitions/packages/planner-core/src/webgl/planner-scene-manager.d.ts +2 -0
- package/lib/definitions/planner-core/src/view-model/wall-plan-element-view-model.d.ts +1 -0
- package/lib/definitions/planner-core/src/webgl/planner-scene-manager.d.ts +2 -0
- package/lib/{dimensioning-helper-5ffd8f92.nomodule.js → dimensioning-helper-4669f95d.nomodule.js} +2 -2
- package/lib/{dimensioning-helper-5ffd8f92.nomodule.js.map → dimensioning-helper-4669f95d.nomodule.js.map} +1 -1
- package/lib/{dimensioning-helper-1ee2fe98.js → dimensioning-helper-86995ec9.js} +2 -2
- package/lib/{dimensioning-helper-1ee2fe98.js.map → dimensioning-helper-86995ec9.js.map} +1 -1
- package/lib/{glb-viewer-6f2aba24.js → glb-viewer-4a91f121.js} +2 -2
- package/lib/{glb-viewer-6f2aba24.js.map → glb-viewer-4a91f121.js.map} +1 -1
- package/lib/{glb-viewer-804883de.nomodule.js → glb-viewer-51e53d51.nomodule.js} +2 -2
- package/lib/{glb-viewer-804883de.nomodule.js.map → glb-viewer-51e53d51.nomodule.js.map} +1 -1
- package/lib/{glb-viewer-camera-behaviour-70a364c0.js → glb-viewer-camera-behaviour-17fdd74b.js} +2 -2
- package/lib/glb-viewer-camera-behaviour-17fdd74b.js.map +1 -0
- package/lib/{glb-viewer-camera-behaviour-83729568.nomodule.js → glb-viewer-camera-behaviour-50f47657.nomodule.js} +2 -2
- package/lib/glb-viewer-camera-behaviour-50f47657.nomodule.js.map +1 -0
- package/lib/glb-viewer-main-debc7956.js +2 -0
- package/lib/glb-viewer-main-debc7956.js.map +1 -0
- package/lib/glb-viewer-main.nomodule.js +1 -1
- package/lib/{imos-ix-poc-export-helper-18ca81d2.js → imos-ix-poc-export-helper-4e81bbdf.js} +2 -2
- package/lib/imos-ix-poc-export-helper-4e81bbdf.js.map +1 -0
- package/lib/{imos-ix-poc-export-helper-363b387a.nomodule.js → imos-ix-poc-export-helper-98a0e81e.nomodule.js} +2 -2
- package/lib/imos-ix-poc-export-helper-98a0e81e.nomodule.js.map +1 -0
- package/lib/legacy/{banana-for-scale-2f6d2539.legacy.js → banana-for-scale-504f1ad6.legacy.js} +2 -2
- package/lib/legacy/{banana-for-scale-2f6d2539.legacy.js.map → banana-for-scale-504f1ad6.legacy.js.map} +1 -1
- package/lib/legacy/camera-behaviour-4b8cdc30.legacy.js +2 -0
- package/lib/legacy/{camera-behaviour-93d5da66.legacy.js.map → camera-behaviour-4b8cdc30.legacy.js.map} +1 -1
- package/lib/legacy/{component-dimensioning-7434957b.legacy.js → component-dimensioning-33ff2f3a.legacy.js} +2 -2
- package/lib/legacy/component-dimensioning-33ff2f3a.legacy.js.map +1 -0
- package/lib/legacy/{component-raycast-helper-3ee11650.legacy.js → component-raycast-helper-e33caabb.legacy.js} +2 -2
- package/lib/legacy/component-raycast-helper-e33caabb.legacy.js.map +1 -0
- package/lib/legacy/{configurator-6d986be2.legacy.js → configurator-feb0fbbe.legacy.js} +2 -2
- package/lib/legacy/configurator-feb0fbbe.legacy.js.map +1 -0
- package/lib/legacy/configurator-main.legacy.js +1 -1
- package/lib/legacy/{continuous-drawing-helper-a7b33c02.legacy.js → continuous-drawing-helper-4173db6d.legacy.js} +2 -2
- package/lib/legacy/continuous-drawing-helper-4173db6d.legacy.js.map +1 -0
- package/lib/legacy/{default-light-setting-313288f6.legacy.js → default-light-setting-2d13914e.legacy.js} +2 -2
- package/lib/legacy/default-light-setting-2d13914e.legacy.js.map +1 -0
- package/lib/legacy/{dimensioning-helper-efb5831f.legacy.js → dimensioning-helper-7d1badad.legacy.js} +2 -2
- package/lib/legacy/{dimensioning-helper-efb5831f.legacy.js.map → dimensioning-helper-7d1badad.legacy.js.map} +1 -1
- package/lib/legacy/{glb-viewer-a93e80f4.legacy.js → glb-viewer-54c19616.legacy.js} +2 -2
- package/lib/legacy/{glb-viewer-a93e80f4.legacy.js.map → glb-viewer-54c19616.legacy.js.map} +1 -1
- package/lib/legacy/{glb-viewer-camera-behaviour-326dd288.legacy.js → glb-viewer-camera-behaviour-bcc5faae.legacy.js} +2 -2
- package/lib/legacy/glb-viewer-camera-behaviour-bcc5faae.legacy.js.map +1 -0
- package/lib/legacy/glb-viewer-main.legacy.js +1 -1
- package/lib/legacy/{imos-ix-poc-export-helper-29f473ec.legacy.js → imos-ix-poc-export-helper-466840ef.legacy.js} +2 -2
- package/lib/legacy/imos-ix-poc-export-helper-466840ef.legacy.js.map +1 -0
- package/lib/legacy/{material-viewer-01dc1ff6.legacy.js → material-viewer-205cab5c.legacy.js} +2 -2
- package/lib/legacy/material-viewer-205cab5c.legacy.js.map +1 -0
- package/lib/legacy/material-viewer-main.legacy.js +1 -1
- package/lib/legacy/planner-e3cee8ba.legacy.js +2 -0
- package/lib/legacy/{planner-a87498bf.legacy.js.map → planner-e3cee8ba.legacy.js.map} +1 -1
- package/lib/legacy/planner-main.legacy.js +1 -1
- package/lib/legacy/roomle-configurator-b38e1351.legacy.js +2 -0
- package/lib/legacy/{roomle-configurator-0226891c.legacy.js.map → roomle-configurator-b38e1351.legacy.js.map} +1 -1
- package/lib/legacy/roomle-dependency-injection-ae5afa9a.legacy.js +9 -0
- package/lib/legacy/{roomle-dependency-injection-3f47127d.legacy.js.map → roomle-dependency-injection-ae5afa9a.legacy.js.map} +1 -1
- package/lib/legacy/roomle-sdk.legacy.js +1 -1
- package/lib/legacy/{script-loader-ad2c9b81.legacy.js → script-loader-4df671c2.legacy.js} +2 -2
- package/lib/legacy/script-loader-4df671c2.legacy.js.map +1 -0
- package/lib/legacy/static/{ConfiguratorKernel-f6bee740a3d99316.wasm → ConfiguratorKernel-7a35323bd5bc25ce.wasm} +0 -0
- package/lib/legacy/static/{RoomleCore-71e1c2d896d965c6.wasm → RoomleCore-741963c887f13583.wasm} +0 -0
- package/lib/{static/RoomleToolsCore-455b548d45396129.wasm → legacy/static/RoomleToolsCore-daa987b1e14cd78b.wasm} +0 -0
- package/lib/legacy/{stats-helper-c0791263.legacy.js → stats-helper-f1658191.legacy.js} +2 -2
- package/lib/legacy/stats-helper-f1658191.legacy.js.map +1 -0
- package/lib/legacy/{tools-core-86640c21.legacy.js → tools-core-b292bd7b.legacy.js} +2 -2
- package/lib/legacy/tools-core-b292bd7b.legacy.js.map +1 -0
- package/lib/{material-viewer-65e23374.js → material-viewer-48f21f88.js} +2 -2
- package/lib/material-viewer-48f21f88.js.map +1 -0
- package/lib/{material-viewer-63b07e30.nomodule.js → material-viewer-c700a0d7.nomodule.js} +2 -2
- package/lib/material-viewer-c700a0d7.nomodule.js.map +1 -0
- package/lib/material-viewer-main-c3f13949.js +2 -0
- package/lib/material-viewer-main-c3f13949.js.map +1 -0
- package/lib/material-viewer-main.nomodule.js +1 -1
- package/lib/planner-c3c524b4.js +2 -0
- package/lib/{planner-2a039e9f.js.map → planner-c3c524b4.js.map} +1 -1
- package/lib/planner-ce5d1586.nomodule.js +2 -0
- package/lib/{planner-3c57c810.nomodule.js.map → planner-ce5d1586.nomodule.js.map} +1 -1
- package/lib/planner-main-756e97f2.js +2 -0
- package/lib/planner-main-756e97f2.js.map +1 -0
- package/lib/planner-main.nomodule.js +1 -1
- package/lib/roomle-configurator-0ac5491c.js +2 -0
- package/lib/{roomle-configurator-e3f31c92.js.map → roomle-configurator-0ac5491c.js.map} +1 -1
- package/lib/roomle-configurator-bcabeac0.nomodule.js +2 -0
- package/lib/{roomle-configurator-14044b01.nomodule.js.map → roomle-configurator-bcabeac0.nomodule.js.map} +1 -1
- package/lib/roomle-dependency-injection-0bc1cf6d.js +9 -0
- package/lib/{roomle-dependency-injection-01a78f6e.js.map → roomle-dependency-injection-0bc1cf6d.js.map} +1 -1
- package/lib/roomle-dependency-injection-c8412f95.nomodule.js +9 -0
- package/lib/{roomle-dependency-injection-75ec793f.nomodule.js.map → roomle-dependency-injection-c8412f95.nomodule.js.map} +1 -1
- package/lib/{roomle-sdk-2341bf37.js → roomle-sdk-9e0df6d6.js} +2 -2
- package/lib/roomle-sdk-9e0df6d6.js.map +1 -0
- package/lib/roomle-sdk.nomodule.js +1 -1
- package/lib/{script-loader-0235f691.nomodule.js → script-loader-0f0f1813.nomodule.js} +2 -2
- package/lib/script-loader-0f0f1813.nomodule.js.map +1 -0
- package/lib/{script-loader-f3bb5970.js → script-loader-4c2eca55.js} +2 -2
- package/lib/script-loader-4c2eca55.js.map +1 -0
- package/lib/static/{ConfiguratorKernel-f6bee740a3d99316.wasm → ConfiguratorKernel-7a35323bd5bc25ce.wasm} +0 -0
- package/lib/static/{RoomleCore-71e1c2d896d965c6.wasm → RoomleCore-741963c887f13583.wasm} +0 -0
- package/lib/{legacy/static/RoomleToolsCore-455b548d45396129.wasm → static/RoomleToolsCore-daa987b1e14cd78b.wasm} +0 -0
- package/lib/{stats-helper-a179724b.js → stats-helper-004db0c3.js} +2 -2
- package/lib/stats-helper-004db0c3.js.map +1 -0
- package/lib/{stats-helper-11b1b15b.nomodule.js → stats-helper-d713330d.nomodule.js} +2 -2
- package/lib/stats-helper-d713330d.nomodule.js.map +1 -0
- package/lib/{tools-core-84d110dc.js → tools-core-d10738f6.js} +2 -2
- package/lib/tools-core-d10738f6.js.map +1 -0
- package/lib/{tools-core-0da648d5.nomodule.js → tools-core-ed473df8.nomodule.js} +2 -2
- package/lib/tools-core-ed473df8.nomodule.js.map +1 -0
- package/package.json +2 -2
- package/lib/camera-behaviour-23bb0632.nomodule.js +0 -2
- package/lib/component-dimensioning-87f955e1.js.map +0 -1
- package/lib/component-dimensioning-b8f3ac83.nomodule.js.map +0 -1
- package/lib/component-raycast-helper-20b8ab65.nomodule.js.map +0 -1
- package/lib/component-raycast-helper-5e1d9061.js.map +0 -1
- package/lib/configurator-39439f9f.js.map +0 -1
- package/lib/configurator-b7c14c7e.nomodule.js.map +0 -1
- package/lib/configurator-main-2692cc2c.js +0 -2
- package/lib/configurator-main-2692cc2c.js.map +0 -1
- package/lib/continuous-drawing-helper-1b153523.nomodule.js.map +0 -1
- package/lib/continuous-drawing-helper-c4d81566.js.map +0 -1
- package/lib/default-light-setting-d1311475.nomodule.js.map +0 -1
- package/lib/default-light-setting-d85282ec.js.map +0 -1
- package/lib/glb-viewer-camera-behaviour-70a364c0.js.map +0 -1
- package/lib/glb-viewer-camera-behaviour-83729568.nomodule.js.map +0 -1
- package/lib/glb-viewer-main-a3c87c89.js +0 -2
- package/lib/glb-viewer-main-a3c87c89.js.map +0 -1
- package/lib/imos-ix-poc-export-helper-18ca81d2.js.map +0 -1
- package/lib/imos-ix-poc-export-helper-363b387a.nomodule.js.map +0 -1
- package/lib/legacy/camera-behaviour-93d5da66.legacy.js +0 -2
- package/lib/legacy/component-dimensioning-7434957b.legacy.js.map +0 -1
- package/lib/legacy/component-raycast-helper-3ee11650.legacy.js.map +0 -1
- package/lib/legacy/configurator-6d986be2.legacy.js.map +0 -1
- package/lib/legacy/continuous-drawing-helper-a7b33c02.legacy.js.map +0 -1
- package/lib/legacy/default-light-setting-313288f6.legacy.js.map +0 -1
- package/lib/legacy/glb-viewer-camera-behaviour-326dd288.legacy.js.map +0 -1
- package/lib/legacy/imos-ix-poc-export-helper-29f473ec.legacy.js.map +0 -1
- package/lib/legacy/material-viewer-01dc1ff6.legacy.js.map +0 -1
- package/lib/legacy/planner-a87498bf.legacy.js +0 -2
- package/lib/legacy/roomle-configurator-0226891c.legacy.js +0 -2
- package/lib/legacy/roomle-dependency-injection-3f47127d.legacy.js +0 -9
- package/lib/legacy/script-loader-ad2c9b81.legacy.js.map +0 -1
- package/lib/legacy/stats-helper-c0791263.legacy.js.map +0 -1
- package/lib/legacy/tools-core-86640c21.legacy.js.map +0 -1
- package/lib/material-viewer-63b07e30.nomodule.js.map +0 -1
- package/lib/material-viewer-65e23374.js.map +0 -1
- package/lib/material-viewer-main-a6a7169c.js +0 -2
- package/lib/material-viewer-main-a6a7169c.js.map +0 -1
- package/lib/planner-2a039e9f.js +0 -2
- package/lib/planner-3c57c810.nomodule.js +0 -2
- package/lib/planner-main-10c68cf5.js +0 -2
- package/lib/planner-main-10c68cf5.js.map +0 -1
- package/lib/roomle-configurator-14044b01.nomodule.js +0 -2
- package/lib/roomle-configurator-e3f31c92.js +0 -2
- package/lib/roomle-dependency-injection-01a78f6e.js +0 -9
- package/lib/roomle-dependency-injection-75ec793f.nomodule.js +0 -9
- package/lib/roomle-sdk-2341bf37.js.map +0 -1
- package/lib/script-loader-0235f691.nomodule.js.map +0 -1
- package/lib/script-loader-f3bb5970.js.map +0 -1
- package/lib/stats-helper-11b1b15b.nomodule.js.map +0 -1
- package/lib/stats-helper-a179724b.js.map +0 -1
- package/lib/tools-core-0da648d5.nomodule.js.map +0 -1
- package/lib/tools-core-84d110dc.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roomle-configurator-e3f31c92.js","sources":["../../node_modules/three/src/math/Vector4.js","../../node_modules/three/src/math/Plane.js","../../node_modules/three/src/math/Frustum.js","../../node_modules/three/src/lights/LightShadow.js","../../node_modules/three/src/cameras/Camera.js","../../node_modules/three/src/cameras/PerspectiveCamera.js","../../node_modules/three/src/lights/PointLightShadow.js"],"sourcesContent":["import { clamp } from './MathUtils.js';\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\t\tthis.w /= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\t\tthis.w = e[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\t\tthis.w = clamp( this.w, min.w, max.w );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\t\tthis.w = clamp( this.w, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\nexport { Vector4 };\n","import { Matrix3 } from './Matrix3.js';\nimport { Vector3 } from './Vector3.js';\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nexport { Plane };\n","import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';\nimport { Vector3 } from './Vector3.js';\nimport { Sphere } from './Sphere.js';\nimport { Plane } from './Plane.js';\n\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _vector = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n\nexport { Frustum };\n","import { Matrix4 } from '../math/Matrix4.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { Vector4 } from '../math/Vector4.js';\nimport { Frustum } from '../math/Frustum.js';\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.intensity = 1;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.intensity = source.intensity;\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.intensity !== 1 ) object.intensity = this.intensity;\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nexport { LightShadow };\n","import { WebGLCoordinateSystem } from '../constants.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { Object3D } from '../core/Object3D.js';\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nexport { Camera };\n","import { Camera } from './Camera.js';\nimport { RAD2DEG, DEG2RAD } from '../math/MathUtils.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { Vector3 } from '../math/Vector3.js';\n\nconst _v3 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * @param {number} focalLength - Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t *\n\t * @returns {number}\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t *\n\t * @param {number} distance\n\t * @param {Vector2} minTarget\n\t * @param {Vector2} maxTarget\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3.x, _v3.y ).multiplyScalar( - distance / _v3.z );\n\n\t\t_v3.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3.x, _v3.y ).multiplyScalar( - distance / _v3.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t *\n\t * @param {number} distance\n\t * @param {Vector2} target - Vector2 target used to store result where x is width and y is height.\n\t * @returns {Vector2}\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t *\n\t * @param {number} fullWidth\n\t * @param {number} fullHeight\n\t * @param {number} x\n\t * @param {number} y\n\t * @param {number} width\n\t * @param {number} height\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nexport { PerspectiveCamera };\n","import { LightShadow } from './LightShadow.js';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { Vector4 } from '../math/Vector4.js';\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nexport { PointLightShadow };\n"],"names":["Vector4","[object Object]","x","y","z","w","prototype","isVector4","this","width","value","height","scalar","index","Error","constructor","v","undefined","s","a","b","m","e","elements","multiplyScalar","q","Math","acos","sqrt","angle","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","abs","set","PI","xx","yy","zz","xy","xz","yz","min","max","clamp","minVal","maxVal","length","divideScalar","floor","ceil","round","trunc","normalize","alpha","v1","v2","array","offset","attribute","getX","getY","getZ","getW","random","Symbol","iterator","_vector1","Vector3","_vector2","_normalMatrix","Matrix3","Plane","normal","constant","isPlane","copy","point","dot","c","subVectors","cross","setFromNormalAndCoplanarPoint","plane","inverseNormalLength","negate","sphere","distanceToPoint","center","radius","target","addScaledVector","line","direction","delta","denominator","start","t","startSign","endSign","end","box","intersectsPlane","matrix","optionalNormalMatrix","normalMatrix","getNormalMatrix","referencePoint","coplanarPoint","applyMatrix4","applyMatrix3","equals","_sphere","Sphere","_vector","Frustum","p0","p1","p2","p3","p4","p5","planes","frustum","i","coordinateSystem","WebGLCoordinateSystem","me","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","WebGPUCoordinateSystem","object","boundingSphere","computeBoundingSphere","matrixWorld","geometry","intersectsSphere","sprite","negRadius","_projScreenMatrix","Matrix4","_lightPositionWorld","_lookTarget","Camera","Object3D","super","isCamera","type","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","source","recursive","getWorldDirection","force","updateMatrixWorld","invert","updateParents","updateChildren","updateWorldMatrix","_v3","_minTarget","Vector2","_maxTarget","PerspectiveCamera","fov","aspect","near","far","isPerspectiveCamera","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","Object","assign","focalLength","vExtentSlope","getFilmHeight","RAD2DEG","atan","tan","DEG2RAD","distance","minTarget","maxTarget","getViewBounds","fullWidth","fullHeight","enabled","offsetX","offsetY","top","left","skew","getFilmWidth","makePerspective","meta","data","toJSON","PointLightShadow","camera","intensity","bias","normalBias","blurSamples","mapSize","map","mapPass","autoUpdate","needsUpdate","_frustum","_frameExtents","_viewportCount","_viewports","light","shadowCamera","shadowMatrix","setFromMatrixPosition","position","lookAt","multiplyMatrices","setFromProjectionMatrix","multiply","viewportIndex","dispose","clone","toArray","isPointLightShadow","_cubeDirections","_cubeUps","add","up","makeTranslation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"roomle-configurator-0ac5491c.js","sources":["../../node_modules/three/src/math/Vector4.js","../../node_modules/three/src/math/Plane.js","../../node_modules/three/src/math/Frustum.js","../../node_modules/three/src/lights/LightShadow.js","../../node_modules/three/src/cameras/Camera.js","../../node_modules/three/src/cameras/PerspectiveCamera.js","../../node_modules/three/src/lights/PointLightShadow.js"],"sourcesContent":["import { clamp } from './MathUtils.js';\n\nclass Vector4 {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tVector4.prototype.isVector4 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\t\tthis.w /= v.w;\n\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\t\tthis.w = e[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\t\tthis.w = clamp( this.w, min.w, max.w );\n\n\t\treturn this;\n\n\t}\n\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\t\tthis.w = clamp( this.w, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\nexport { Vector4 };\n","import { Matrix3 } from './Matrix3.js';\nimport { Vector3 } from './Vector3.js';\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\nclass Plane {\n\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\tthis.isPlane = true;\n\n\t\t// normal is assumed to be normalized\n\n\t\tthis.normal = normal;\n\t\tthis.constant = constant;\n\n\t}\n\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.constant *= - 1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nexport { Plane };\n","import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';\nimport { Vector3 } from './Vector3.js';\nimport { Sphere } from './Sphere.js';\nimport { Plane } from './Plane.js';\n\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _vector = /*@__PURE__*/ new Vector3();\n\nclass Frustum {\n\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere );\n\n\t}\n\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere.center.set( 0, 0, 0 );\n\t\t_sphere.radius = 0.7071067811865476;\n\t\t_sphere.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n\nexport { Frustum };\n","import { Matrix4 } from '../math/Matrix4.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { Vector4 } from '../math/Vector4.js';\nimport { Frustum } from '../math/Frustum.js';\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass LightShadow {\n\n\tconstructor( camera ) {\n\n\t\tthis.camera = camera;\n\n\t\tthis.intensity = 1;\n\n\t\tthis.bias = 0;\n\t\tthis.normalBias = 0;\n\t\tthis.radius = 1;\n\t\tthis.blurSamples = 8;\n\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\tthis.map = null;\n\t\tthis.mapPass = null;\n\t\tthis.matrix = new Matrix4();\n\n\t\tthis.autoUpdate = true;\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix );\n\n\t}\n\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.intensity = source.intensity;\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.intensity !== 1 ) object.intensity = this.intensity;\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\nexport { LightShadow };\n","import { WebGLCoordinateSystem } from '../constants.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { Object3D } from '../core/Object3D.js';\n\nclass Camera extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\tthis.projectionMatrix = new Matrix4();\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nexport { Camera };\n","import { Camera } from './Camera.js';\nimport { RAD2DEG, DEG2RAD } from '../math/MathUtils.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { Vector3 } from '../math/Vector3.js';\n\nconst _v3 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n\nclass PerspectiveCamera extends Camera {\n\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\tthis.fov = fov;\n\t\tthis.zoom = 1;\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.focus = 10;\n\n\t\tthis.aspect = aspect;\n\t\tthis.view = null;\n\n\t\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\n\t\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * @param {number} focalLength - Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Calculates the focal length from the current .fov and .filmGauge.\n\t *\n\t * @returns {number}\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t *\n\t * @param {number} distance\n\t * @param {Vector2} minTarget\n\t * @param {Vector2} maxTarget\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3.set( - 1, - 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3.x, _v3.y ).multiplyScalar( - distance / _v3.z );\n\n\t\t_v3.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3.x, _v3.y ).multiplyScalar( - distance / _v3.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t *\n\t * @param {number} distance\n\t * @param {Vector2} target - Vector2 target used to store result where x is width and y is height.\n\t * @returns {Vector2}\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *\n\t * +---+---+---+\n\t * | A | B | C |\n\t * +---+---+---+\n\t * | D | E | F |\n\t * +---+---+---+\n\t *\n\t * then for each monitor you would call it like this\n\t *\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t *\n\t * @param {number} fullWidth\n\t * @param {number} fullHeight\n\t * @param {number} x\n\t * @param {number} y\n\t * @param {number} width\n\t * @param {number} height\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = - 0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nexport { PerspectiveCamera };\n","import { LightShadow } from './LightShadow.js';\nimport { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { Vector2 } from '../math/Vector2.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { Vector4 } from '../math/Vector4.js';\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\nclass PointLightShadow extends LightShadow {\n\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t// xzXZ\n\t\t\t// y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\n\t\t];\n\n\t}\n\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\nexport { PointLightShadow };\n"],"names":["Vector4","[object Object]","x","y","z","w","prototype","isVector4","this","width","value","height","scalar","index","Error","constructor","v","undefined","s","a","b","m","e","elements","multiplyScalar","q","Math","acos","sqrt","angle","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","abs","set","PI","xx","yy","zz","xy","xz","yz","min","max","clamp","minVal","maxVal","length","divideScalar","floor","ceil","round","trunc","normalize","alpha","v1","v2","array","offset","attribute","getX","getY","getZ","getW","random","Symbol","iterator","_vector1","Vector3","_vector2","_normalMatrix","Matrix3","Plane","normal","constant","isPlane","copy","point","dot","c","subVectors","cross","setFromNormalAndCoplanarPoint","plane","inverseNormalLength","negate","sphere","distanceToPoint","center","radius","target","addScaledVector","line","direction","delta","denominator","start","t","startSign","endSign","end","box","intersectsPlane","matrix","optionalNormalMatrix","normalMatrix","getNormalMatrix","referencePoint","coplanarPoint","applyMatrix4","applyMatrix3","equals","_sphere","Sphere","_vector","Frustum","p0","p1","p2","p3","p4","p5","planes","frustum","i","coordinateSystem","WebGLCoordinateSystem","me","me0","me1","me2","me3","me4","me5","me6","me7","me8","me9","me10","me11","me12","me13","me14","me15","setComponents","WebGPUCoordinateSystem","object","boundingSphere","computeBoundingSphere","matrixWorld","geometry","intersectsSphere","sprite","negRadius","_projScreenMatrix","Matrix4","_lightPositionWorld","_lookTarget","Camera","Object3D","super","isCamera","type","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","source","recursive","getWorldDirection","force","updateMatrixWorld","invert","updateParents","updateChildren","updateWorldMatrix","_v3","_minTarget","Vector2","_maxTarget","PerspectiveCamera","fov","aspect","near","far","isPerspectiveCamera","zoom","focus","view","filmGauge","filmOffset","updateProjectionMatrix","Object","assign","focalLength","vExtentSlope","getFilmHeight","RAD2DEG","atan","tan","DEG2RAD","distance","minTarget","maxTarget","getViewBounds","fullWidth","fullHeight","enabled","offsetX","offsetY","top","left","skew","getFilmWidth","makePerspective","meta","data","toJSON","PointLightShadow","camera","intensity","bias","normalBias","blurSamples","mapSize","map","mapPass","autoUpdate","needsUpdate","_frustum","_frameExtents","_viewportCount","_viewports","light","shadowCamera","shadowMatrix","setFromMatrixPosition","position","lookAt","multiplyMatrices","setFromProjectionMatrix","multiply","viewportIndex","dispose","clone","toArray","isPointLightShadow","_cubeDirections","_cubeUps","add","up","makeTranslation"],"mappings":"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"}
|