@roomle/web-sdk 2.99.0 → 2.100.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/Object3D-2abce9d8.nomodule.js +2 -0
- package/lib/Object3D-2abce9d8.nomodule.js.map +1 -0
- package/lib/Object3D-80e9d0f8.js +2 -0
- package/lib/Object3D-80e9d0f8.js.map +1 -0
- package/lib/SpotLightHelper-56c85cfb.nomodule.js +2 -0
- package/lib/SpotLightHelper-56c85cfb.nomodule.js.map +1 -0
- package/lib/SpotLightHelper-79188e47.js +2 -0
- package/lib/SpotLightHelper-79188e47.js.map +1 -0
- package/lib/{banana-for-scale-22ad6a20.nomodule.js → banana-for-scale-795d9c6c.nomodule.js} +2 -2
- package/lib/{banana-for-scale-22ad6a20.nomodule.js.map → banana-for-scale-795d9c6c.nomodule.js.map} +1 -1
- package/lib/{banana-for-scale-da4282fd.js → banana-for-scale-c5d8d13e.js} +2 -2
- package/lib/{banana-for-scale-da4282fd.js.map → banana-for-scale-c5d8d13e.js.map} +1 -1
- package/lib/camera-behaviour-ceced6f1.nomodule.js +2 -0
- package/lib/{camera-behaviour-90408ba5.nomodule.js.map → camera-behaviour-ceced6f1.nomodule.js.map} +1 -1
- package/lib/camera-behaviour-fe3f4008.js +2 -0
- package/lib/{camera-behaviour-2f2ffe82.js.map → camera-behaviour-fe3f4008.js.map} +1 -1
- package/lib/{component-dimensioning-a5e291d6.nomodule.js → component-dimensioning-5417ce83.nomodule.js} +2 -2
- package/lib/component-dimensioning-5417ce83.nomodule.js.map +1 -0
- package/lib/{component-dimensioning-ca877f31.js → component-dimensioning-b575bfa7.js} +2 -2
- package/lib/component-dimensioning-b575bfa7.js.map +1 -0
- package/lib/{component-raycast-helper-785b39cd.js → component-raycast-helper-8faecce8.js} +2 -2
- package/lib/component-raycast-helper-8faecce8.js.map +1 -0
- package/lib/{component-raycast-helper-40f9eb14.nomodule.js → component-raycast-helper-cde6065c.nomodule.js} +2 -2
- package/lib/component-raycast-helper-cde6065c.nomodule.js.map +1 -0
- package/lib/configurator-0ad4d1f9.nomodule.js +2 -0
- package/lib/configurator-0ad4d1f9.nomodule.js.map +1 -0
- package/lib/configurator-4565594d.js +2 -0
- package/lib/configurator-4565594d.js.map +1 -0
- package/lib/configurator-main-c79ddf0c.js +2 -0
- package/lib/configurator-main-c79ddf0c.js.map +1 -0
- package/lib/configurator-main.nomodule.js +1 -1
- package/lib/continuous-drawing-helper-6a23cf51.js +2 -0
- package/lib/continuous-drawing-helper-6a23cf51.js.map +1 -0
- package/lib/continuous-drawing-helper-70637238.nomodule.js +2 -0
- package/lib/continuous-drawing-helper-70637238.nomodule.js.map +1 -0
- package/lib/default-light-setting-755cfddc.js +2 -0
- package/lib/default-light-setting-755cfddc.js.map +1 -0
- package/lib/default-light-setting-e6087240.nomodule.js +2 -0
- package/lib/default-light-setting-e6087240.nomodule.js.map +1 -0
- package/lib/definitions/common-core/src/cameracontrol/camera-control-3d.d.ts +2 -1
- package/lib/definitions/common-core/src/cameracontrol/configurator-camera-behaviour.d.ts +1 -1
- package/lib/definitions/common-core/src/utils/common-utils.d.ts +1 -0
- package/lib/definitions/common-core/src/utils/init-data.d.ts +3 -0
- package/lib/definitions/common-core/src/utils/shims.d.ts +8 -3
- package/lib/definitions/common-core/src/webgl/image-renderer.d.ts +1 -0
- package/lib/definitions/common-core/src/webgl/roomle-webgl-renderer.d.ts +3 -0
- package/lib/definitions/common-core/src/webgl/scene-manager.d.ts +1 -0
- package/lib/definitions/packages/common-core/src/cameracontrol/camera-control-3d.d.ts +2 -1
- package/lib/definitions/packages/common-core/src/cameracontrol/configurator-camera-behaviour.d.ts +1 -1
- package/lib/definitions/packages/common-core/src/utils/common-utils.d.ts +1 -0
- package/lib/definitions/packages/common-core/src/utils/init-data.d.ts +3 -0
- package/lib/definitions/packages/common-core/src/utils/shims.d.ts +8 -3
- package/lib/definitions/packages/common-core/src/webgl/image-renderer.d.ts +1 -0
- package/lib/definitions/packages/common-core/src/webgl/roomle-webgl-renderer.d.ts +3 -0
- package/lib/definitions/packages/common-core/src/webgl/scene-manager.d.ts +1 -0
- package/lib/definitions/packages/planner-core/src/lights/ceiling-light.d.ts +19 -0
- package/lib/definitions/packages/planner-core/src/lights/lamp-light.d.ts +9 -0
- package/lib/definitions/packages/planner-core/src/lights/light-group.d.ts +11 -0
- package/lib/definitions/packages/planner-core/src/lights/rect-area-light.d.ts +7 -0
- package/lib/definitions/packages/planner-core/src/roomle-planner-ui-callback.d.ts +1 -1
- package/lib/definitions/packages/planner-core/src/roomle-planner.d.ts +10 -2
- package/lib/definitions/packages/planner-core/src/utils/{planner-scene-manager.d.ts → planner-scene-utils.d.ts} +5 -2
- package/lib/definitions/packages/planner-core/src/view-model/floor-plan-element-view-model.d.ts +1 -0
- package/lib/definitions/packages/planner-core/src/view-model/plan-view-model.d.ts +21 -0
- package/lib/definitions/packages/planner-core/src/webgl/planner-scene-manager.d.ts +3 -6
- package/lib/definitions/packages/typings/planner.d.ts +7 -1
- package/lib/definitions/planner-core/src/lights/ceiling-light.d.ts +19 -0
- package/lib/definitions/planner-core/src/lights/lamp-light.d.ts +9 -0
- package/lib/definitions/planner-core/src/lights/light-group.d.ts +11 -0
- package/lib/definitions/planner-core/src/lights/rect-area-light.d.ts +7 -0
- package/lib/definitions/planner-core/src/roomle-planner-ui-callback.d.ts +1 -1
- package/lib/definitions/planner-core/src/roomle-planner.d.ts +10 -2
- package/lib/definitions/planner-core/src/utils/{planner-scene-manager.d.ts → planner-scene-utils.d.ts} +5 -2
- package/lib/definitions/planner-core/src/view-model/floor-plan-element-view-model.d.ts +1 -0
- package/lib/definitions/planner-core/src/view-model/plan-view-model.d.ts +21 -0
- package/lib/definitions/planner-core/src/webgl/planner-scene-manager.d.ts +3 -6
- package/lib/definitions/typings/planner.d.ts +7 -1
- package/lib/dimensioning-helper-089673fa.nomodule.js +2 -0
- package/lib/dimensioning-helper-089673fa.nomodule.js.map +1 -0
- package/lib/dimensioning-helper-ba9dbb6f.js +2 -0
- package/lib/{dimensioning-helper-fb456f28.js.map → dimensioning-helper-ba9dbb6f.js.map} +1 -1
- package/lib/glb-viewer-232298a7.nomodule.js +2 -0
- package/lib/{glb-viewer-58aa56b3.nomodule.js.map → glb-viewer-232298a7.nomodule.js.map} +1 -1
- package/lib/glb-viewer-bc27fd7c.js +2 -0
- package/lib/{glb-viewer-d4c6c346.js.map → glb-viewer-bc27fd7c.js.map} +1 -1
- package/lib/{glb-viewer-camera-behaviour-1b347e77.nomodule.js → glb-viewer-camera-behaviour-b9f0adaa.nomodule.js} +2 -2
- package/lib/glb-viewer-camera-behaviour-b9f0adaa.nomodule.js.map +1 -0
- package/lib/{glb-viewer-camera-behaviour-24e823bc.js → glb-viewer-camera-behaviour-f8871d34.js} +2 -2
- package/lib/glb-viewer-camera-behaviour-f8871d34.js.map +1 -0
- package/lib/glb-viewer-main-058270a7.js +2 -0
- package/lib/glb-viewer-main-058270a7.js.map +1 -0
- package/lib/glb-viewer-main.nomodule.js +1 -1
- package/lib/{imos-ix-poc-export-helper-b7a91cdb.nomodule.js → imos-ix-poc-export-helper-29ce417b.nomodule.js} +2 -2
- package/lib/imos-ix-poc-export-helper-29ce417b.nomodule.js.map +1 -0
- package/lib/{imos-ix-poc-export-helper-7b16b54e.js → imos-ix-poc-export-helper-43b4c646.js} +2 -2
- package/lib/imos-ix-poc-export-helper-43b4c646.js.map +1 -0
- package/lib/legacy/Object3D-1f141c55.legacy.js +2 -0
- package/lib/legacy/Object3D-1f141c55.legacy.js.map +1 -0
- package/lib/legacy/SpotLightHelper-28698e83.legacy.js +2 -0
- package/lib/legacy/SpotLightHelper-28698e83.legacy.js.map +1 -0
- package/lib/legacy/TextGeometry-559f28ce.legacy.js +2 -0
- package/lib/legacy/{TextGeometry-778d127b.legacy.js.map → TextGeometry-559f28ce.legacy.js.map} +1 -1
- package/lib/legacy/{banana-for-scale-b274801d.legacy.js → banana-for-scale-8a3d4091.legacy.js} +2 -2
- package/lib/legacy/{banana-for-scale-b274801d.legacy.js.map → banana-for-scale-8a3d4091.legacy.js.map} +1 -1
- package/lib/legacy/budgeteer-measure.legacy.js +1 -1
- package/lib/legacy/camera-behaviour-363a4e78.legacy.js +2 -0
- package/lib/legacy/{camera-behaviour-b47dbdd3.legacy.js.map → camera-behaviour-363a4e78.legacy.js.map} +1 -1
- package/lib/legacy/{component-dimensioning-a3ba2ba6.legacy.js → component-dimensioning-f92c2840.legacy.js} +2 -2
- package/lib/legacy/component-dimensioning-f92c2840.legacy.js.map +1 -0
- package/lib/legacy/{component-raycast-helper-a5178cda.legacy.js → component-raycast-helper-91c67dd6.legacy.js} +2 -2
- package/lib/legacy/component-raycast-helper-91c67dd6.legacy.js.map +1 -0
- package/lib/legacy/configurator-bdb72223.legacy.js +2 -0
- package/lib/legacy/configurator-bdb72223.legacy.js.map +1 -0
- package/lib/legacy/configurator-main.legacy.js +1 -1
- package/lib/legacy/continuous-drawing-helper-e8db250c.legacy.js +2 -0
- package/lib/legacy/continuous-drawing-helper-e8db250c.legacy.js.map +1 -0
- package/lib/legacy/default-light-setting-07ced87c.legacy.js +2 -0
- package/lib/legacy/default-light-setting-07ced87c.legacy.js.map +1 -0
- package/lib/legacy/dimensioning-helper-bb3492c7.legacy.js +2 -0
- package/lib/legacy/dimensioning-helper-bb3492c7.legacy.js.map +1 -0
- package/lib/legacy/external-objects-01d5a216.legacy.js +2 -0
- package/lib/legacy/external-objects-01d5a216.legacy.js.map +1 -0
- package/lib/legacy/{glb-viewer-camera-behaviour-4be0da6a.legacy.js → glb-viewer-camera-behaviour-8a35f77c.legacy.js} +2 -2
- package/lib/legacy/glb-viewer-camera-behaviour-8a35f77c.legacy.js.map +1 -0
- package/lib/legacy/glb-viewer-d69f6cae.legacy.js +2 -0
- package/lib/legacy/{glb-viewer-d3854b02.legacy.js.map → glb-viewer-d69f6cae.legacy.js.map} +1 -1
- package/lib/legacy/glb-viewer-main.legacy.js +1 -1
- package/lib/legacy/{imos-ix-poc-export-helper-ee70d653.legacy.js → imos-ix-poc-export-helper-ca5160da.legacy.js} +2 -2
- package/lib/legacy/imos-ix-poc-export-helper-ca5160da.legacy.js.map +1 -0
- package/lib/legacy/{main-thread-to-worker-da6ad96a.legacy.js → main-thread-to-worker-32b45184.legacy.js} +3 -3
- package/lib/legacy/{main-thread-to-worker-da6ad96a.legacy.js.map → main-thread-to-worker-32b45184.legacy.js.map} +1 -1
- package/lib/legacy/material-viewer-770e3a93.legacy.js +2 -0
- package/lib/legacy/material-viewer-770e3a93.legacy.js.map +1 -0
- package/lib/legacy/material-viewer-main.legacy.js +1 -1
- package/lib/legacy/planner-53e1ae1f.legacy.js +2 -0
- package/lib/legacy/{planner-f0a71818.legacy.js.map → planner-53e1ae1f.legacy.js.map} +1 -1
- package/lib/legacy/planner-main.legacy.js +1 -1
- package/lib/legacy/query-params-helper-ad6b6b64.legacy.js +2 -0
- package/lib/legacy/query-params-helper-ad6b6b64.legacy.js.map +1 -0
- package/lib/legacy/roomle-configurator-2ab0523e.legacy.js +2 -0
- package/lib/legacy/roomle-configurator-2ab0523e.legacy.js.map +1 -0
- package/lib/legacy/roomle-dependency-injection-39798155.legacy.js +9 -0
- package/lib/legacy/{roomle-dependency-injection-058aa06f.legacy.js.map → roomle-dependency-injection-39798155.legacy.js.map} +1 -1
- package/lib/legacy/roomle-sdk.legacy.js +1 -1
- package/lib/legacy/{script-loader-9921991a.legacy.js → script-loader-6f4bb7db.legacy.js} +2 -2
- package/lib/legacy/script-loader-6f4bb7db.legacy.js.map +1 -0
- package/lib/legacy/static/ConfiguratorKernel-eb2b45aa8bdd5c73.wasm +0 -0
- package/lib/legacy/static/RoomleCore-a4df483fa6f93517.wasm +0 -0
- package/lib/legacy/static/RoomleToolsCore-9ea339d54e57756a.wasm +0 -0
- package/lib/legacy/{stats-helper-c7bf779b.legacy.js → stats-helper-e75d2585.legacy.js} +2 -2
- package/lib/legacy/stats-helper-e75d2585.legacy.js.map +1 -0
- package/lib/legacy/{tools-core-645fb16a.legacy.js → tools-core-c5e76ffc.legacy.js} +2 -2
- package/lib/legacy/tools-core-c5e76ffc.legacy.js.map +1 -0
- package/lib/material-viewer-a489d3c2.nomodule.js +2 -0
- package/lib/material-viewer-a489d3c2.nomodule.js.map +1 -0
- package/lib/material-viewer-f818f681.js +2 -0
- package/lib/material-viewer-f818f681.js.map +1 -0
- package/lib/material-viewer-main-a4985787.js +2 -0
- package/lib/material-viewer-main-a4985787.js.map +1 -0
- package/lib/material-viewer-main.nomodule.js +1 -1
- package/lib/planner-32c9b79e.nomodule.js +2 -0
- package/lib/{planner-cb1acb4d.nomodule.js.map → planner-32c9b79e.nomodule.js.map} +1 -1
- package/lib/planner-9b39cf77.js +2 -0
- package/lib/{planner-a30840a8.js.map → planner-9b39cf77.js.map} +1 -1
- package/lib/planner-main-32eac04d.js +2 -0
- package/lib/planner-main-32eac04d.js.map +1 -0
- package/lib/planner-main.nomodule.js +1 -1
- package/lib/roomle-configurator-2d336119.nomodule.js +2 -0
- package/lib/roomle-configurator-2d336119.nomodule.js.map +1 -0
- package/lib/roomle-configurator-3bf23b9e.js +2 -0
- package/lib/roomle-configurator-3bf23b9e.js.map +1 -0
- package/lib/{roomle-dependency-injection-8fd89dfe.js → roomle-dependency-injection-c52a0000.js} +3 -3
- package/lib/{roomle-dependency-injection-8fd89dfe.js.map → roomle-dependency-injection-c52a0000.js.map} +1 -1
- package/lib/roomle-dependency-injection-e789a72d.nomodule.js +9 -0
- package/lib/{roomle-dependency-injection-22befdc7.nomodule.js.map → roomle-dependency-injection-e789a72d.nomodule.js.map} +1 -1
- package/lib/{roomle-sdk-3f72ba15.js → roomle-sdk-b28548bd.js} +2 -2
- package/lib/roomle-sdk-b28548bd.js.map +1 -0
- package/lib/roomle-sdk.nomodule.js +1 -1
- package/lib/{script-loader-36a9dcdc.js → script-loader-524d3415.js} +2 -2
- package/lib/script-loader-524d3415.js.map +1 -0
- package/lib/{script-loader-8e8886dd.nomodule.js → script-loader-f57678af.nomodule.js} +2 -2
- package/lib/script-loader-f57678af.nomodule.js.map +1 -0
- package/lib/static/ConfiguratorKernel-eb2b45aa8bdd5c73.wasm +0 -0
- package/lib/static/RoomleCore-a4df483fa6f93517.wasm +0 -0
- package/lib/static/RoomleToolsCore-9ea339d54e57756a.wasm +0 -0
- package/lib/{stats-helper-b5614bb9.js → stats-helper-8557e89e.js} +2 -2
- package/lib/stats-helper-8557e89e.js.map +1 -0
- package/lib/{stats-helper-1a0748a7.nomodule.js → stats-helper-a6ed29fb.nomodule.js} +2 -2
- package/lib/stats-helper-a6ed29fb.nomodule.js.map +1 -0
- package/lib/{tools-core-43082fe5.js → tools-core-26ff177e.js} +2 -2
- package/lib/tools-core-26ff177e.js.map +1 -0
- package/lib/{tools-core-a5f68507.nomodule.js → tools-core-feefe6d1.nomodule.js} +2 -2
- package/lib/tools-core-feefe6d1.nomodule.js.map +1 -0
- package/package.json +2 -2
- package/lib/camera-behaviour-2f2ffe82.js +0 -2
- package/lib/camera-behaviour-90408ba5.nomodule.js +0 -2
- package/lib/component-dimensioning-a5e291d6.nomodule.js.map +0 -1
- package/lib/component-dimensioning-ca877f31.js.map +0 -1
- package/lib/component-raycast-helper-40f9eb14.nomodule.js.map +0 -1
- package/lib/component-raycast-helper-785b39cd.js.map +0 -1
- package/lib/configurator-2d025a93.nomodule.js +0 -2
- package/lib/configurator-2d025a93.nomodule.js.map +0 -1
- package/lib/configurator-3e5c27eb.js +0 -2
- package/lib/configurator-3e5c27eb.js.map +0 -1
- package/lib/configurator-main-f75e4553.js +0 -2
- package/lib/configurator-main-f75e4553.js.map +0 -1
- package/lib/continuous-drawing-helper-ae2fcdd3.js +0 -2
- package/lib/continuous-drawing-helper-ae2fcdd3.js.map +0 -1
- package/lib/continuous-drawing-helper-c71ae2ed.nomodule.js +0 -2
- package/lib/continuous-drawing-helper-c71ae2ed.nomodule.js.map +0 -1
- package/lib/default-light-setting-98201048.nomodule.js +0 -2
- package/lib/default-light-setting-98201048.nomodule.js.map +0 -1
- package/lib/default-light-setting-ba00bf2b.js +0 -2
- package/lib/default-light-setting-ba00bf2b.js.map +0 -1
- package/lib/dimensioning-helper-4d7e768a.nomodule.js +0 -2
- package/lib/dimensioning-helper-4d7e768a.nomodule.js.map +0 -1
- package/lib/dimensioning-helper-fb456f28.js +0 -2
- package/lib/glb-viewer-58aa56b3.nomodule.js +0 -2
- package/lib/glb-viewer-camera-behaviour-1b347e77.nomodule.js.map +0 -1
- package/lib/glb-viewer-camera-behaviour-24e823bc.js.map +0 -1
- package/lib/glb-viewer-d4c6c346.js +0 -2
- package/lib/glb-viewer-main-64179adf.js +0 -2
- package/lib/glb-viewer-main-64179adf.js.map +0 -1
- package/lib/imos-ix-poc-export-helper-7b16b54e.js.map +0 -1
- package/lib/imos-ix-poc-export-helper-b7a91cdb.nomodule.js.map +0 -1
- package/lib/legacy/TextGeometry-778d127b.legacy.js +0 -2
- package/lib/legacy/camera-behaviour-b47dbdd3.legacy.js +0 -2
- package/lib/legacy/component-dimensioning-a3ba2ba6.legacy.js.map +0 -1
- package/lib/legacy/component-raycast-helper-a5178cda.legacy.js.map +0 -1
- package/lib/legacy/configurator-002d161a.legacy.js +0 -2
- package/lib/legacy/configurator-002d161a.legacy.js.map +0 -1
- package/lib/legacy/continuous-drawing-helper-654d7604.legacy.js +0 -2
- package/lib/legacy/continuous-drawing-helper-654d7604.legacy.js.map +0 -1
- package/lib/legacy/default-light-setting-af961df8.legacy.js +0 -2
- package/lib/legacy/default-light-setting-af961df8.legacy.js.map +0 -1
- package/lib/legacy/dimensioning-helper-4baa9955.legacy.js +0 -2
- package/lib/legacy/dimensioning-helper-4baa9955.legacy.js.map +0 -1
- package/lib/legacy/external-objects-2fd4ef1a.legacy.js +0 -2
- package/lib/legacy/external-objects-2fd4ef1a.legacy.js.map +0 -1
- package/lib/legacy/glb-viewer-camera-behaviour-4be0da6a.legacy.js.map +0 -1
- package/lib/legacy/glb-viewer-d3854b02.legacy.js +0 -2
- package/lib/legacy/imos-ix-poc-export-helper-ee70d653.legacy.js.map +0 -1
- package/lib/legacy/material-viewer-117426bc.legacy.js +0 -2
- package/lib/legacy/material-viewer-117426bc.legacy.js.map +0 -1
- package/lib/legacy/planner-f0a71818.legacy.js +0 -2
- package/lib/legacy/query-params-helper-e3e05119.legacy.js +0 -2
- package/lib/legacy/query-params-helper-e3e05119.legacy.js.map +0 -1
- package/lib/legacy/roomle-configurator-6db65c94.legacy.js +0 -2
- package/lib/legacy/roomle-configurator-6db65c94.legacy.js.map +0 -1
- package/lib/legacy/roomle-dependency-injection-058aa06f.legacy.js +0 -9
- package/lib/legacy/script-loader-9921991a.legacy.js.map +0 -1
- package/lib/legacy/static/ConfiguratorKernel-e0b064b9d4228a3b.wasm +0 -0
- package/lib/legacy/static/RoomleCore-e599a6ccf3dd7c2a.wasm +0 -0
- package/lib/legacy/static/RoomleToolsCore-83af26798774f70c.wasm +0 -0
- package/lib/legacy/stats-helper-c7bf779b.legacy.js.map +0 -1
- package/lib/legacy/tools-core-645fb16a.legacy.js.map +0 -1
- package/lib/material-viewer-8c7e05be.nomodule.js +0 -2
- package/lib/material-viewer-8c7e05be.nomodule.js.map +0 -1
- package/lib/material-viewer-d211106c.js +0 -2
- package/lib/material-viewer-d211106c.js.map +0 -1
- package/lib/material-viewer-main-9668a68c.js +0 -2
- package/lib/material-viewer-main-9668a68c.js.map +0 -1
- package/lib/planner-a30840a8.js +0 -2
- package/lib/planner-cb1acb4d.nomodule.js +0 -2
- package/lib/planner-main-5c76b2c2.js +0 -2
- package/lib/planner-main-5c76b2c2.js.map +0 -1
- package/lib/roomle-configurator-a11055fd.nomodule.js +0 -2
- package/lib/roomle-configurator-a11055fd.nomodule.js.map +0 -1
- package/lib/roomle-configurator-ab3900ec.js +0 -2
- package/lib/roomle-configurator-ab3900ec.js.map +0 -1
- package/lib/roomle-dependency-injection-22befdc7.nomodule.js +0 -9
- package/lib/roomle-sdk-3f72ba15.js.map +0 -1
- package/lib/script-loader-36a9dcdc.js.map +0 -1
- package/lib/script-loader-8e8886dd.nomodule.js.map +0 -1
- package/lib/static/ConfiguratorKernel-e0b064b9d4228a3b.wasm +0 -0
- package/lib/static/RoomleCore-e599a6ccf3dd7c2a.wasm +0 -0
- package/lib/static/RoomleToolsCore-83af26798774f70c.wasm +0 -0
- package/lib/stats-helper-1a0748a7.nomodule.js.map +0 -1
- package/lib/stats-helper-b5614bb9.js.map +0 -1
- package/lib/tools-core-43082fe5.js.map +0 -1
- package/lib/tools-core-a5f68507.nomodule.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Object3D-80e9d0f8.js","sources":["../../node_modules/three/src/constants.js","../../node_modules/three/src/math/MathUtils.js","../../node_modules/three/src/math/Quaternion.js","../../node_modules/three/src/math/Vector3.js","../../node_modules/three/src/math/Matrix4.js","../../node_modules/three/src/math/Vector2.js","../../node_modules/three/src/math/Box3.js","../../node_modules/three/src/math/Sphere.js","../../node_modules/three/src/math/Matrix3.js","../../node_modules/three/src/core/EventDispatcher.js","../../node_modules/three/src/math/Euler.js","../../node_modules/three/src/core/Layers.js","../../node_modules/three/src/core/Object3D.js"],"sourcesContent":["export const REVISION = '173';\n\nexport const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nexport const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nexport const CullFaceNone = 0;\nexport const CullFaceBack = 1;\nexport const CullFaceFront = 2;\nexport const CullFaceFrontBack = 3;\nexport const BasicShadowMap = 0;\nexport const PCFShadowMap = 1;\nexport const PCFSoftShadowMap = 2;\nexport const VSMShadowMap = 3;\nexport const FrontSide = 0;\nexport const BackSide = 1;\nexport const DoubleSide = 2;\nexport const NoBlending = 0;\nexport const NormalBlending = 1;\nexport const AdditiveBlending = 2;\nexport const SubtractiveBlending = 3;\nexport const MultiplyBlending = 4;\nexport const CustomBlending = 5;\nexport const AddEquation = 100;\nexport const SubtractEquation = 101;\nexport const ReverseSubtractEquation = 102;\nexport const MinEquation = 103;\nexport const MaxEquation = 104;\nexport const ZeroFactor = 200;\nexport const OneFactor = 201;\nexport const SrcColorFactor = 202;\nexport const OneMinusSrcColorFactor = 203;\nexport const SrcAlphaFactor = 204;\nexport const OneMinusSrcAlphaFactor = 205;\nexport const DstAlphaFactor = 206;\nexport const OneMinusDstAlphaFactor = 207;\nexport const DstColorFactor = 208;\nexport const OneMinusDstColorFactor = 209;\nexport const SrcAlphaSaturateFactor = 210;\nexport const ConstantColorFactor = 211;\nexport const OneMinusConstantColorFactor = 212;\nexport const ConstantAlphaFactor = 213;\nexport const OneMinusConstantAlphaFactor = 214;\nexport const NeverDepth = 0;\nexport const AlwaysDepth = 1;\nexport const LessDepth = 2;\nexport const LessEqualDepth = 3;\nexport const EqualDepth = 4;\nexport const GreaterEqualDepth = 5;\nexport const GreaterDepth = 6;\nexport const NotEqualDepth = 7;\nexport const MultiplyOperation = 0;\nexport const MixOperation = 1;\nexport const AddOperation = 2;\nexport const NoToneMapping = 0;\nexport const LinearToneMapping = 1;\nexport const ReinhardToneMapping = 2;\nexport const CineonToneMapping = 3;\nexport const ACESFilmicToneMapping = 4;\nexport const CustomToneMapping = 5;\nexport const AgXToneMapping = 6;\nexport const NeutralToneMapping = 7;\nexport const AttachedBindMode = 'attached';\nexport const DetachedBindMode = 'detached';\n\nexport const UVMapping = 300;\nexport const CubeReflectionMapping = 301;\nexport const CubeRefractionMapping = 302;\nexport const EquirectangularReflectionMapping = 303;\nexport const EquirectangularRefractionMapping = 304;\nexport const CubeUVReflectionMapping = 306;\nexport const RepeatWrapping = 1000;\nexport const ClampToEdgeWrapping = 1001;\nexport const MirroredRepeatWrapping = 1002;\nexport const NearestFilter = 1003;\nexport const NearestMipmapNearestFilter = 1004;\nexport const NearestMipMapNearestFilter = 1004;\nexport const NearestMipmapLinearFilter = 1005;\nexport const NearestMipMapLinearFilter = 1005;\nexport const LinearFilter = 1006;\nexport const LinearMipmapNearestFilter = 1007;\nexport const LinearMipMapNearestFilter = 1007;\nexport const LinearMipmapLinearFilter = 1008;\nexport const LinearMipMapLinearFilter = 1008;\nexport const UnsignedByteType = 1009;\nexport const ByteType = 1010;\nexport const ShortType = 1011;\nexport const UnsignedShortType = 1012;\nexport const IntType = 1013;\nexport const UnsignedIntType = 1014;\nexport const FloatType = 1015;\nexport const HalfFloatType = 1016;\nexport const UnsignedShort4444Type = 1017;\nexport const UnsignedShort5551Type = 1018;\nexport const UnsignedInt248Type = 1020;\nexport const UnsignedInt5999Type = 35902;\nexport const AlphaFormat = 1021;\nexport const RGBFormat = 1022;\nexport const RGBAFormat = 1023;\nexport const LuminanceFormat = 1024;\nexport const LuminanceAlphaFormat = 1025;\nexport const DepthFormat = 1026;\nexport const DepthStencilFormat = 1027;\nexport const RedFormat = 1028;\nexport const RedIntegerFormat = 1029;\nexport const RGFormat = 1030;\nexport const RGIntegerFormat = 1031;\nexport const RGBIntegerFormat = 1032;\nexport const RGBAIntegerFormat = 1033;\n\nexport const RGB_S3TC_DXT1_Format = 33776;\nexport const RGBA_S3TC_DXT1_Format = 33777;\nexport const RGBA_S3TC_DXT3_Format = 33778;\nexport const RGBA_S3TC_DXT5_Format = 33779;\nexport const RGB_PVRTC_4BPPV1_Format = 35840;\nexport const RGB_PVRTC_2BPPV1_Format = 35841;\nexport const RGBA_PVRTC_4BPPV1_Format = 35842;\nexport const RGBA_PVRTC_2BPPV1_Format = 35843;\nexport const RGB_ETC1_Format = 36196;\nexport const RGB_ETC2_Format = 37492;\nexport const RGBA_ETC2_EAC_Format = 37496;\nexport const RGBA_ASTC_4x4_Format = 37808;\nexport const RGBA_ASTC_5x4_Format = 37809;\nexport const RGBA_ASTC_5x5_Format = 37810;\nexport const RGBA_ASTC_6x5_Format = 37811;\nexport const RGBA_ASTC_6x6_Format = 37812;\nexport const RGBA_ASTC_8x5_Format = 37813;\nexport const RGBA_ASTC_8x6_Format = 37814;\nexport const RGBA_ASTC_8x8_Format = 37815;\nexport const RGBA_ASTC_10x5_Format = 37816;\nexport const RGBA_ASTC_10x6_Format = 37817;\nexport const RGBA_ASTC_10x8_Format = 37818;\nexport const RGBA_ASTC_10x10_Format = 37819;\nexport const RGBA_ASTC_12x10_Format = 37820;\nexport const RGBA_ASTC_12x12_Format = 37821;\nexport const RGBA_BPTC_Format = 36492;\nexport const RGB_BPTC_SIGNED_Format = 36494;\nexport const RGB_BPTC_UNSIGNED_Format = 36495;\nexport const RED_RGTC1_Format = 36283;\nexport const SIGNED_RED_RGTC1_Format = 36284;\nexport const RED_GREEN_RGTC2_Format = 36285;\nexport const SIGNED_RED_GREEN_RGTC2_Format = 36286;\nexport const LoopOnce = 2200;\nexport const LoopRepeat = 2201;\nexport const LoopPingPong = 2202;\nexport const InterpolateDiscrete = 2300;\nexport const InterpolateLinear = 2301;\nexport const InterpolateSmooth = 2302;\nexport const ZeroCurvatureEnding = 2400;\nexport const ZeroSlopeEnding = 2401;\nexport const WrapAroundEnding = 2402;\nexport const NormalAnimationBlendMode = 2500;\nexport const AdditiveAnimationBlendMode = 2501;\nexport const TrianglesDrawMode = 0;\nexport const TriangleStripDrawMode = 1;\nexport const TriangleFanDrawMode = 2;\nexport const BasicDepthPacking = 3200;\nexport const RGBADepthPacking = 3201;\nexport const RGBDepthPacking = 3202;\nexport const RGDepthPacking = 3203;\nexport const TangentSpaceNormalMap = 0;\nexport const ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nexport const NoColorSpace = '';\nexport const SRGBColorSpace = 'srgb';\nexport const LinearSRGBColorSpace = 'srgb-linear';\n\nexport const LinearTransfer = 'linear';\nexport const SRGBTransfer = 'srgb';\n\nexport const ZeroStencilOp = 0;\nexport const KeepStencilOp = 7680;\nexport const ReplaceStencilOp = 7681;\nexport const IncrementStencilOp = 7682;\nexport const DecrementStencilOp = 7683;\nexport const IncrementWrapStencilOp = 34055;\nexport const DecrementWrapStencilOp = 34056;\nexport const InvertStencilOp = 5386;\n\nexport const NeverStencilFunc = 512;\nexport const LessStencilFunc = 513;\nexport const EqualStencilFunc = 514;\nexport const LessEqualStencilFunc = 515;\nexport const GreaterStencilFunc = 516;\nexport const NotEqualStencilFunc = 517;\nexport const GreaterEqualStencilFunc = 518;\nexport const AlwaysStencilFunc = 519;\n\nexport const NeverCompare = 512;\nexport const LessCompare = 513;\nexport const EqualCompare = 514;\nexport const LessEqualCompare = 515;\nexport const GreaterCompare = 516;\nexport const NotEqualCompare = 517;\nexport const GreaterEqualCompare = 518;\nexport const AlwaysCompare = 519;\n\nexport const StaticDrawUsage = 35044;\nexport const DynamicDrawUsage = 35048;\nexport const StreamDrawUsage = 35040;\nexport const StaticReadUsage = 35045;\nexport const DynamicReadUsage = 35049;\nexport const StreamReadUsage = 35041;\nexport const StaticCopyUsage = 35046;\nexport const DynamicCopyUsage = 35050;\nexport const StreamCopyUsage = 35042;\n\nexport const GLSL1 = '100';\nexport const GLSL3 = '300 es';\n\nexport const WebGLCoordinateSystem = 2000;\nexport const WebGPUCoordinateSystem = 2001;\n\nexport const TimestampQuery = {\n\tCOMPUTE: 'compute',\n\tRENDER: 'render'\n};\n","const _lut = [ '00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '0a', '0b', '0c', '0d', '0e', '0f', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1a', '1b', '1c', '1d', '1e', '1f', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '2a', '2b', '2c', '2d', '2e', '2f', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '3a', '3b', '3c', '3d', '3e', '3f', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '4a', '4b', '4c', '4d', '4e', '4f', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59', '5a', '5b', '5c', '5d', '5e', '5f', '60', '61', '62', '63', '64', '65', '66', '67', '68', '69', '6a', '6b', '6c', '6d', '6e', '6f', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79', '7a', '7b', '7c', '7d', '7e', '7f', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '8a', '8b', '8c', '8d', '8e', '8f', '90', '91', '92', '93', '94', '95', '96', '97', '98', '99', '9a', '9b', '9c', '9d', '9e', '9f', 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'aa', 'ab', 'ac', 'ad', 'ae', 'af', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'b7', 'b8', 'b9', 'ba', 'bb', 'bc', 'bd', 'be', 'bf', 'c0', 'c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'ca', 'cb', 'cc', 'cd', 'ce', 'cf', 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', 'd8', 'd9', 'da', 'db', 'dc', 'dd', 'de', 'df', 'e0', 'e1', 'e2', 'e3', 'e4', 'e5', 'e6', 'e7', 'e8', 'e9', 'ea', 'eb', 'ec', 'ed', 'ee', 'ef', 'f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'fa', 'fb', 'fc', 'fd', 'fe', 'ff' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\nfunction generateUUID() {\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n// compute euclidean modulo of m % n\n// https://en.wikipedia.org/wiki/Modulo_operation\nfunction euclideanModulo( n, m ) {\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n// Linear mapping from range <a1, a2> to range <b1, b2>\nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\nfunction inverseLerp( x, y, value ) {\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n// https://en.wikipedia.org/wiki/Linear_interpolation\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n// https://www.desmos.com/calculator/vcsjnyz7x4\nfunction pingpong( x, length = 1 ) {\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n// http://en.wikipedia.org/wiki/Smoothstep\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n// Random integer from <low, high> interval\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n// Random float from <low, high> interval\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n// Random float from <-range/2, range/2> interval\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n// Deterministic pseudo-random float in the interval [ 0, 1 ]\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\n\n\t// rotations are applied to the axes in the order specified by 'order'\n\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\n\t// angles are in radians\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, - 1.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, - 1.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, - 1.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\nexport {\n\tDEG2RAD,\n\tRAD2DEG,\n\tgenerateUUID,\n\tclamp,\n\teuclideanModulo,\n\tmapLinear,\n\tinverseLerp,\n\tlerp,\n\tdamp,\n\tpingpong,\n\tsmoothstep,\n\tsmootherstep,\n\trandInt,\n\trandFloat,\n\trandFloatSpread,\n\tseededRandom,\n\tdegToRad,\n\tradToDeg,\n\tisPowerOfTwo,\n\tceilPowerOfTwo,\n\tfloorPowerOfTwo,\n\tsetQuaternionFromProperEuler,\n\tnormalize,\n\tdenormalize,\n\tMathUtils\n};\n","import { clamp } from './MathUtils.js';\n\nclass Quaternion {\n\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\tthis.isQuaternion = 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\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\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\tthis._onChangeCallback();\n\n\t\treturn this;\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( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\t// assumes axis is normalized\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = 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\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), - 1, 1 ) ) );\n\n\t}\n\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\tinvert() {\n\n\t\t// quaternion is assumed to have unit length\n\n\t\treturn this.conjugate();\n\n\t}\n\n\tconjugate() {\n\n\t\tthis._x *= - 1;\n\t\tthis._y *= - 1;\n\t\tthis._z *= - 1;\n\n\t\tthis._onChangeCallback();\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\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\trandom() {\n\n\t\t// sets this quaternion to a uniform random unit quaternnion\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\n\t\t);\n\n\t}\n\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._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\tthis._onChangeCallback();\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\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\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 { Quaternion };\n","import { clamp } from './MathUtils.js';\nimport { Quaternion } from './Quaternion.js';\n\nclass Vector3 {\n\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\tVector3.prototype.isVector3 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t}\n\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\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\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\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\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\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 );\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\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\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\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\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\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\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\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\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\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\n\t\treturn this;\n\n\t}\n\n\tmultiplyVectors( 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\n\t\treturn this;\n\n\t}\n\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\n\n\t}\n\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\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\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\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\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\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\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\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\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\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\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\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\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\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\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;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\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\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\n\t\treturn this;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector );\n\n\t}\n\n\treflect( normal ) {\n\n\t\t// reflect incident vector off plane orthogonal to normal\n\t\t// normal is assumed to have unit length\n\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\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\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\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 ) );\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\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\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\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\n\t\treturn this;\n\n\t}\n\n\trandomDirection() {\n\n\t\t// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\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\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nexport { Vector3 };\n","import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';\nimport { Vector3 } from './Vector3.js';\n\nclass Matrix4 {\n\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\textractRotation( m ) {\n\n\t\t// this method does not support reflection matrices\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1.elements[ 0 ] *= invSX;\n\t\t_m1.elements[ 1 ] *= invSX;\n\t\t_m1.elements[ 2 ] *= invSX;\n\n\t\t_m1.elements[ 4 ] *= invSY;\n\t\t_m1.elements[ 5 ] *= invSY;\n\t\t_m1.elements[ 6 ] *= invSY;\n\n\t\t_m1.elements[ 8 ] *= invSZ;\n\t\t_m1.elements[ 9 ] *= invSZ;\n\t\t_m1.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( - 2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = - 2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = - 1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nexport { Matrix4 };\n","import { clamp } from './MathUtils.js';\n\nclass Vector2 {\n\n\tconstructor( x = 0, y = 0 ) {\n\n\t\tVector2.prototype.isVector2 = true;\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t}\n\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = 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\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\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\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 );\n\n\t}\n\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\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\n\t\treturn this;\n\n\t}\n\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += 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\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\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\n\t\treturn this;\n\n\t}\n\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= 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\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\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\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\n\t\treturn this;\n\n\t}\n\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\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\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\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\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\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\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\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\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\n\t\treturn this;\n\n\t}\n\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\tangle() {\n\n\t\t// computes the angle in radians with respect to the positive x-axis\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, - 1, 1 ) );\n\n\t}\n\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\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\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\n\t\treturn this;\n\n\t}\n\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\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\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\n\t\treturn this;\n\n\t}\n\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\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\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\nexport { Vector2 };\n","import { Vector3 } from './Vector3.js';\n\nclass Box3 {\n\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\tthis.isBox3 = true;\n\n\t\tthis.min = min;\n\t\tthis.max = max;\n\n\t}\n\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y &&\n\t\t\tpoint.z >= this.min.z && point.z <= this.max.z;\n\n\t}\n\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y &&\n\t\t\tbox.max.z >= this.min.z && box.min.z <= this.max.z;\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0.subVectors( triangle.a, _center );\n\t\t_v1.subVectors( triangle.b, _center );\n\t\t_v2.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1, _v0 );\n\t\t_f1.subVectors( _v2, _v1 );\n\t\t_f2.subVectors( _v0, _v2 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0, _v1, _v2, _extents );\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector ).distanceTo( point );\n\n\t}\n\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector = /*@__PURE__*/ new Vector3();\n\nconst _box = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nexport { Box3 };\n","import { Box3 } from './Box3.js';\nimport { Vector3 } from './Vector3.js';\n\nconst _box = /*@__PURE__*/ new Box3();\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\n\nclass Sphere {\n\n\tconstructor( center = new Vector3(), radius = - 1 ) {\n\n\t\tthis.isSphere = true;\n\n\t\tthis.center = center;\n\t\tthis.radius = radius;\n\n\t}\n\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = - 1;\n\n\t\treturn this;\n\n\t}\n\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1.copy( sphere.center ).add( _v2 ) );\n\n\t\t\tthis.expandByPoint( _v1.copy( sphere.center ).sub( _v2 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nexport { Sphere };\n","class Matrix3 {\n\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t//\n\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nexport { Matrix3 };\n","/**\n * https://github.com/mrdoob/eventdispatcher.js/\n */\n\nclass EventDispatcher {\n\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\thasEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return false;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\n\n\t}\n\n\tremoveEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== - 1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\n\nexport { EventDispatcher };\n","import { Quaternion } from './Quaternion.js';\nimport { Matrix4 } from './Matrix4.js';\nimport { clamp } from './MathUtils.js';\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nclass Euler {\n\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\n\n\t}\n\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\treorder( newOrder ) {\n\n\t\t// WARNING: this discards revolution information -bhouston\n\n\t\t_quaternion.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion, newOrder );\n\n\t}\n\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\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._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\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._order;\n\n\t}\n\n}\n\nEuler.DEFAULT_ORDER = 'XYZ';\n\nexport { Euler };\n","class Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\n\nexport { Layers };\n","import { Quaternion } from '../math/Quaternion.js';\nimport { Vector3 } from '../math/Vector3.js';\nimport { Matrix4 } from '../math/Matrix4.js';\nimport { EventDispatcher } from './EventDispatcher.js';\nimport { Euler } from '../math/Euler.js';\nimport { Layers } from './Layers.js';\nimport { Matrix3 } from '../math/Matrix3.js';\nimport { generateUUID } from '../math/MathUtils.js';\n\nlet _object3DId = 0;\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\nconst _addedEvent = { type: 'added' };\nconst _removedEvent = { type: 'removed' };\n\nconst _childaddedEvent = { type: 'childadded', child: null };\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\nclass Object3D extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isObject3D = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'Object3D';\n\n\t\tthis.parent = null;\n\t\tthis.children = [];\n\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\tthis.matrix = new Matrix4();\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\tthis.layers = new Layers();\n\t\tthis.visible = true;\n\n\t\tthis.castShadow = false;\n\t\tthis.receiveShadow = false;\n\n\t\tthis.frustumCulled = true;\n\t\tthis.renderOrder = 0;\n\n\t\tthis.animations = [];\n\n\t\tthis.userData = {};\n\n\t}\n\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1.lookAt( _position, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1.lookAt( _target, _position, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\n\n\t\treturn this;\n\n\t}\n\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, target );\n\n\t\treturn target;\n\n\t}\n\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\traycast( /* raycaster, intersects */ ) {}\n\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// make sure descendants are updated if required\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tchild.updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// make sure descendants are updated\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxInstanceCount = this._maxInstanceCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this._colorsTexture !== null ) object.colorsTexture = this._colorsTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nexport { Object3D };\n"],"names":["FrontSide","NormalBlending","AddEquation","SrcAlphaFactor","OneMinusSrcAlphaFactor","LessEqualDepth","FloatType","NoColorSpace","SRGBColorSpace","LinearSRGBColorSpace","LinearTransfer","SRGBTransfer","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","WebGLCoordinateSystem","WebGPUCoordinateSystem","_lut","DEG2RAD","Math","PI","RAD2DEG","generateUUID","d0","random","d1","d2","d3","toLowerCase","clamp","value","min","max","euclideanModulo","n","m","lerp","x","y","t","denormalize","array","constructor","Float32Array","Uint32Array","Uint16Array","Uint8Array","Int32Array","Int16Array","Int8Array","Error","normalize","round","Quaternion","[object Object]","z","w","this","isQuaternion","_x","_y","_z","_w","dst","dstOffset","src0","srcOffset0","src1","srcOffset1","x0","y0","z0","w0","x1","y1","z1","w1","s","cos","dir","sqrSin","Number","EPSILON","sin","sqrt","len","atan2","tDir","f","_onChangeCallback","quaternion","euler","update","order","_order","c1","c2","c3","s1","s2","s3","console","warn","axis","angle","halfAngle","te","elements","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","vFrom","vTo","r","dot","abs","q","acos","step","angleTo","slerp","set","conjugate","v","l","length","multiplyQuaternions","a","b","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","qb","copy","cosHalfTheta","sqrSinHalfTheta","sinHalfTheta","halfTheta","ratioA","ratioB","qa","theta1","theta2","r1","r2","offset","attribute","index","getX","getY","getZ","getW","toArray","callback","Symbol","iterator","Vector3","prototype","isVector3","undefined","scalar","applyQuaternion","_quaternion","setFromEuler","setFromAxisAngle","e","applyMatrix3","vx","vy","vz","qx","qy","qz","qw","tx","ty","tz","camera","applyMatrix4","matrixWorldInverse","projectionMatrix","projectionMatrixInverse","matrixWorld","multiplyScalar","minVal","maxVal","divideScalar","floor","ceil","trunc","alpha","v1","v2","crossVectors","ax","ay","az","bx","by","bz","denominator","lengthSq","planeNormal","_vector","projectOnVector","sub","normal","theta","distanceToSquared","dx","dy","dz","setFromSphericalCoords","radius","phi","sinPhiRadius","c","setFromCylindricalCoords","sx","setFromMatrixColumn","sy","sz","fromArray","g","u","Matrix4","n11","n12","n13","n14","n21","n22","n23","n24","n31","n32","n33","n34","n41","n42","n43","n44","isMatrix4","me","xAxis","yAxis","zAxis","scaleX","_v1","scaleY","scaleZ","d","ae","af","be","bf","ce","cf","de","df","ac","ad","bc","bd","compose","_zero","_one","eye","target","up","subVectors","multiplyMatrices","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","tmp","t11","t12","t13","t14","det","detInv","scaleXSq","scaleYSq","scaleZSq","xy","xz","yx","yz","zx","zy","position","scale","x2","y2","z2","xx","yy","zz","wx","wy","wz","determinant","_m1","invSX","invSY","invSZ","setFromRotationMatrix","left","right","top","bottom","near","far","coordinateSystem","h","p","zInv","matrix","i","Vector2","isVector2","width","height","center","Box3","isBox3","makeEmpty","il","expandByPoint","count","fromBufferAttribute","points","size","halfSize","add","object","precise","expandByObject","box","isEmpty","addVectors","point","vector","addScalar","updateWorldMatrix","geometry","positionAttribute","getAttribute","isInstancedMesh","isMesh","getVertexPosition","boundingBox","computeBoundingBox","_box","union","children","sphere","clampPoint","plane","constant","triangle","getCenter","_center","_extents","_v0","_v2","_f0","_f1","_f2","axes","satForAxes","_triangleNormal","distanceTo","getSize","_points","setFromPoints","equals","_testAxis","v0","extents","j","p0","p1","p2","Sphere","isSphere","optionalCenter","maxRadiusSq","radiusSum","intersectsSphere","distanceToPoint","deltaLengthSq","expandByScalar","getMaxScaleOnAxis","delta","addScaledVector","setLength","Matrix3","isMatrix3","setFromMatrix3Column","matrix4","setFromMatrix4","invert","transpose","rotation","cx","cy","premultiply","_m3","makeScale","makeRotation","makeTranslation","EventDispatcher","type","listener","_listeners","listeners","indexOf","push","listenerArray","splice","event","slice","call","_matrix","Euler","DEFAULT_ORDER","isEuler","asin","makeRotationFromQuaternion","newOrder","setFromQuaternion","Layers","mask","channel","layers","_object3DId","_q1","_target","_position","_scale","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","_childaddedEvent","child","_childremovedEvent","Object3D","super","isObject3D","Object","defineProperty","uuid","name","parent","DEFAULT_UP","clone","_onChange","defineProperties","configurable","enumerable","modelViewMatrix","normalMatrix","matrixAutoUpdate","DEFAULT_MATRIX_AUTO_UPDATE","matrixWorldAutoUpdate","DEFAULT_MATRIX_WORLD_AUTO_UPDATE","matrixWorldNeedsUpdate","visible","castShadow","receiveShadow","frustumCulled","renderOrder","animations","userData","updateMatrix","decompose","multiply","rotateOnAxis","distance","translateOnAxis","setFromMatrixPosition","isCamera","isLight","lookAt","extractRotation","arguments","error","removeFromParent","dispatchEvent","remove","id","getObjectByProperty","result","getObjectsByProperty","traverse","traverseVisible","traverseAncestors","force","updateMatrixWorld","updateParents","updateChildren","meta","isRootObject","output","geometries","materials","textures","images","shapes","skeletons","nodes","metadata","version","generator","serialize","library","element","toJSON","keys","instanceMatrix","instanceColor","isBatchedMesh","perObjectFrustumCulled","sortObjects","drawRanges","_drawRanges","reservedRanges","_reservedRanges","visibility","_visibility","active","_active","bounds","_bounds","map","bound","boxInitialized","boxMin","boxMax","sphereInitialized","sphereRadius","sphereCenter","maxInstanceCount","_maxInstanceCount","maxVertexCount","_maxVertexCount","maxIndexCount","_maxIndexCount","geometryInitialized","_geometryInitialized","geometryCount","_geometryCount","matricesTexture","_matricesTexture","_colorsTexture","colorsTexture","boundingSphere","isScene","background","isColor","isTexture","environment","isRenderTargetTexture","isLine","isPoints","parameters","Array","isArray","shape","isSkinnedMesh","bindMode","bindMatrix","skeleton","material","uuids","animation","extractFromCache","cache","values","key","data","recursive","source","JSON","parse","stringify"],"mappings":"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"}
|