@iwsdk/core 0.1.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/LICENSE +21 -0
- package/dist/asset/asset-manager.d.ts +72 -0
- package/dist/asset/asset-manager.d.ts.map +1 -0
- package/dist/asset/asset-manager.js +138 -0
- package/dist/asset/asset-manager.js.map +1 -0
- package/dist/asset/cache-manager.d.ts +44 -0
- package/dist/asset/cache-manager.d.ts.map +1 -0
- package/dist/asset/cache-manager.js +80 -0
- package/dist/asset/cache-manager.js.map +1 -0
- package/dist/asset/index.d.ts +9 -0
- package/dist/asset/index.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.d.ts +21 -0
- package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.js +57 -0
- package/dist/asset/loaders/audio-loader.js.map +1 -0
- package/dist/asset/loaders/gltf-loader.d.ts +33 -0
- package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
- package/dist/asset/loaders/gltf-loader.js +79 -0
- package/dist/asset/loaders/gltf-loader.js.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.js +65 -0
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
- package/dist/asset/loaders/texture-loader.d.ts +21 -0
- package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/texture-loader.js +57 -0
- package/dist/asset/loaders/texture-loader.js.map +1 -0
- package/dist/audio/audio-pool.d.ts +59 -0
- package/dist/audio/audio-pool.d.ts.map +1 -0
- package/dist/audio/audio-pool.js +105 -0
- package/dist/audio/audio-pool.js.map +1 -0
- package/dist/audio/audio-system.d.ts +326 -0
- package/dist/audio/audio-system.d.ts.map +1 -0
- package/dist/audio/audio-system.js +478 -0
- package/dist/audio/audio-system.js.map +1 -0
- package/dist/audio/audio-utils.d.ts +71 -0
- package/dist/audio/audio-utils.d.ts.map +1 -0
- package/dist/audio/audio-utils.js +145 -0
- package/dist/audio/audio-utils.js.map +1 -0
- package/dist/audio/audio.d.ts +178 -0
- package/dist/audio/audio.d.ts.map +1 -0
- package/dist/audio/audio.js +104 -0
- package/dist/audio/audio.js.map +1 -0
- package/dist/audio/index.d.ts +11 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/ecs/component-registry.d.ts +54 -0
- package/dist/ecs/component-registry.d.ts.map +1 -0
- package/dist/ecs/component-registry.js +86 -0
- package/dist/ecs/component-registry.js.map +1 -0
- package/dist/ecs/component.d.ts +12 -0
- package/dist/ecs/component.d.ts.map +1 -0
- package/dist/ecs/entity.d.ts +17 -0
- package/dist/ecs/entity.d.ts.map +1 -0
- package/dist/ecs/entity.js +13 -0
- package/dist/ecs/entity.js.map +1 -0
- package/dist/ecs/index.d.ts +12 -0
- package/dist/ecs/index.d.ts.map +1 -0
- package/dist/ecs/system.d.ts +70 -0
- package/dist/ecs/system.d.ts.map +1 -0
- package/dist/ecs/system.js +79 -0
- package/dist/ecs/system.js.map +1 -0
- package/dist/ecs/world.d.ts +101 -0
- package/dist/ecs/world.d.ts.map +1 -0
- package/dist/ecs/world.js +165 -0
- package/dist/ecs/world.js.map +1 -0
- package/dist/environment/dome-gradient.d.ts +39 -0
- package/dist/environment/dome-gradient.d.ts.map +1 -0
- package/dist/environment/dome-gradient.js +30 -0
- package/dist/environment/dome-gradient.js.map +1 -0
- package/dist/environment/dome-texture.d.ts +39 -0
- package/dist/environment/dome-texture.d.ts.map +1 -0
- package/dist/environment/dome-texture.js +30 -0
- package/dist/environment/dome-texture.js.map +1 -0
- package/dist/environment/environment-system.d.ts +82 -0
- package/dist/environment/environment-system.d.ts.map +1 -0
- package/dist/environment/environment-system.js +389 -0
- package/dist/environment/environment-system.js.map +1 -0
- package/dist/environment/gradient-environment.d.ts +37 -0
- package/dist/environment/gradient-environment.d.ts.map +1 -0
- package/dist/environment/gradient-environment.js +99 -0
- package/dist/environment/gradient-environment.js.map +1 -0
- package/dist/environment/ibl-gradient.d.ts +38 -0
- package/dist/environment/ibl-gradient.d.ts.map +1 -0
- package/dist/environment/ibl-gradient.js +29 -0
- package/dist/environment/ibl-gradient.js.map +1 -0
- package/dist/environment/ibl-texture.d.ts +36 -0
- package/dist/environment/ibl-texture.d.ts.map +1 -0
- package/dist/environment/ibl-texture.js +30 -0
- package/dist/environment/ibl-texture.js.map +1 -0
- package/dist/environment/index.d.ts +12 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.d.ts +115 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.js +102 -0
- package/dist/grab/distance-grabbable.js.map +1 -0
- package/dist/grab/grab-system.d.ts +320 -0
- package/dist/grab/grab-system.d.ts.map +1 -0
- package/dist/grab/grab-system.js +239 -0
- package/dist/grab/grab-system.js.map +1 -0
- package/dist/grab/handles.d.ts +43 -0
- package/dist/grab/handles.d.ts.map +1 -0
- package/dist/grab/handles.js +132 -0
- package/dist/grab/handles.js.map +1 -0
- package/dist/grab/index.d.ts +13 -0
- package/dist/grab/index.d.ts.map +1 -0
- package/dist/grab/index.js +23 -0
- package/dist/grab/index.js.map +1 -0
- package/dist/grab/one-hand-grabbable.d.ts +80 -0
- package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
- package/dist/grab/one-hand-grabbable.js +80 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -0
- package/dist/grab/pointer-events-patch.d.ts +16 -0
- package/dist/grab/pointer-events-patch.d.ts.map +1 -0
- package/dist/grab/pointer-events-patch.js +223 -0
- package/dist/grab/pointer-events-patch.js.map +1 -0
- package/dist/grab/two-hands-grabbable.d.ts +103 -0
- package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
- package/dist/grab/two-hands-grabbable.js +100 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/init/index.d.ts +9 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/world-initializer.d.ts +76 -0
- package/dist/init/world-initializer.d.ts.map +1 -0
- package/dist/init/world-initializer.js +403 -0
- package/dist/init/world-initializer.js.map +1 -0
- package/dist/init/xr.d.ts +87 -0
- package/dist/init/xr.d.ts.map +1 -0
- package/dist/init/xr.js +193 -0
- package/dist/init/xr.js.map +1 -0
- package/dist/input/index.d.ts +9 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/input-system.d.ts +52 -0
- package/dist/input/input-system.d.ts.map +1 -0
- package/dist/input/input-system.js +176 -0
- package/dist/input/input-system.js.map +1 -0
- package/dist/input/state-tags.d.ts +56 -0
- package/dist/input/state-tags.d.ts.map +1 -0
- package/dist/input/state-tags.js +63 -0
- package/dist/input/state-tags.js.map +1 -0
- package/dist/level/index.d.ts +12 -0
- package/dist/level/index.d.ts.map +1 -0
- package/dist/level/level-entity-creator.d.ts +27 -0
- package/dist/level/level-entity-creator.d.ts.map +1 -0
- package/dist/level/level-entity-creator.js +110 -0
- package/dist/level/level-entity-creator.js.map +1 -0
- package/dist/level/level-glxf-importer.d.ts +22 -0
- package/dist/level/level-glxf-importer.d.ts.map +1 -0
- package/dist/level/level-glxf-importer.js +40 -0
- package/dist/level/level-glxf-importer.js.map +1 -0
- package/dist/level/level-root.d.ts +18 -0
- package/dist/level/level-root.d.ts.map +1 -0
- package/dist/level/level-root.js +25 -0
- package/dist/level/level-root.js.map +1 -0
- package/dist/level/level-system.d.ts +54 -0
- package/dist/level/level-system.d.ts.map +1 -0
- package/dist/level/level-system.js +134 -0
- package/dist/level/level-system.js.map +1 -0
- package/dist/level/level-tag.d.ts +25 -0
- package/dist/level/level-tag.d.ts.map +1 -0
- package/dist/level/level-tag.js +28 -0
- package/dist/level/level-tag.js.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
- package/dist/locomotion/index.d.ts +11 -0
- package/dist/locomotion/index.d.ts.map +1 -0
- package/dist/locomotion/locomotion.d.ts +239 -0
- package/dist/locomotion/locomotion.d.ts.map +1 -0
- package/dist/locomotion/locomotion.js +256 -0
- package/dist/locomotion/locomotion.js.map +1 -0
- package/dist/locomotion/materials/line.d.ts +24 -0
- package/dist/locomotion/materials/line.d.ts.map +1 -0
- package/dist/locomotion/materials/line.js +307 -0
- package/dist/locomotion/materials/line.js.map +1 -0
- package/dist/locomotion/slide.d.ts +76 -0
- package/dist/locomotion/slide.d.ts.map +1 -0
- package/dist/locomotion/slide.js +131 -0
- package/dist/locomotion/slide.js.map +1 -0
- package/dist/locomotion/teleport.d.ts +68 -0
- package/dist/locomotion/teleport.d.ts.map +1 -0
- package/dist/locomotion/teleport.js +150 -0
- package/dist/locomotion/teleport.js.map +1 -0
- package/dist/locomotion/turn.d.ts +77 -0
- package/dist/locomotion/turn.d.ts.map +1 -0
- package/dist/locomotion/turn.js +126 -0
- package/dist/locomotion/turn.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +13 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +154 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
- package/dist/physics/index.d.ts +11 -0
- package/dist/physics/index.d.ts.map +1 -0
- package/dist/physics/physics-system.d.ts +314 -0
- package/dist/physics/physics-system.d.ts.map +1 -0
- package/dist/physics/physics-system.js +419 -0
- package/dist/physics/physics-system.js.map +1 -0
- package/dist/physics/physicsBody.d.ts +83 -0
- package/dist/physics/physicsBody.d.ts.map +1 -0
- package/dist/physics/physicsBody.js +60 -0
- package/dist/physics/physicsBody.js.map +1 -0
- package/dist/physics/physicsManipulation.d.ts +51 -0
- package/dist/physics/physicsManipulation.d.ts.map +1 -0
- package/dist/physics/physicsManipulation.js +46 -0
- package/dist/physics/physicsManipulation.js.map +1 -0
- package/dist/physics/physicsShape.d.ts +133 -0
- package/dist/physics/physicsShape.d.ts.map +1 -0
- package/dist/physics/physicsShape.js +97 -0
- package/dist/physics/physicsShape.js.map +1 -0
- package/dist/physics/utils.d.ts +21 -0
- package/dist/physics/utils.d.ts.map +1 -0
- package/dist/physics/utils.js +130 -0
- package/dist/physics/utils.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/three.d.ts +8 -0
- package/dist/runtime/three.d.ts.map +1 -0
- package/dist/runtime/three.js +18 -0
- package/dist/runtime/three.js.map +1 -0
- package/dist/scene-understanding/anchor.d.ts +42 -0
- package/dist/scene-understanding/anchor.d.ts.map +1 -0
- package/dist/scene-understanding/anchor.js +45 -0
- package/dist/scene-understanding/anchor.js.map +1 -0
- package/dist/scene-understanding/index.d.ts +11 -0
- package/dist/scene-understanding/index.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.d.ts +67 -0
- package/dist/scene-understanding/mesh.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.js +55 -0
- package/dist/scene-understanding/mesh.js.map +1 -0
- package/dist/scene-understanding/plane.d.ts +39 -0
- package/dist/scene-understanding/plane.d.ts.map +1 -0
- package/dist/scene-understanding/plane.js +42 -0
- package/dist/scene-understanding/plane.js.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.js +342 -0
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
- package/dist/transform/index.d.ts +10 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.d.ts +35 -0
- package/dist/transform/synced-quaternion.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.js +128 -0
- package/dist/transform/synced-quaternion.js.map +1 -0
- package/dist/transform/synced-vector3.d.ts +34 -0
- package/dist/transform/synced-vector3.d.ts.map +1 -0
- package/dist/transform/synced-vector3.js +106 -0
- package/dist/transform/synced-vector3.js.map +1 -0
- package/dist/transform/transform.d.ts +100 -0
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/transform/transform.js +194 -0
- package/dist/transform/transform.js.map +1 -0
- package/dist/types/webxr-augmentations.d.ts +23 -0
- package/dist/types/webxr-augmentations.d.ts.map +1 -0
- package/dist/ui/document.d.ts +112 -0
- package/dist/ui/document.d.ts.map +1 -0
- package/dist/ui/document.js +298 -0
- package/dist/ui/document.js.map +1 -0
- package/dist/ui/follow.d.ts +197 -0
- package/dist/ui/follow.d.ts.map +1 -0
- package/dist/ui/follow.js +143 -0
- package/dist/ui/follow.js.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/screenspace.d.ts +219 -0
- package/dist/ui/screenspace.d.ts.map +1 -0
- package/dist/ui/screenspace.js +215 -0
- package/dist/ui/screenspace.js.map +1 -0
- package/dist/ui/ui.d.ts +209 -0
- package/dist/ui/ui.d.ts.map +1 -0
- package/dist/ui/ui.js +185 -0
- package/dist/ui/ui.js.map +1 -0
- package/dist/vendor/basis/README.md +46 -0
- package/dist/vendor/basis/basis_transcoder.js +19 -0
- package/dist/vendor/basis/basis_transcoder.wasm +0 -0
- package/dist/vendor/draco/README.md +32 -0
- package/dist/vendor/draco/draco_decoder.js +34 -0
- package/dist/vendor/draco/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/draco_encoder.js +33 -0
- package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
- package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/visibility/index.d.ts +8 -0
- package/dist/visibility/index.d.ts.map +1 -0
- package/dist/visibility/visibility.d.ts +37 -0
- package/dist/visibility/visibility.d.ts.map +1 -0
- package/dist/visibility/visibility.js +52 -0
- package/dist/visibility/visibility.js.map +1 -0
- package/package.json +46 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
8
|
+
import type { World } from '../ecs/index.js';
|
|
9
|
+
import { LoadingManager, Texture, WebGLRenderer } from '../runtime/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Asset types supported by the {@link AssetManager}.
|
|
12
|
+
* @category Assets
|
|
13
|
+
*/
|
|
14
|
+
export declare enum AssetType {
|
|
15
|
+
GLTF = "gltf",// 3D models (cached)
|
|
16
|
+
Audio = "audio",// Audio buffers (cached)
|
|
17
|
+
Texture = "texture",// 3D textures (cached)
|
|
18
|
+
HDRTexture = "hdr-texture"
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Declarative manifest for preloading assets.
|
|
22
|
+
* @category Assets
|
|
23
|
+
*/
|
|
24
|
+
export interface AssetManifest {
|
|
25
|
+
[key: string]: {
|
|
26
|
+
url: string;
|
|
27
|
+
type: AssetType;
|
|
28
|
+
priority?: 'critical' | 'background';
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Loader-level options for GLTF/HDR loaders. @category Assets */
|
|
32
|
+
export interface AssetManagerOptions {
|
|
33
|
+
dracoDecoderPath: string;
|
|
34
|
+
ktx2TranscoderPath: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Centralized asset loader with caching and priority‑based preloading.
|
|
38
|
+
*
|
|
39
|
+
* @remarks
|
|
40
|
+
* - Initializes loader instances against a shared `LoadingManager`.
|
|
41
|
+
* - `preloadAssets` loads critical assets first (blocking), then starts background ones.
|
|
42
|
+
* - Use `getGLTF`/`getTexture`/`getAudio` to retrieve cached results by key.
|
|
43
|
+
* @category Assets
|
|
44
|
+
*/
|
|
45
|
+
export declare class AssetManager {
|
|
46
|
+
static loadingManager: LoadingManager;
|
|
47
|
+
static world: World;
|
|
48
|
+
/**
|
|
49
|
+
* Initialize loaders and bind to the current world/renderer.
|
|
50
|
+
*/
|
|
51
|
+
static init(renderer: WebGLRenderer, world: World, options?: Partial<AssetManagerOptions>): void;
|
|
52
|
+
/** Preload assets with critical/background prioritization. */
|
|
53
|
+
static preloadAssets(manifest: AssetManifest): Promise<void>;
|
|
54
|
+
private static loadAssetByType;
|
|
55
|
+
/** Load a GLTF by URL; optionally register a logical key. */
|
|
56
|
+
static loadGLTF(url: string, key?: string): Promise<GLTF>;
|
|
57
|
+
/** Fetch any cached asset by logical key. */
|
|
58
|
+
static getAsset(key: string): any;
|
|
59
|
+
/** Load an AudioBuffer by URL; optionally register a logical key. */
|
|
60
|
+
static loadAudio(url: string, key?: string): Promise<AudioBuffer>;
|
|
61
|
+
/** Get a cached AudioBuffer by logical key. */
|
|
62
|
+
static getAudio(key: string): AudioBuffer | null;
|
|
63
|
+
/** Load a Texture by URL; optionally register a logical key. */
|
|
64
|
+
static loadTexture(url: string, key?: string): Promise<Texture>;
|
|
65
|
+
/** Get a cached Texture by logical key. */
|
|
66
|
+
static getTexture(key: string): Texture | null;
|
|
67
|
+
/** Load an HDR equirectangular texture; optionally register a logical key. */
|
|
68
|
+
static loadHDRTexture(url: string, key?: string): Promise<Texture>;
|
|
69
|
+
/** Get a cached GLTF by logical key. */
|
|
70
|
+
static getGLTF(key: string): GLTF | null;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=asset-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-manager.d.ts","sourceRoot":"","sources":["../../src/asset/asset-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAO7E;;;GAGG;AACH,oBAAY,SAAS;IACnB,IAAI,SAAS,CAAE,qBAAqB;IACpC,KAAK,UAAU,CAAE,yBAAyB;IAC1C,OAAO,YAAY,CAAE,uBAAuB;IAC5C,UAAU,gBAAgB;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,CAAC;QAChB,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;KACtC,CAAC;CACH;AAED,kEAAkE;AAClE,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAY5C,8DAA8D;WACjD,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;mBA0B7C,eAAe;IAmBpC,6DAA6D;IAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,6CAA6C;IAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAKjC,qEAAqE;WACxD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASvE,+CAA+C;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIhD,gEAAgE;WACnD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASrE,2CAA2C;IAC3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAI9C,8EAA8E;WACjE,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxE,wCAAwC;IACxC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAGzC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import '../runtime/three.js';
|
|
2
|
+
import { CacheManager } from './cache-manager.js';
|
|
3
|
+
import { AudioAssetLoader } from './loaders/audio-loader.js';
|
|
4
|
+
import { GLTFAssetLoader } from './loaders/gltf-loader.js';
|
|
5
|
+
import { HDRTextureAssetLoader } from './loaders/hdr-texture-loader.js';
|
|
6
|
+
import { TextureAssetLoader } from './loaders/texture-loader.js';
|
|
7
|
+
import { LoadingManager } from 'three';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
11
|
+
*
|
|
12
|
+
* This source code is licensed under the MIT license found in the
|
|
13
|
+
* LICENSE file in the root directory of this source tree.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Asset types supported by the {@link AssetManager}.
|
|
17
|
+
* @category Assets
|
|
18
|
+
*/
|
|
19
|
+
var AssetType;
|
|
20
|
+
(function (AssetType) {
|
|
21
|
+
AssetType["GLTF"] = "gltf";
|
|
22
|
+
AssetType["Audio"] = "audio";
|
|
23
|
+
AssetType["Texture"] = "texture";
|
|
24
|
+
AssetType["HDRTexture"] = "hdr-texture";
|
|
25
|
+
})(AssetType || (AssetType = {}));
|
|
26
|
+
/**
|
|
27
|
+
* Centralized asset loader with caching and priority‑based preloading.
|
|
28
|
+
*
|
|
29
|
+
* @remarks
|
|
30
|
+
* - Initializes loader instances against a shared `LoadingManager`.
|
|
31
|
+
* - `preloadAssets` loads critical assets first (blocking), then starts background ones.
|
|
32
|
+
* - Use `getGLTF`/`getTexture`/`getAudio` to retrieve cached results by key.
|
|
33
|
+
* @category Assets
|
|
34
|
+
*/
|
|
35
|
+
class AssetManager {
|
|
36
|
+
/**
|
|
37
|
+
* Initialize loaders and bind to the current world/renderer.
|
|
38
|
+
*/
|
|
39
|
+
static init(renderer, world, options = {}) {
|
|
40
|
+
this.world = world;
|
|
41
|
+
this.loadingManager = new LoadingManager();
|
|
42
|
+
// Initialize all specialized loaders
|
|
43
|
+
AudioAssetLoader.init(this.loadingManager);
|
|
44
|
+
GLTFAssetLoader.init(this.loadingManager, renderer, options);
|
|
45
|
+
TextureAssetLoader.init(this.loadingManager);
|
|
46
|
+
HDRTextureAssetLoader.init(this.loadingManager);
|
|
47
|
+
}
|
|
48
|
+
/** Preload assets with critical/background prioritization. */
|
|
49
|
+
static async preloadAssets(manifest) {
|
|
50
|
+
// Separate by priority
|
|
51
|
+
const criticalAssets = Object.entries(manifest).filter(([_, config]) => {
|
|
52
|
+
return config.priority !== 'background';
|
|
53
|
+
});
|
|
54
|
+
const backgroundAssets = Object.entries(manifest).filter(([_, config]) => {
|
|
55
|
+
return config.priority === 'background';
|
|
56
|
+
});
|
|
57
|
+
// Phase 1: Load critical assets (blocking)
|
|
58
|
+
const criticalPromises = criticalAssets.map(([key, config]) => {
|
|
59
|
+
CacheManager.setKeyToUrl(key, config.url);
|
|
60
|
+
return this.loadAssetByType(config.url, config.type, key);
|
|
61
|
+
});
|
|
62
|
+
await Promise.all(criticalPromises);
|
|
63
|
+
// Phase 2: Start background loading (non-blocking)
|
|
64
|
+
backgroundAssets.forEach(([key, config]) => {
|
|
65
|
+
CacheManager.setKeyToUrl(key, config.url);
|
|
66
|
+
this.loadAssetByType(config.url, config.type, key).catch((err) => console.warn(`Background asset failed: ${key}`, err));
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
static async loadAssetByType(url, type, key) {
|
|
70
|
+
switch (type) {
|
|
71
|
+
case AssetType.GLTF:
|
|
72
|
+
return GLTFAssetLoader.loadGLTF(url, key);
|
|
73
|
+
case AssetType.Audio:
|
|
74
|
+
return AudioAssetLoader.loadAudio(url);
|
|
75
|
+
case AssetType.Texture:
|
|
76
|
+
return TextureAssetLoader.loadTexture(url);
|
|
77
|
+
case AssetType.HDRTexture:
|
|
78
|
+
return HDRTextureAssetLoader.loadHDRTexture(url);
|
|
79
|
+
default:
|
|
80
|
+
throw new Error(`Unsupported asset type: ${type}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** Load a GLTF by URL; optionally register a logical key. */
|
|
84
|
+
static loadGLTF(url, key) {
|
|
85
|
+
return GLTFAssetLoader.loadGLTF(url, key);
|
|
86
|
+
}
|
|
87
|
+
// GLXF has been removed from the asset pipeline. Use World.loadLevel(url).
|
|
88
|
+
/** Fetch any cached asset by logical key. */
|
|
89
|
+
static getAsset(key) {
|
|
90
|
+
return CacheManager.getAssetByKey(key);
|
|
91
|
+
}
|
|
92
|
+
// Public API Methods - delegate to specialized loaders
|
|
93
|
+
/** Load an AudioBuffer by URL; optionally register a logical key. */
|
|
94
|
+
static async loadAudio(url, key) {
|
|
95
|
+
if (key) {
|
|
96
|
+
CacheManager.setKeyToUrl(key, url);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
CacheManager.setKeyToUrl(url, url);
|
|
100
|
+
}
|
|
101
|
+
return AudioAssetLoader.loadAudio(url);
|
|
102
|
+
}
|
|
103
|
+
/** Get a cached AudioBuffer by logical key. */
|
|
104
|
+
static getAudio(key) {
|
|
105
|
+
return AudioAssetLoader.getAudio(key);
|
|
106
|
+
}
|
|
107
|
+
/** Load a Texture by URL; optionally register a logical key. */
|
|
108
|
+
static async loadTexture(url, key) {
|
|
109
|
+
if (key) {
|
|
110
|
+
CacheManager.setKeyToUrl(key, url);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
CacheManager.setKeyToUrl(url, url);
|
|
114
|
+
}
|
|
115
|
+
return TextureAssetLoader.loadTexture(url);
|
|
116
|
+
}
|
|
117
|
+
/** Get a cached Texture by logical key. */
|
|
118
|
+
static getTexture(key) {
|
|
119
|
+
return TextureAssetLoader.getTexture(key);
|
|
120
|
+
}
|
|
121
|
+
/** Load an HDR equirectangular texture; optionally register a logical key. */
|
|
122
|
+
static async loadHDRTexture(url, key) {
|
|
123
|
+
if (key) {
|
|
124
|
+
CacheManager.setKeyToUrl(key, url);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
CacheManager.setKeyToUrl(url, url);
|
|
128
|
+
}
|
|
129
|
+
return HDRTextureAssetLoader.loadHDRTexture(url);
|
|
130
|
+
}
|
|
131
|
+
/** Get a cached GLTF by logical key. */
|
|
132
|
+
static getGLTF(key) {
|
|
133
|
+
return GLTFAssetLoader.getGLTF(key);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export { AssetManager, AssetType };
|
|
138
|
+
//# sourceMappingURL=asset-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-manager.js","sources":["../../src/asset/asset-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Central cache for assets and in-flight loads used by {@link AssetManager}.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* - Tracks a key→URL registry so callers may refer to assets by logical keys.
|
|
12
|
+
* - De-duplicates concurrent requests via a promise cache.
|
|
13
|
+
* - Stores resolved assets for fast reuse.
|
|
14
|
+
*
|
|
15
|
+
* @category Assets
|
|
16
|
+
*/
|
|
17
|
+
export declare class CacheManager {
|
|
18
|
+
private static cache;
|
|
19
|
+
private static promiseCache;
|
|
20
|
+
private static keyToUrl;
|
|
21
|
+
/** Record a logical key → URL mapping. */
|
|
22
|
+
static setKeyToUrl(key: string, url: string): void;
|
|
23
|
+
/** Resolve a key or pass-through a URL. */
|
|
24
|
+
static resolveUrl(urlOrKey: string): string;
|
|
25
|
+
/** True if an in-flight promise exists for URL. */
|
|
26
|
+
static hasPromise(url: string): boolean;
|
|
27
|
+
/** Get the in-flight promise for URL (if any). */
|
|
28
|
+
static getPromise<T>(url: string): Promise<T> | undefined;
|
|
29
|
+
/** Store an in-flight promise for URL. */
|
|
30
|
+
static setPromise<T>(url: string, promise: Promise<T>): void;
|
|
31
|
+
/** Remove in-flight promise (on resolve/reject). */
|
|
32
|
+
static deletePromise(url: string): void;
|
|
33
|
+
/** True if an asset has been cached for URL. */
|
|
34
|
+
static hasAsset(url: string): boolean;
|
|
35
|
+
/** Retrieve a cached asset by URL. */
|
|
36
|
+
static getAsset<T>(url: string): T | undefined;
|
|
37
|
+
/** Store an asset by URL. */
|
|
38
|
+
static setAsset<T>(url: string, asset: T): void;
|
|
39
|
+
/** Lookup asset by logical key or direct URL. */
|
|
40
|
+
static getAssetByKey(key: string): any;
|
|
41
|
+
/** Clear caches (useful during tests). */
|
|
42
|
+
static clear(): void;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/asset/cache-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAA0B;IAC9C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAmC;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA6B;IAEpD,0CAA0C;IAC1C,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIlD,2CAA2C;IAC3C,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3C,mDAAmD;IACnD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kDAAkD;IAClD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS;IAIzD,0CAA0C;IAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAI5D,oDAAoD;IACpD,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvC,gDAAgD;IAChD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIrC,sCAAsC;IACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI9C,6BAA6B;IAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI/C,iDAAiD;IACjD,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAetC,0CAA0C;IAC1C,MAAM,CAAC,KAAK,IAAI,IAAI;CAKrB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Central cache for assets and in-flight loads used by {@link AssetManager}.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* - Tracks a key→URL registry so callers may refer to assets by logical keys.
|
|
12
|
+
* - De-duplicates concurrent requests via a promise cache.
|
|
13
|
+
* - Stores resolved assets for fast reuse.
|
|
14
|
+
*
|
|
15
|
+
* @category Assets
|
|
16
|
+
*/
|
|
17
|
+
class CacheManager {
|
|
18
|
+
/** Record a logical key → URL mapping. */
|
|
19
|
+
static setKeyToUrl(key, url) {
|
|
20
|
+
this.keyToUrl.set(key, url);
|
|
21
|
+
}
|
|
22
|
+
/** Resolve a key or pass-through a URL. */
|
|
23
|
+
static resolveUrl(urlOrKey) {
|
|
24
|
+
var _a;
|
|
25
|
+
return (_a = this.keyToUrl.get(urlOrKey)) !== null && _a !== void 0 ? _a : urlOrKey;
|
|
26
|
+
}
|
|
27
|
+
/** True if an in-flight promise exists for URL. */
|
|
28
|
+
static hasPromise(url) {
|
|
29
|
+
return this.promiseCache.has(url);
|
|
30
|
+
}
|
|
31
|
+
/** Get the in-flight promise for URL (if any). */
|
|
32
|
+
static getPromise(url) {
|
|
33
|
+
return this.promiseCache.get(url);
|
|
34
|
+
}
|
|
35
|
+
/** Store an in-flight promise for URL. */
|
|
36
|
+
static setPromise(url, promise) {
|
|
37
|
+
this.promiseCache.set(url, promise);
|
|
38
|
+
}
|
|
39
|
+
/** Remove in-flight promise (on resolve/reject). */
|
|
40
|
+
static deletePromise(url) {
|
|
41
|
+
this.promiseCache.delete(url);
|
|
42
|
+
}
|
|
43
|
+
/** True if an asset has been cached for URL. */
|
|
44
|
+
static hasAsset(url) {
|
|
45
|
+
return this.cache.has(url);
|
|
46
|
+
}
|
|
47
|
+
/** Retrieve a cached asset by URL. */
|
|
48
|
+
static getAsset(url) {
|
|
49
|
+
return this.cache.get(url);
|
|
50
|
+
}
|
|
51
|
+
/** Store an asset by URL. */
|
|
52
|
+
static setAsset(url, asset) {
|
|
53
|
+
this.cache.set(url, asset);
|
|
54
|
+
}
|
|
55
|
+
/** Lookup asset by logical key or direct URL. */
|
|
56
|
+
static getAssetByKey(key) {
|
|
57
|
+
// First check if this is a URL (direct cache access)
|
|
58
|
+
if (this.cache.has(key)) {
|
|
59
|
+
return this.cache.get(key);
|
|
60
|
+
}
|
|
61
|
+
// Otherwise, look up the URL from the key registry
|
|
62
|
+
const url = this.keyToUrl.get(key);
|
|
63
|
+
if (url) {
|
|
64
|
+
return this.cache.get(url);
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
/** Clear caches (useful during tests). */
|
|
69
|
+
static clear() {
|
|
70
|
+
this.cache.clear();
|
|
71
|
+
this.promiseCache.clear();
|
|
72
|
+
this.keyToUrl.clear();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
CacheManager.cache = new Map();
|
|
76
|
+
CacheManager.promiseCache = new Map();
|
|
77
|
+
CacheManager.keyToUrl = new Map();
|
|
78
|
+
|
|
79
|
+
export { CacheManager };
|
|
80
|
+
//# sourceMappingURL=cache-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.js","sources":["../../src/asset/cache-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAEH;;;;;;;;;AASG;MACU,YAAY,CAAA;;AAMvB,IAAA,OAAO,WAAW,CAAC,GAAW,EAAE,GAAW,EAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAC7B;;IAGA,OAAO,UAAU,CAAC,QAAgB,EAAA;;QAChC,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,QAAQ;IAChD;;IAGA,OAAO,UAAU,CAAC,GAAW,EAAA;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC;;IAGA,OAAO,UAAU,CAAI,GAAW,EAAA;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAe;IACjD;;AAGA,IAAA,OAAO,UAAU,CAAI,GAAW,EAAE,OAAmB,EAAA;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;IACrC;;IAGA,OAAO,aAAa,CAAC,GAAW,EAAA;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC;IAC/B;;IAGA,OAAO,QAAQ,CAAC,GAAW,EAAA;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5B;;IAGA,OAAO,QAAQ,CAAI,GAAW,EAAA;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAM;IACjC;;AAGA,IAAA,OAAO,QAAQ,CAAI,GAAW,EAAE,KAAQ,EAAA;QACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;IAC5B;;IAGA,OAAO,aAAa,CAAC,GAAW,EAAA;;QAE9B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5B;;QAGA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAClC,IAAI,GAAG,EAAE;YACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5B;AAEA,QAAA,OAAO,SAAS;IAClB;;AAGA,IAAA,OAAO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;;AAtEe,YAAA,CAAA,KAAK,GAAG,IAAI,GAAG,EAAe;AAC9B,YAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAwB;AAC9C,YAAA,CAAA,QAAQ,GAAG,IAAI,GAAG,EAAkB;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
export * from './asset-manager.js';
|
|
8
|
+
export * from './cache-manager.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/asset/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { LoadingManager } from '../../runtime/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Audio buffer loader with de-duplication and caching.
|
|
10
|
+
*
|
|
11
|
+
* @category Assets
|
|
12
|
+
*/
|
|
13
|
+
export declare class AudioAssetLoader {
|
|
14
|
+
private static audioLoader;
|
|
15
|
+
static init(loadingManager: LoadingManager): void;
|
|
16
|
+
/** Load an AudioBuffer (URL or logical key), returning a cached instance when possible. */
|
|
17
|
+
static loadAudio(urlOrKey: string): Promise<AudioBuffer>;
|
|
18
|
+
/** Get a cached AudioBuffer by logical key. */
|
|
19
|
+
static getAudio(key: string): AudioBuffer | null;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=audio-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-loader.d.ts","sourceRoot":"","sources":["../../../src/asset/loaders/audio-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGrE;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,WAAW,CAAc;IAExC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAIjD,2FAA2F;WAC9E,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoC9D,+CAA+C;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;CAGjD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import '../../runtime/three.js';
|
|
2
|
+
import { CacheManager } from '../cache-manager.js';
|
|
3
|
+
import { AudioLoader } from 'three';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the MIT license found in the
|
|
9
|
+
* LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Audio buffer loader with de-duplication and caching.
|
|
13
|
+
*
|
|
14
|
+
* @category Assets
|
|
15
|
+
*/
|
|
16
|
+
class AudioAssetLoader {
|
|
17
|
+
static init(loadingManager) {
|
|
18
|
+
this.audioLoader = new AudioLoader(loadingManager);
|
|
19
|
+
}
|
|
20
|
+
/** Load an AudioBuffer (URL or logical key), returning a cached instance when possible. */
|
|
21
|
+
static async loadAudio(urlOrKey) {
|
|
22
|
+
// Resolve URL from key if needed
|
|
23
|
+
const url = CacheManager.resolveUrl(urlOrKey);
|
|
24
|
+
// Check promise cache (prevent duplicate requests)
|
|
25
|
+
if (CacheManager.hasPromise(url)) {
|
|
26
|
+
return CacheManager.getPromise(url);
|
|
27
|
+
}
|
|
28
|
+
const loadingPromise = new Promise((resolve, reject) => {
|
|
29
|
+
// Check cache first
|
|
30
|
+
if (CacheManager.hasAsset(url)) {
|
|
31
|
+
resolve(CacheManager.getAsset(url));
|
|
32
|
+
CacheManager.deletePromise(url);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// Load using Three.js AudioLoader
|
|
36
|
+
this.audioLoader.load(url, (buffer) => {
|
|
37
|
+
CacheManager.setAsset(url, buffer);
|
|
38
|
+
resolve(buffer);
|
|
39
|
+
CacheManager.deletePromise(url);
|
|
40
|
+
}, undefined, // progress callback
|
|
41
|
+
(error) => {
|
|
42
|
+
reject(error);
|
|
43
|
+
CacheManager.deletePromise(url);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
CacheManager.setPromise(url, loadingPromise);
|
|
48
|
+
return loadingPromise;
|
|
49
|
+
}
|
|
50
|
+
/** Get a cached AudioBuffer by logical key. */
|
|
51
|
+
static getAudio(key) {
|
|
52
|
+
return CacheManager.getAssetByKey(key) || null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { AudioAssetLoader };
|
|
57
|
+
//# sourceMappingURL=audio-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-loader.js","sources":["../../../src/asset/loaders/audio-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAKH;;;;AAIG;MACU,gBAAgB,CAAA;IAG3B,OAAO,IAAI,CAAC,cAA8B,EAAA;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC;IACpD;;AAGA,IAAA,aAAa,SAAS,CAAC,QAAgB,EAAA;;QAErC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAG7C,QAAA,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAChC,YAAA,OAAO,YAAY,CAAC,UAAU,CAAc,GAAG,CAAE;QACnD;QAEA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,KAAI;;AAElE,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC9B,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAc,GAAG,CAAE,CAAC;AACjD,gBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;YACjC;iBAAO;;gBAEL,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,GAAG,EACH,CAAC,MAAM,KAAI;AACT,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;oBAClC,OAAO,CAAC,MAAM,CAAC;AACf,oBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;gBACjC,CAAC,EACD,SAAS;gBACT,CAAC,KAAK,KAAI;oBACR,MAAM,CAAC,KAAK,CAAC;AACb,oBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;AACjC,gBAAA,CAAC,CACF;YACH;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC;AAC5C,QAAA,OAAO,cAAc;IACvB;;IAGA,OAAO,QAAQ,CAAC,GAAW,EAAA;QACzB,OAAQ,YAAY,CAAC,aAAa,CAAC,GAAG,CAAiB,IAAI,IAAI;IACjE;AACD;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
8
|
+
import { LoadingManager, WebGLRenderer } from '../../runtime/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* GLTF loader with DRACO/KTX2 support, de-duplication, and caching.
|
|
11
|
+
*
|
|
12
|
+
* @category Assets
|
|
13
|
+
*/
|
|
14
|
+
export declare class GLTFAssetLoader {
|
|
15
|
+
private static gltfLoader;
|
|
16
|
+
private static dracoLoader;
|
|
17
|
+
private static ktx2Loader;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize loader instances and configure decoders/transcoders.
|
|
20
|
+
* @param loadingManager Shared Three.js `LoadingManager`.
|
|
21
|
+
* @param renderer Renderer used to detect KTX2 support.
|
|
22
|
+
* @param options Optional decoder/transcoder paths (fall back to CDN paths matching Three r{REVISION}).
|
|
23
|
+
*/
|
|
24
|
+
static init(loadingManager: LoadingManager, renderer: WebGLRenderer, options?: {
|
|
25
|
+
dracoDecoderPath?: string;
|
|
26
|
+
ktx2TranscoderPath?: string;
|
|
27
|
+
}): void;
|
|
28
|
+
/** Load a GLTF by URL, caching the result; optionally register a logical key. */
|
|
29
|
+
static loadGLTF(url: string, key?: string): Promise<GLTF>;
|
|
30
|
+
/** Get a cached GLTF by logical key. */
|
|
31
|
+
static getGLTF(key: string): GLTF | null;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=gltf-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-loader.d.ts","sourceRoot":"","sources":["../../../src/asset/loaders/gltf-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,IAAI,EAAc,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EACL,cAAc,EAEd,aAAa,EACd,MAAM,wBAAwB,CAAC;AAKhC;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAa;IACtC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAc;IACxC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAa;IAEtC;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CACT,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE;QACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;KACxB,GACL,IAAI;IAmBP,iFAAiF;IACjF,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCzD,wCAAwC;IACxC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAGzC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
|
2
|
+
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
3
|
+
import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader.js';
|
|
4
|
+
import '../../runtime/three.js';
|
|
5
|
+
import { CacheManager } from '../cache-manager.js';
|
|
6
|
+
import { REVISION } from 'three';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
10
|
+
*
|
|
11
|
+
* This source code is licensed under the MIT license found in the
|
|
12
|
+
* LICENSE file in the root directory of this source tree.
|
|
13
|
+
*/
|
|
14
|
+
const THREE_PATH = `https://unpkg.com/three@0.${REVISION}.0`;
|
|
15
|
+
/**
|
|
16
|
+
* GLTF loader with DRACO/KTX2 support, de-duplication, and caching.
|
|
17
|
+
*
|
|
18
|
+
* @category Assets
|
|
19
|
+
*/
|
|
20
|
+
class GLTFAssetLoader {
|
|
21
|
+
/**
|
|
22
|
+
* Initialize loader instances and configure decoders/transcoders.
|
|
23
|
+
* @param loadingManager Shared Three.js `LoadingManager`.
|
|
24
|
+
* @param renderer Renderer used to detect KTX2 support.
|
|
25
|
+
* @param options Optional decoder/transcoder paths (fall back to CDN paths matching Three r{REVISION}).
|
|
26
|
+
*/
|
|
27
|
+
static init(loadingManager, renderer, options = {}) {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
// Initialize DRACO loader
|
|
30
|
+
this.dracoLoader = new DRACOLoader(loadingManager).setDecoderPath((_a = options.dracoDecoderPath) !== null && _a !== void 0 ? _a : `${THREE_PATH}/examples/jsm/libs/draco/gltf/`);
|
|
31
|
+
// Initialize KTX2 loader
|
|
32
|
+
this.ktx2Loader = new KTX2Loader(loadingManager)
|
|
33
|
+
.setTranscoderPath((_b = options.ktx2TranscoderPath) !== null && _b !== void 0 ? _b : `${THREE_PATH}/examples/jsm/libs/basis/`)
|
|
34
|
+
.detectSupport(renderer);
|
|
35
|
+
// Initialize GLTF loader with compression support
|
|
36
|
+
this.gltfLoader = new GLTFLoader(loadingManager)
|
|
37
|
+
.setDRACOLoader(this.dracoLoader)
|
|
38
|
+
.setKTX2Loader(this.ktx2Loader);
|
|
39
|
+
}
|
|
40
|
+
/** Load a GLTF by URL, caching the result; optionally register a logical key. */
|
|
41
|
+
static loadGLTF(url, key) {
|
|
42
|
+
// Always use URL as cache key for consistent caching
|
|
43
|
+
if (CacheManager.hasPromise(url)) {
|
|
44
|
+
return CacheManager.getPromise(url);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// If a key is provided, store the key->URL mapping
|
|
48
|
+
if (key) {
|
|
49
|
+
CacheManager.setKeyToUrl(key, url);
|
|
50
|
+
}
|
|
51
|
+
const loadingPromise = new Promise((resolve, reject) => {
|
|
52
|
+
if (CacheManager.hasAsset(url)) {
|
|
53
|
+
resolve(CacheManager.getAsset(url));
|
|
54
|
+
CacheManager.deletePromise(url);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.gltfLoader.load(url, (gltf) => {
|
|
58
|
+
CacheManager.setAsset(url, gltf);
|
|
59
|
+
resolve(gltf);
|
|
60
|
+
CacheManager.deletePromise(url);
|
|
61
|
+
}, () => { }, // progress callback
|
|
62
|
+
(error) => {
|
|
63
|
+
reject(error);
|
|
64
|
+
CacheManager.deletePromise(url);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
CacheManager.setPromise(url, loadingPromise);
|
|
69
|
+
return loadingPromise;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Get a cached GLTF by logical key. */
|
|
73
|
+
static getGLTF(key) {
|
|
74
|
+
return CacheManager.getAssetByKey(key) || null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export { GLTFAssetLoader };
|
|
79
|
+
//# sourceMappingURL=gltf-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gltf-loader.js","sources":["../../../src/asset/loaders/gltf-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;AAYH,MAAM,UAAU,GAAG,CAAA,0BAAA,EAA6B,QAAQ,IAAI;AAE5D;;;;AAIG;MACU,eAAe,CAAA;AAK1B;;;;;AAKG;IACH,OAAO,IAAI,CACT,cAA8B,EAC9B,QAAuB,EACvB,UAGI,EAAE,EAAA;;;QAGN,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,cAAc,CAAC,CAAC,cAAc,CAC/D,CAAA,EAAA,GAAA,OAAO,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,GAAG,UAAU,CAAA,8BAAA,CAAgC,CAC1E;;AAGD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,cAAc;aAC5C,iBAAiB,CAChB,MAAA,OAAO,CAAC,kBAAkB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAA,EAAG,UAAU,CAAA,yBAAA,CAA2B;aAEvE,aAAa,CAAC,QAAQ,CAAC;;AAG1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,cAAc;AAC5C,aAAA,cAAc,CAAC,IAAI,CAAC,WAAW;AAC/B,aAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IACnC;;AAGA,IAAA,OAAO,QAAQ,CAAC,GAAW,EAAE,GAAY,EAAA;;AAEvC,QAAA,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAChC,YAAA,OAAO,YAAY,CAAC,UAAU,CAAO,GAAG,CAAE;QAC5C;aAAO;;YAEL,IAAI,GAAG,EAAE;AACP,gBAAA,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;YACpC;YAEA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AAC3D,gBAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC9B,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAO,GAAG,CAAE,CAAC;AAC1C,oBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;gBACjC;qBAAO;oBACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,GAAG,EACH,CAAC,IAAI,KAAI;AACP,wBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;wBAChC,OAAO,CAAC,IAAI,CAAC;AACb,wBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;AACjC,oBAAA,CAAC,EACD,MAAK,EAAE,CAAC;oBACR,CAAC,KAAK,KAAI;wBACR,MAAM,CAAC,KAAK,CAAC;AACb,wBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;AACjC,oBAAA,CAAC,CACF;gBACH;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC;AAC5C,YAAA,OAAO,cAAc;QACvB;IACF;;IAGA,OAAO,OAAO,CAAC,GAAW,EAAA;QACxB,OAAQ,YAAY,CAAC,aAAa,CAAC,GAAG,CAAU,IAAI,IAAI;IAC1D;AACD;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { LoadingManager, Texture } from '../../runtime/index.js';
|
|
8
|
+
/** HDR equirectangular texture loader with de-duplication and caching.
|
|
9
|
+
* @category Assets
|
|
10
|
+
*/
|
|
11
|
+
export declare class HDRTextureAssetLoader {
|
|
12
|
+
private static rgbeLoader;
|
|
13
|
+
private static exrLoader;
|
|
14
|
+
static init(loadingManager: LoadingManager): void;
|
|
15
|
+
/** Load an HDR `.hdr`/`.exr` texture by URL, returning a cached instance when possible. */
|
|
16
|
+
static loadHDRTexture(url: string): Promise<Texture>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=hdr-texture-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hdr-texture-loader.d.ts","sourceRoot":"","sources":["../../../src/asset/loaders/hdr-texture-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAEL,cAAc,EACd,OAAO,EACR,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAa;IACtC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAY;IAEpC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAKjD,2FAA2F;WAC9E,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAgD3D"}
|