@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
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { EXRLoader } from '../../node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js';
|
|
2
|
+
import { RGBELoader } from '../../node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js';
|
|
3
|
+
import '../../runtime/three.js';
|
|
4
|
+
import { CacheManager } from '../cache-manager.js';
|
|
5
|
+
import { EquirectangularReflectionMapping } from 'three';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the MIT license found in the
|
|
11
|
+
* LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/
|
|
13
|
+
/** HDR equirectangular texture loader with de-duplication and caching.
|
|
14
|
+
* @category Assets
|
|
15
|
+
*/
|
|
16
|
+
class HDRTextureAssetLoader {
|
|
17
|
+
static init(loadingManager) {
|
|
18
|
+
this.rgbeLoader = new RGBELoader(loadingManager);
|
|
19
|
+
this.exrLoader = new EXRLoader(loadingManager);
|
|
20
|
+
}
|
|
21
|
+
/** Load an HDR `.hdr`/`.exr` texture by URL, returning a cached instance when possible. */
|
|
22
|
+
static async loadHDRTexture(url) {
|
|
23
|
+
// Normalize extension
|
|
24
|
+
const u = url.toLowerCase();
|
|
25
|
+
const isEXR = u.endsWith('.exr');
|
|
26
|
+
const isHDR = u.endsWith('.hdr');
|
|
27
|
+
if (!isEXR && !isHDR) {
|
|
28
|
+
// Fall back to standard texture loader if the extension is not HDR/EXR
|
|
29
|
+
// but keep API compatibility for callers that route through here.
|
|
30
|
+
return Promise.reject(new Error(`Unsupported HDR texture extension in url: ${url}`));
|
|
31
|
+
}
|
|
32
|
+
if (CacheManager.hasPromise(url)) {
|
|
33
|
+
return CacheManager.getPromise(url);
|
|
34
|
+
}
|
|
35
|
+
const loadingPromise = new Promise((resolve, reject) => {
|
|
36
|
+
if (CacheManager.hasAsset(url)) {
|
|
37
|
+
resolve(CacheManager.getAsset(url));
|
|
38
|
+
CacheManager.deletePromise(url);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const onLoad = (texture) => {
|
|
42
|
+
// Ensure world-locked mapping for equirectangular HDR/EXR
|
|
43
|
+
texture.mapping = EquirectangularReflectionMapping;
|
|
44
|
+
CacheManager.setAsset(url, texture);
|
|
45
|
+
resolve(texture);
|
|
46
|
+
CacheManager.deletePromise(url);
|
|
47
|
+
};
|
|
48
|
+
const onError = (error) => {
|
|
49
|
+
reject(error);
|
|
50
|
+
CacheManager.deletePromise(url);
|
|
51
|
+
};
|
|
52
|
+
if (isEXR) {
|
|
53
|
+
this.exrLoader.load(url, onLoad, undefined, onError);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.rgbeLoader.load(url, onLoad, undefined, onError);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
CacheManager.setPromise(url, loadingPromise);
|
|
60
|
+
return loadingPromise;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export { HDRTextureAssetLoader };
|
|
65
|
+
//# sourceMappingURL=hdr-texture-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hdr-texture-loader.js","sources":["../../../src/asset/loaders/hdr-texture-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAWH;;AAEG;MACU,qBAAqB,CAAA;IAIhC,OAAO,IAAI,CAAC,cAA8B,EAAA;QACxC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,cAAc,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC;IAChD;;AAGA,IAAA,aAAa,cAAc,CAAC,GAAW,EAAA;;AAErC,QAAA,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAEhC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;;;AAGpB,YAAA,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,CAAA,0CAAA,EAA6C,GAAG,CAAA,CAAE,CAAC,CAC9D;QACH;AAEA,QAAA,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAChC,YAAA,OAAO,YAAY,CAAC,UAAU,CAAU,GAAG,CAAE;QAC/C;QAEA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,KAAI;AAC9D,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC9B,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAU,GAAG,CAAE,CAAC;AAC7C,gBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;gBAC/B;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,CAAC,OAAgB,KAAI;;AAElC,gBAAA,OAAO,CAAC,OAAO,GAAG,gCAAgC;AAClD,gBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;gBACnC,OAAO,CAAC,OAAO,CAAC;AAChB,gBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;AACjC,YAAA,CAAC;AAED,YAAA,MAAM,OAAO,GAAG,CAAC,KAAc,KAAI;gBACjC,MAAM,CAAC,KAAc,CAAC;AACtB,gBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;AACjC,YAAA,CAAC;YAED,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;YACtD;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;YACvD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC;AAC5C,QAAA,OAAO,cAAc;IACvB;AACD;;;;"}
|
|
@@ -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, Texture } from '../../runtime/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Texture loader with de-duplication and caching.
|
|
10
|
+
*
|
|
11
|
+
* @category Assets
|
|
12
|
+
*/
|
|
13
|
+
export declare class TextureAssetLoader {
|
|
14
|
+
private static textureLoader;
|
|
15
|
+
static init(loadingManager: LoadingManager): void;
|
|
16
|
+
/** Load a texture (URL or logical key), returning a cached instance when possible. */
|
|
17
|
+
static loadTexture(urlOrKey: string): Promise<Texture>;
|
|
18
|
+
/** Get a cached texture by logical key. */
|
|
19
|
+
static getTexture(key: string): Texture | null;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=texture-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-loader.d.ts","sourceRoot":"","sources":["../../../src/asset/loaders/texture-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,OAAO,EAAiB,MAAM,wBAAwB,CAAC;AAGhF;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgB;IAE5C,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAIjD,sFAAsF;WACzE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC5D,2CAA2C;IAC3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAG/C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import '../../runtime/three.js';
|
|
2
|
+
import { CacheManager } from '../cache-manager.js';
|
|
3
|
+
import { TextureLoader } 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
|
+
* Texture loader with de-duplication and caching.
|
|
13
|
+
*
|
|
14
|
+
* @category Assets
|
|
15
|
+
*/
|
|
16
|
+
class TextureAssetLoader {
|
|
17
|
+
static init(loadingManager) {
|
|
18
|
+
this.textureLoader = new TextureLoader(loadingManager);
|
|
19
|
+
}
|
|
20
|
+
/** Load a texture (URL or logical key), returning a cached instance when possible. */
|
|
21
|
+
static async loadTexture(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 TextureLoader
|
|
36
|
+
this.textureLoader.load(url, (texture) => {
|
|
37
|
+
CacheManager.setAsset(url, texture);
|
|
38
|
+
resolve(texture);
|
|
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 texture by logical key. */
|
|
51
|
+
static getTexture(key) {
|
|
52
|
+
return CacheManager.getAssetByKey(key) || null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { TextureAssetLoader };
|
|
57
|
+
//# sourceMappingURL=texture-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-loader.js","sources":["../../../src/asset/loaders/texture-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAKH;;;;AAIG;MACU,kBAAkB,CAAA;IAG7B,OAAO,IAAI,CAAC,cAA8B,EAAA;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,cAAc,CAAC;IACxD;;AAGA,IAAA,aAAa,WAAW,CAAC,QAAgB,EAAA;;QAEvC,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,CAAU,GAAG,CAAE;QAC/C;QAEA,MAAM,cAAc,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,KAAI;;AAE9D,YAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC9B,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAU,GAAG,CAAE,CAAC;AAC7C,gBAAA,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC;YACjC;iBAAO;;gBAEL,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,GAAG,EACH,CAAC,OAAO,KAAI;AACV,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;oBACnC,OAAO,CAAC,OAAO,CAAC;AAChB,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,UAAU,CAAC,GAAW,EAAA;QAC3B,OAAQ,YAAY,CAAC,aAAa,CAAC,GAAG,CAAa,IAAI,IAAI;IAC7D;AACD;;;;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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 { Audio as AmbientAudio, AudioListener, Object3D, PositionalAudio } from '../runtime/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Runtime bookkeeping for a playing audio instance used by {@link AudioSystem}.
|
|
10
|
+
* @category Audio
|
|
11
|
+
*/
|
|
12
|
+
export interface AudioInstance<T extends AmbientAudio | PositionalAudio> {
|
|
13
|
+
audio: T;
|
|
14
|
+
startTime: number;
|
|
15
|
+
fadeStartTime?: number;
|
|
16
|
+
fadeStartVolume?: number;
|
|
17
|
+
fadeDuration?: number;
|
|
18
|
+
isFadingOut?: boolean;
|
|
19
|
+
isFadingIn?: boolean;
|
|
20
|
+
pausedBySessionEnd?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Fixed-size pool of Three.js `Audio`/`PositionalAudio` objects.
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* - Pre-allocates a number of audio nodes under a hidden `Group` attached to the parent.
|
|
27
|
+
* - Minimizes GC churn by reusing nodes across playbacks.
|
|
28
|
+
* - Used internally by {@link AudioSystem}, but exposed for advanced scenarios.
|
|
29
|
+
*
|
|
30
|
+
* @category Audio
|
|
31
|
+
*/
|
|
32
|
+
export declare class AudioPool<T extends AmbientAudio | PositionalAudio> {
|
|
33
|
+
private container;
|
|
34
|
+
private available;
|
|
35
|
+
private allInstances;
|
|
36
|
+
/**
|
|
37
|
+
* Create a pool.
|
|
38
|
+
* @param listener AudioListener to attach to each instance.
|
|
39
|
+
* @param size Number of instances to pre‑allocate.
|
|
40
|
+
* @param positional When true, creates `PositionalAudio`; otherwise ambient `Audio`.
|
|
41
|
+
* @param parent Group/Object3D to attach internal container to.
|
|
42
|
+
*/
|
|
43
|
+
constructor(listener: AudioListener, size: number, positional: boolean, parent: Object3D);
|
|
44
|
+
/** Acquire an available audio node or `null` if exhausted. */
|
|
45
|
+
acquire(): T | null;
|
|
46
|
+
/** Stop, reset volume, and return an audio node to the pool. */
|
|
47
|
+
release(audio: T): void;
|
|
48
|
+
/** Stop and return all nodes to the available pool. */
|
|
49
|
+
releaseAll(): void;
|
|
50
|
+
/** Disconnect and dispose all nodes and the container. */
|
|
51
|
+
dispose(): void;
|
|
52
|
+
/** Number of nodes currently checked out. */
|
|
53
|
+
getActiveCount(): number;
|
|
54
|
+
/** Total nodes in the pool. */
|
|
55
|
+
getTotalCount(): number;
|
|
56
|
+
/** Return all nodes (checked out and available). */
|
|
57
|
+
getAllInstances(): T[];
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=audio-pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-pool.d.ts","sourceRoot":"","sources":["../../src/audio/audio-pool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,IAAI,YAAY,EACrB,aAAa,EAEb,QAAQ,EACR,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,YAAY,GAAG,eAAe;IACrE,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,qBAAa,SAAS,CAAC,CAAC,SAAS,YAAY,GAAG,eAAe;IAC7D,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,YAAY,CAAW;IAE/B;;;;;;OAMG;gBAED,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,QAAQ;IAiBlB,8DAA8D;IAC9D,OAAO,IAAI,CAAC,GAAG,IAAI;IASnB,gEAAgE;IAChE,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAevB,uDAAuD;IACvD,UAAU,IAAI,IAAI;IAYlB,0DAA0D;IAC1D,OAAO,IAAI,IAAI;IAiBf,6CAA6C;IAC7C,cAAc,IAAI,MAAM;IAIxB,+BAA+B;IAC/B,aAAa,IAAI,MAAM;IAIvB,oDAAoD;IACpD,eAAe,IAAI,CAAC,EAAE;CAGvB"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import '../runtime/three.js';
|
|
2
|
+
import { Group, PositionalAudio, Audio } from 'three';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Fixed-size pool of Three.js `Audio`/`PositionalAudio` objects.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* - Pre-allocates a number of audio nodes under a hidden `Group` attached to the parent.
|
|
15
|
+
* - Minimizes GC churn by reusing nodes across playbacks.
|
|
16
|
+
* - Used internally by {@link AudioSystem}, but exposed for advanced scenarios.
|
|
17
|
+
*
|
|
18
|
+
* @category Audio
|
|
19
|
+
*/
|
|
20
|
+
class AudioPool {
|
|
21
|
+
/**
|
|
22
|
+
* Create a pool.
|
|
23
|
+
* @param listener AudioListener to attach to each instance.
|
|
24
|
+
* @param size Number of instances to pre‑allocate.
|
|
25
|
+
* @param positional When true, creates `PositionalAudio`; otherwise ambient `Audio`.
|
|
26
|
+
* @param parent Group/Object3D to attach internal container to.
|
|
27
|
+
*/
|
|
28
|
+
constructor(listener, size, positional, parent) {
|
|
29
|
+
this.available = [];
|
|
30
|
+
this.allInstances = [];
|
|
31
|
+
this.container = new Group();
|
|
32
|
+
parent.add(this.container);
|
|
33
|
+
// Pre-create audio instances
|
|
34
|
+
for (let i = 0; i < size; i++) {
|
|
35
|
+
const audio = positional
|
|
36
|
+
? new PositionalAudio(listener)
|
|
37
|
+
: new Audio(listener);
|
|
38
|
+
this.container.add(audio);
|
|
39
|
+
this.available.push(audio);
|
|
40
|
+
this.allInstances.push(audio);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Acquire an available audio node or `null` if exhausted. */
|
|
44
|
+
acquire() {
|
|
45
|
+
if (this.available.length === 0) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const audio = this.available.pop();
|
|
49
|
+
return audio;
|
|
50
|
+
}
|
|
51
|
+
/** Stop, reset volume, and return an audio node to the pool. */
|
|
52
|
+
release(audio) {
|
|
53
|
+
// Stop the audio if it's still playing
|
|
54
|
+
if (audio.isPlaying) {
|
|
55
|
+
audio.stop();
|
|
56
|
+
}
|
|
57
|
+
// Reset audio state
|
|
58
|
+
audio.setVolume(1.0);
|
|
59
|
+
// Return to available pool
|
|
60
|
+
if (!this.available.includes(audio)) {
|
|
61
|
+
this.available.push(audio);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Stop and return all nodes to the available pool. */
|
|
65
|
+
releaseAll() {
|
|
66
|
+
// Stop all instances and return them to the pool
|
|
67
|
+
for (const audio of this.allInstances) {
|
|
68
|
+
if (audio.isPlaying) {
|
|
69
|
+
audio.stop();
|
|
70
|
+
}
|
|
71
|
+
audio.setVolume(1.0);
|
|
72
|
+
}
|
|
73
|
+
this.available = [...this.allInstances];
|
|
74
|
+
}
|
|
75
|
+
/** Disconnect and dispose all nodes and the container. */
|
|
76
|
+
dispose() {
|
|
77
|
+
// Clean up all audio instances
|
|
78
|
+
for (const audio of this.allInstances) {
|
|
79
|
+
if (audio.isPlaying) {
|
|
80
|
+
audio.stop();
|
|
81
|
+
}
|
|
82
|
+
audio.disconnect();
|
|
83
|
+
}
|
|
84
|
+
// Remove from parent
|
|
85
|
+
this.container.removeFromParent();
|
|
86
|
+
this.container.clear();
|
|
87
|
+
this.available = [];
|
|
88
|
+
this.allInstances = [];
|
|
89
|
+
}
|
|
90
|
+
/** Number of nodes currently checked out. */
|
|
91
|
+
getActiveCount() {
|
|
92
|
+
return this.allInstances.length - this.available.length;
|
|
93
|
+
}
|
|
94
|
+
/** Total nodes in the pool. */
|
|
95
|
+
getTotalCount() {
|
|
96
|
+
return this.allInstances.length;
|
|
97
|
+
}
|
|
98
|
+
/** Return all nodes (checked out and available). */
|
|
99
|
+
getAllInstances() {
|
|
100
|
+
return this.allInstances;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export { AudioPool };
|
|
105
|
+
//# sourceMappingURL=audio-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-pool.js","sources":["../../src/audio/audio-pool.ts"],"sourcesContent":[null],"names":["AmbientAudio"],"mappings":";;;AAAA;;;;;AAKG;AAyBH;;;;;;;;;AASG;MACU,SAAS,CAAA;AAKpB;;;;;;AAMG;AACH,IAAA,WAAA,CACE,QAAuB,EACvB,IAAY,EACZ,UAAmB,EACnB,MAAgB,EAAA;QAdV,IAAA,CAAA,SAAS,GAAQ,EAAE;QACnB,IAAA,CAAA,YAAY,GAAQ,EAAE;AAe5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE;AAC5B,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG;AACZ,kBAAE,IAAI,eAAe,CAAC,QAAQ;AAC9B,kBAAE,IAAIA,KAAY,CAAC,QAAQ,CAAC;AAE9B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAU,CAAC;AAC/B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAU,CAAC;QACpC;IACF;;IAGA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG;AACnC,QAAA,OAAO,KAAK;IACd;;AAGA,IAAA,OAAO,CAAC,KAAQ,EAAA;;AAEd,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE;YACnB,KAAK,CAAC,IAAI,EAAE;QACd;;AAGA,QAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;;QAGpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B;IACF;;IAGA,UAAU,GAAA;;AAER,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AACrC,YAAA,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnB,KAAK,CAAC,IAAI,EAAE;YACd;AACA,YAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;QACtB;QAEA,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IACzC;;IAGA,OAAO,GAAA;;AAEL,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;AACrC,YAAA,IAAI,KAAK,CAAC,SAAS,EAAE;gBACnB,KAAK,CAAC,IAAI,EAAE;YACd;YACA,KAAK,CAAC,UAAU,EAAE;QACpB;;AAGA,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;AAEtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;IACxB;;IAGA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;IACzD;;IAGA,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM;IACjC;;IAGA,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;IAC1B;AACD;;;;"}
|
|
@@ -0,0 +1,326 @@
|
|
|
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 { Types } from '../ecs/index.js';
|
|
8
|
+
declare const AudioSystem_base: import("elics").SystemConstructor<{
|
|
9
|
+
/** Enable distance-based culling for positional audio instances. */
|
|
10
|
+
enableDistanceCulling: {
|
|
11
|
+
type: Types.Boolean;
|
|
12
|
+
default: true;
|
|
13
|
+
};
|
|
14
|
+
/** Multiplier applied to `maxDistance` for culling threshold. */
|
|
15
|
+
cullingDistanceMultiplier: {
|
|
16
|
+
type: Types.Float32;
|
|
17
|
+
default: number;
|
|
18
|
+
};
|
|
19
|
+
}, {
|
|
20
|
+
audioEntities: {
|
|
21
|
+
required: import("elics").Component<{
|
|
22
|
+
src: {
|
|
23
|
+
type: Types.String;
|
|
24
|
+
default: string;
|
|
25
|
+
};
|
|
26
|
+
volume: {
|
|
27
|
+
type: Types.Float32;
|
|
28
|
+
default: number;
|
|
29
|
+
};
|
|
30
|
+
loop: {
|
|
31
|
+
type: Types.Boolean;
|
|
32
|
+
default: false;
|
|
33
|
+
};
|
|
34
|
+
autoplay: {
|
|
35
|
+
type: Types.Boolean;
|
|
36
|
+
default: false;
|
|
37
|
+
};
|
|
38
|
+
positional: {
|
|
39
|
+
type: Types.Boolean;
|
|
40
|
+
default: true;
|
|
41
|
+
};
|
|
42
|
+
refDistance: {
|
|
43
|
+
type: Types.Float32;
|
|
44
|
+
default: number;
|
|
45
|
+
};
|
|
46
|
+
rolloffFactor: {
|
|
47
|
+
type: Types.Float32;
|
|
48
|
+
default: number;
|
|
49
|
+
};
|
|
50
|
+
maxDistance: {
|
|
51
|
+
type: Types.Float32;
|
|
52
|
+
default: number;
|
|
53
|
+
};
|
|
54
|
+
distanceModel: {
|
|
55
|
+
type: Types.Enum;
|
|
56
|
+
enum: {
|
|
57
|
+
readonly Linear: "linear";
|
|
58
|
+
readonly Inverse: "inverse";
|
|
59
|
+
readonly Exponential: "exponential";
|
|
60
|
+
};
|
|
61
|
+
default: "inverse";
|
|
62
|
+
};
|
|
63
|
+
coneInnerAngle: {
|
|
64
|
+
type: Types.Float32;
|
|
65
|
+
default: number;
|
|
66
|
+
};
|
|
67
|
+
coneOuterAngle: {
|
|
68
|
+
type: Types.Float32;
|
|
69
|
+
default: number;
|
|
70
|
+
};
|
|
71
|
+
coneOuterGain: {
|
|
72
|
+
type: Types.Float32;
|
|
73
|
+
default: number;
|
|
74
|
+
};
|
|
75
|
+
playbackMode: {
|
|
76
|
+
type: Types.Enum;
|
|
77
|
+
enum: {
|
|
78
|
+
readonly Restart: "restart";
|
|
79
|
+
readonly Overlap: "overlap";
|
|
80
|
+
readonly Ignore: "ignore";
|
|
81
|
+
readonly FadeRestart: "fade-restart";
|
|
82
|
+
};
|
|
83
|
+
default: "restart";
|
|
84
|
+
};
|
|
85
|
+
maxInstances: {
|
|
86
|
+
type: Types.Int8;
|
|
87
|
+
default: number;
|
|
88
|
+
};
|
|
89
|
+
crossfadeDuration: {
|
|
90
|
+
type: Types.Float32;
|
|
91
|
+
default: number;
|
|
92
|
+
};
|
|
93
|
+
instanceStealPolicy: {
|
|
94
|
+
type: Types.Enum;
|
|
95
|
+
enum: {
|
|
96
|
+
readonly Oldest: "oldest";
|
|
97
|
+
readonly Quietest: "quietest";
|
|
98
|
+
readonly Furthest: "furthest";
|
|
99
|
+
};
|
|
100
|
+
default: "oldest";
|
|
101
|
+
};
|
|
102
|
+
_playRequested: {
|
|
103
|
+
type: Types.Boolean;
|
|
104
|
+
default: false;
|
|
105
|
+
};
|
|
106
|
+
_pauseRequested: {
|
|
107
|
+
type: Types.Boolean;
|
|
108
|
+
default: false;
|
|
109
|
+
};
|
|
110
|
+
_stopRequested: {
|
|
111
|
+
type: Types.Boolean;
|
|
112
|
+
default: false;
|
|
113
|
+
};
|
|
114
|
+
_fadeIn: {
|
|
115
|
+
type: Types.Float32;
|
|
116
|
+
default: number;
|
|
117
|
+
};
|
|
118
|
+
_fadeOut: {
|
|
119
|
+
type: Types.Float32;
|
|
120
|
+
default: number;
|
|
121
|
+
};
|
|
122
|
+
_pool: {
|
|
123
|
+
type: Types.Object;
|
|
124
|
+
default: undefined;
|
|
125
|
+
};
|
|
126
|
+
_instances: {
|
|
127
|
+
type: Types.Object;
|
|
128
|
+
default: undefined;
|
|
129
|
+
};
|
|
130
|
+
_isPlaying: {
|
|
131
|
+
type: Types.Boolean;
|
|
132
|
+
default: false;
|
|
133
|
+
};
|
|
134
|
+
_buffer: {
|
|
135
|
+
type: Types.Object;
|
|
136
|
+
default: undefined;
|
|
137
|
+
};
|
|
138
|
+
_loaded: {
|
|
139
|
+
type: Types.Boolean;
|
|
140
|
+
default: false;
|
|
141
|
+
};
|
|
142
|
+
_loading: {
|
|
143
|
+
type: Types.Boolean;
|
|
144
|
+
default: false;
|
|
145
|
+
};
|
|
146
|
+
}>[];
|
|
147
|
+
};
|
|
148
|
+
}, import("../ecs/world.js").World, import("../ecs/system.js").System<{
|
|
149
|
+
/** Enable distance-based culling for positional audio instances. */
|
|
150
|
+
enableDistanceCulling: {
|
|
151
|
+
type: Types.Boolean;
|
|
152
|
+
default: true;
|
|
153
|
+
};
|
|
154
|
+
/** Multiplier applied to `maxDistance` for culling threshold. */
|
|
155
|
+
cullingDistanceMultiplier: {
|
|
156
|
+
type: Types.Float32;
|
|
157
|
+
default: number;
|
|
158
|
+
};
|
|
159
|
+
}, {
|
|
160
|
+
audioEntities: {
|
|
161
|
+
required: import("elics").Component<{
|
|
162
|
+
src: {
|
|
163
|
+
type: Types.String;
|
|
164
|
+
default: string;
|
|
165
|
+
};
|
|
166
|
+
volume: {
|
|
167
|
+
type: Types.Float32;
|
|
168
|
+
default: number;
|
|
169
|
+
};
|
|
170
|
+
loop: {
|
|
171
|
+
type: Types.Boolean;
|
|
172
|
+
default: false;
|
|
173
|
+
};
|
|
174
|
+
autoplay: {
|
|
175
|
+
type: Types.Boolean;
|
|
176
|
+
default: false;
|
|
177
|
+
};
|
|
178
|
+
positional: {
|
|
179
|
+
type: Types.Boolean;
|
|
180
|
+
default: true;
|
|
181
|
+
};
|
|
182
|
+
refDistance: {
|
|
183
|
+
type: Types.Float32;
|
|
184
|
+
default: number;
|
|
185
|
+
};
|
|
186
|
+
rolloffFactor: {
|
|
187
|
+
type: Types.Float32;
|
|
188
|
+
default: number;
|
|
189
|
+
};
|
|
190
|
+
maxDistance: {
|
|
191
|
+
type: Types.Float32;
|
|
192
|
+
default: number;
|
|
193
|
+
};
|
|
194
|
+
distanceModel: {
|
|
195
|
+
type: Types.Enum;
|
|
196
|
+
enum: {
|
|
197
|
+
readonly Linear: "linear";
|
|
198
|
+
readonly Inverse: "inverse";
|
|
199
|
+
readonly Exponential: "exponential";
|
|
200
|
+
};
|
|
201
|
+
default: "inverse";
|
|
202
|
+
};
|
|
203
|
+
coneInnerAngle: {
|
|
204
|
+
type: Types.Float32;
|
|
205
|
+
default: number;
|
|
206
|
+
};
|
|
207
|
+
coneOuterAngle: {
|
|
208
|
+
type: Types.Float32;
|
|
209
|
+
default: number;
|
|
210
|
+
};
|
|
211
|
+
coneOuterGain: {
|
|
212
|
+
type: Types.Float32;
|
|
213
|
+
default: number;
|
|
214
|
+
};
|
|
215
|
+
playbackMode: {
|
|
216
|
+
type: Types.Enum;
|
|
217
|
+
enum: {
|
|
218
|
+
readonly Restart: "restart";
|
|
219
|
+
readonly Overlap: "overlap";
|
|
220
|
+
readonly Ignore: "ignore";
|
|
221
|
+
readonly FadeRestart: "fade-restart";
|
|
222
|
+
};
|
|
223
|
+
default: "restart";
|
|
224
|
+
};
|
|
225
|
+
maxInstances: {
|
|
226
|
+
type: Types.Int8;
|
|
227
|
+
default: number;
|
|
228
|
+
};
|
|
229
|
+
crossfadeDuration: {
|
|
230
|
+
type: Types.Float32;
|
|
231
|
+
default: number;
|
|
232
|
+
};
|
|
233
|
+
instanceStealPolicy: {
|
|
234
|
+
type: Types.Enum;
|
|
235
|
+
enum: {
|
|
236
|
+
readonly Oldest: "oldest";
|
|
237
|
+
readonly Quietest: "quietest";
|
|
238
|
+
readonly Furthest: "furthest";
|
|
239
|
+
};
|
|
240
|
+
default: "oldest";
|
|
241
|
+
};
|
|
242
|
+
_playRequested: {
|
|
243
|
+
type: Types.Boolean;
|
|
244
|
+
default: false;
|
|
245
|
+
};
|
|
246
|
+
_pauseRequested: {
|
|
247
|
+
type: Types.Boolean;
|
|
248
|
+
default: false;
|
|
249
|
+
};
|
|
250
|
+
_stopRequested: {
|
|
251
|
+
type: Types.Boolean;
|
|
252
|
+
default: false;
|
|
253
|
+
};
|
|
254
|
+
_fadeIn: {
|
|
255
|
+
type: Types.Float32;
|
|
256
|
+
default: number;
|
|
257
|
+
};
|
|
258
|
+
_fadeOut: {
|
|
259
|
+
type: Types.Float32;
|
|
260
|
+
default: number;
|
|
261
|
+
};
|
|
262
|
+
_pool: {
|
|
263
|
+
type: Types.Object;
|
|
264
|
+
default: undefined;
|
|
265
|
+
};
|
|
266
|
+
_instances: {
|
|
267
|
+
type: Types.Object;
|
|
268
|
+
default: undefined;
|
|
269
|
+
};
|
|
270
|
+
_isPlaying: {
|
|
271
|
+
type: Types.Boolean;
|
|
272
|
+
default: false;
|
|
273
|
+
};
|
|
274
|
+
_buffer: {
|
|
275
|
+
type: Types.Object;
|
|
276
|
+
default: undefined;
|
|
277
|
+
};
|
|
278
|
+
_loaded: {
|
|
279
|
+
type: Types.Boolean;
|
|
280
|
+
default: false;
|
|
281
|
+
};
|
|
282
|
+
_loading: {
|
|
283
|
+
type: Types.Boolean;
|
|
284
|
+
default: false;
|
|
285
|
+
};
|
|
286
|
+
}>[];
|
|
287
|
+
};
|
|
288
|
+
}>>;
|
|
289
|
+
/**
|
|
290
|
+
* Runtime audio manager that loads sources, pools players, and applies XR-aware behavior.
|
|
291
|
+
*
|
|
292
|
+
* @remarks
|
|
293
|
+
* - Creates an `AudioListener` on the player head and resumes/suspends the
|
|
294
|
+
* audio context when XR sessions start/end.
|
|
295
|
+
* - Pools `Audio`/`PositionalAudio` instances per entity to minimize allocations
|
|
296
|
+
* and implements play/overlap/fade-restart behaviors.
|
|
297
|
+
* - Optionally culls distant positional audio by a distance multiplier.
|
|
298
|
+
*
|
|
299
|
+
* @category Audio
|
|
300
|
+
*/
|
|
301
|
+
export declare class AudioSystem extends AudioSystem_base {
|
|
302
|
+
private listener;
|
|
303
|
+
private activeInstances;
|
|
304
|
+
init(): void;
|
|
305
|
+
private onXRSessionStart;
|
|
306
|
+
private onXRSessionEnd;
|
|
307
|
+
update(_delta: number, _time: number): void;
|
|
308
|
+
private loadAudio;
|
|
309
|
+
private createPool;
|
|
310
|
+
private handlePlaybackRequests;
|
|
311
|
+
private playRestart;
|
|
312
|
+
private playOverlap;
|
|
313
|
+
private playIgnore;
|
|
314
|
+
private playFadeRestart;
|
|
315
|
+
private createAndPlayInstance;
|
|
316
|
+
private updateActiveInstances;
|
|
317
|
+
private onInstanceEnded;
|
|
318
|
+
private releaseInstance;
|
|
319
|
+
private stopAllInstances;
|
|
320
|
+
private pauseAllInstances;
|
|
321
|
+
private stealInstance;
|
|
322
|
+
private cleanupEntity;
|
|
323
|
+
destroy(): void;
|
|
324
|
+
}
|
|
325
|
+
export {};
|
|
326
|
+
//# sourceMappingURL=audio-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio-system.d.ts","sourceRoot":"","sources":["../../src/audio/audio-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,KAAK,EAAwB,MAAM,iBAAiB,CAAC;;IAqB1D,oEAAoE;;;;;IAEpE,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAFjE,oEAAoE;;;;;IAEpE,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAnBrE;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,gBAUhC;IACC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,eAAe,CAGT;IAEd,IAAI,IAAI,IAAI;IAeZ,OAAO,CAAC,gBAAgB,CAgBtB;IAEF,OAAO,CAAC,cAAc,CAgBpB;IAEF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;YAqD7B,SAAS;IAwBvB,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,sBAAsB;IA+C9B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,qBAAqB;IAmE7B,OAAO,CAAC,qBAAqB;IA4E7B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,aAAa;IA+CrB,OAAO,CAAC,aAAa;IAyBrB,OAAO,IAAI,IAAI;CAUhB"}
|