@iwsdk/core 0.4.2 → 0.5.1
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/README.md +4 -7
- package/dist/asset/asset-manager.d.ts +136 -8
- package/dist/asset/asset-manager.d.ts.map +1 -1
- package/dist/asset/asset-manager.js +491 -47
- package/dist/asset/asset-manager.js.map +1 -1
- package/dist/asset/cache-manager.d.ts +4 -2
- package/dist/asset/cache-manager.d.ts.map +1 -1
- package/dist/asset/cache-manager.js +10 -3
- package/dist/asset/cache-manager.js.map +1 -1
- package/dist/asset/loaders/audio-loader.d.ts +1 -1
- package/dist/asset/loaders/audio-loader.d.ts.map +1 -1
- package/dist/asset/loaders/audio-loader.js +8 -26
- package/dist/asset/loaders/audio-loader.js.map +1 -1
- package/dist/asset/loaders/cached-asset-load.d.ts +35 -0
- package/dist/asset/loaders/cached-asset-load.d.ts.map +1 -0
- package/dist/asset/loaders/cached-asset-load.js +100 -0
- package/dist/asset/loaders/cached-asset-load.js.map +1 -0
- package/dist/asset/loaders/gltf-loader.d.ts +28 -1
- package/dist/asset/loaders/gltf-loader.d.ts.map +1 -1
- package/dist/asset/loaders/gltf-loader.js +254 -33
- package/dist/asset/loaders/gltf-loader.js.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
- package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js +19 -29
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/asset/loaders/texture-loader.d.ts +1 -1
- package/dist/asset/loaders/texture-loader.d.ts.map +1 -1
- package/dist/asset/loaders/texture-loader.js +9 -26
- package/dist/asset/loaders/texture-loader.js.map +1 -1
- package/dist/asset/loaders/uikitml-loader.d.ts +12 -0
- package/dist/asset/loaders/uikitml-loader.d.ts.map +1 -0
- package/dist/asset/loaders/uikitml-loader.js +44 -0
- package/dist/asset/loaders/uikitml-loader.js.map +1 -0
- package/dist/audio/audio-pool.d.ts +7 -0
- package/dist/audio/audio-pool.d.ts.map +1 -1
- package/dist/audio/audio-pool.js.map +1 -1
- package/dist/audio/audio-system.d.ts +1 -0
- package/dist/audio/audio-system.d.ts.map +1 -1
- package/dist/audio/audio-system.js +16 -2
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/camera/camera-system.d.ts.map +1 -1
- package/dist/camera/camera-system.js +5 -3
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/depth/depth-sensing-system.d.ts.map +1 -1
- package/dist/depth/depth-sensing-system.js +31 -10
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/ecs/builtin-components.d.ts +1239 -0
- package/dist/ecs/builtin-components.d.ts.map +1 -0
- package/dist/ecs/builtin-components.js +87 -0
- package/dist/ecs/builtin-components.js.map +1 -0
- package/dist/ecs/component-editor-metadata.d.ts +19 -0
- package/dist/ecs/component-editor-metadata.d.ts.map +1 -0
- package/dist/ecs/component-editor-metadata.js +19 -0
- package/dist/ecs/component-editor-metadata.js.map +1 -0
- package/dist/ecs/component-manifest.d.ts +24 -0
- package/dist/ecs/component-manifest.d.ts.map +1 -0
- package/dist/ecs/component-manifest.js +121 -0
- package/dist/ecs/component-manifest.js.map +1 -0
- package/dist/ecs/component.d.ts +1 -0
- package/dist/ecs/component.d.ts.map +1 -1
- package/dist/ecs/entity.d.ts +20 -2
- package/dist/ecs/entity.d.ts.map +1 -1
- package/dist/ecs/entity.js +59 -3
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/index.d.ts +3 -1
- package/dist/ecs/index.d.ts.map +1 -1
- package/dist/ecs/system.d.ts +9 -0
- package/dist/ecs/system.d.ts.map +1 -1
- package/dist/ecs/system.js.map +1 -1
- package/dist/ecs/world.d.ts +158 -4
- package/dist/ecs/world.d.ts.map +1 -1
- package/dist/ecs/world.js +304 -5
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.d.ts +2 -1
- package/dist/environment/dome-gradient.d.ts.map +1 -1
- package/dist/environment/dome-gradient.js +2 -1
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/environment-system.d.ts +19 -3
- package/dist/environment/environment-system.d.ts.map +1 -1
- package/dist/environment/environment-system.js +78 -48
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/gradient-environment.d.ts.map +1 -1
- package/dist/environment/gradient-environment.js +13 -7
- package/dist/environment/gradient-environment.js.map +1 -1
- package/dist/environment/scene-ar-environment.d.ts +39 -0
- package/dist/environment/scene-ar-environment.d.ts.map +1 -0
- package/dist/environment/scene-ar-environment.js +93 -0
- package/dist/environment/scene-ar-environment.js.map +1 -0
- package/dist/grab/grab-helpers.d.ts +39 -0
- package/dist/grab/grab-helpers.d.ts.map +1 -0
- package/dist/grab/grab-helpers.js +59 -0
- package/dist/grab/grab-helpers.js.map +1 -0
- package/dist/grab/grab-system.d.ts +45 -0
- package/dist/grab/grab-system.d.ts.map +1 -1
- package/dist/grab/grab-system.js +67 -5
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.d.ts +14 -0
- package/dist/grab/grab-warnings.d.ts.map +1 -0
- package/dist/grab/grab-warnings.js +53 -0
- package/dist/grab/grab-warnings.js.map +1 -0
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +8 -3
- package/dist/grab/handles.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -16
- package/dist/index.js.map +1 -1
- package/dist/init/world-initializer.d.ts +11 -7
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +118 -57
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +0 -1
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +12 -3
- package/dist/init/xr.js.map +1 -1
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +26 -11
- package/dist/input/input-system.js.map +1 -1
- package/dist/layers/xr-layer-state.d.ts +47 -0
- package/dist/layers/xr-layer-state.d.ts.map +1 -0
- package/dist/layers/xr-layer-state.js +23 -0
- package/dist/layers/xr-layer-state.js.map +1 -0
- package/dist/layers/xr-layer-system.d.ts +45 -93
- package/dist/layers/xr-layer-system.d.ts.map +1 -1
- package/dist/layers/xr-layer-system.js +4 -25
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/level/index.d.ts +6 -2
- package/dist/level/index.d.ts.map +1 -1
- package/dist/level/level-component-applier.d.ts +24 -0
- package/dist/level/level-component-applier.d.ts.map +1 -0
- package/dist/level/level-component-applier.js +199 -0
- package/dist/level/level-component-applier.js.map +1 -0
- package/dist/level/level-player-rig.d.ts +17 -0
- package/dist/level/level-player-rig.d.ts.map +1 -0
- package/dist/level/level-player-rig.js +113 -0
- package/dist/level/level-player-rig.js.map +1 -0
- package/dist/level/level-scene-environment.d.ts +28 -0
- package/dist/level/level-scene-environment.d.ts.map +1 -0
- package/dist/level/level-scene-environment.js +121 -0
- package/dist/level/level-scene-environment.js.map +1 -0
- package/dist/level/level-scene-json-importer.d.ts +53 -0
- package/dist/level/level-scene-json-importer.d.ts.map +1 -0
- package/dist/level/level-scene-json-importer.js +256 -0
- package/dist/level/level-scene-json-importer.js.map +1 -0
- package/dist/level/level-scene-material.d.ts +22 -0
- package/dist/level/level-scene-material.d.ts.map +1 -0
- package/dist/level/level-scene-material.js +231 -0
- package/dist/level/level-scene-material.js.map +1 -0
- package/dist/level/level-scene-object.d.ts +49 -0
- package/dist/level/level-scene-object.d.ts.map +1 -0
- package/dist/level/level-scene-object.js +396 -0
- package/dist/level/level-scene-object.js.map +1 -0
- package/dist/level/level-scene-primitive.d.ts +21 -0
- package/dist/level/level-scene-primitive.d.ts.map +1 -0
- package/dist/level/level-scene-primitive.js +159 -0
- package/dist/level/level-scene-primitive.js.map +1 -0
- package/dist/level/level-system.d.ts +14 -20
- package/dist/level/level-system.d.ts.map +1 -1
- package/dist/level/level-system.js +114 -49
- package/dist/level/level-system.js.map +1 -1
- package/dist/lighting/index.d.ts +10 -0
- package/dist/lighting/index.d.ts.map +1 -0
- package/dist/lighting/index.js +4 -0
- package/dist/lighting/index.js.map +1 -0
- package/dist/lighting/light-binding.d.ts +76 -0
- package/dist/lighting/light-binding.d.ts.map +1 -0
- package/dist/lighting/light-binding.js +229 -0
- package/dist/lighting/light-binding.js.map +1 -0
- package/dist/lighting/light-components.d.ts +885 -0
- package/dist/lighting/light-components.d.ts.map +1 -0
- package/dist/lighting/light-components.js +146 -0
- package/dist/lighting/light-components.js.map +1 -0
- package/dist/lighting/light-system.d.ts +919 -0
- package/dist/lighting/light-system.d.ts.map +1 -0
- package/dist/lighting/light-system.js +244 -0
- package/dist/lighting/light-system.js.map +1 -0
- package/dist/locomotion/locomotion-environment.d.ts +27 -0
- package/dist/locomotion/locomotion-environment.d.ts.map +1 -0
- package/dist/locomotion/locomotion-environment.js +22 -0
- package/dist/locomotion/locomotion-environment.js.map +1 -0
- package/dist/locomotion/locomotion.d.ts +5 -34
- package/dist/locomotion/locomotion.d.ts.map +1 -1
- package/dist/locomotion/locomotion.js +33 -31
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/materials/line.js +1 -1
- package/dist/locomotion/slide.d.ts.map +1 -1
- package/dist/locomotion/slide.js +2 -2
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
- package/dist/mcp/ecs-debug-tools.js +10 -2
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/mcp-runtime.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.js +4 -1
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.d.ts +152 -1
- package/dist/mcp/scene-tools.d.ts.map +1 -1
- package/dist/mcp/scene-tools.js +538 -8
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/physics/index.js +11 -4
- package/dist/physics/index.js.map +1 -1
- package/dist/physics/physics-system.d.ts +704 -11
- package/dist/physics/physics-system.d.ts.map +1 -1
- package/dist/physics/physics-system.js +307 -25
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physicsBody.d.ts +40 -1
- package/dist/physics/physicsBody.d.ts.map +1 -1
- package/dist/physics/physicsBody.js +39 -0
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/physics/physicsManipulation.d.ts +1 -1
- package/dist/physics/physicsManipulation.d.ts.map +1 -1
- package/dist/physics/physicsShape.d.ts +5 -3
- package/dist/physics/physicsShape.d.ts.map +1 -1
- package/dist/physics/physicsShape.js +2 -1
- package/dist/physics/physicsShape.js.map +1 -1
- package/dist/physics/utils.d.ts +10 -0
- package/dist/physics/utils.d.ts.map +1 -1
- package/dist/physics/utils.js +82 -48
- package/dist/physics/utils.js.map +1 -1
- package/dist/project/index.d.ts +11 -0
- package/dist/project/index.d.ts.map +1 -0
- package/dist/project/index.js +5 -0
- package/dist/project/index.js.map +1 -0
- package/dist/project/normalize.d.ts +19 -0
- package/dist/project/normalize.d.ts.map +1 -0
- package/dist/project/normalize.js +206 -0
- package/dist/project/normalize.js.map +1 -0
- package/dist/project/paths.d.ts +21 -0
- package/dist/project/paths.d.ts.map +1 -0
- package/dist/project/paths.js +75 -0
- package/dist/project/paths.js.map +1 -0
- package/dist/project/types.d.ts +159 -0
- package/dist/project/types.d.ts.map +1 -0
- package/dist/project/types.js +11 -0
- package/dist/project/types.js.map +1 -0
- package/dist/project/validation.d.ts +17 -0
- package/dist/project/validation.d.ts.map +1 -0
- package/dist/project/validation.js +501 -0
- package/dist/project/validation.js.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts +23 -2
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +76 -54
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +305 -0
- package/dist/transform/transform-component.d.ts +32 -0
- package/dist/transform/transform-component.d.ts.map +1 -0
- package/dist/transform/transform-component.js +24 -0
- package/dist/transform/transform-component.js.map +1 -0
- package/dist/transform/transform.d.ts +9 -42
- package/dist/transform/transform.d.ts.map +1 -1
- package/dist/transform/transform.js +8 -25
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/document.d.ts +9 -2
- package/dist/ui/document.d.ts.map +1 -1
- package/dist/ui/document.js +30 -5
- package/dist/ui/document.js.map +1 -1
- package/dist/ui/follow-component.d.ts +57 -0
- package/dist/ui/follow-component.d.ts.map +1 -0
- package/dist/ui/follow-component.js +38 -0
- package/dist/ui/follow-component.js.map +1 -0
- package/dist/ui/follow.d.ts +28 -102
- package/dist/ui/follow.d.ts.map +1 -1
- package/dist/ui/follow.js +10 -48
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/panel-components.d.ts +29 -0
- package/dist/ui/panel-components.d.ts.map +1 -0
- package/dist/ui/panel-components.js +22 -0
- package/dist/ui/panel-components.js.map +1 -0
- package/dist/ui/screenspace-component.d.ts +39 -0
- package/dist/ui/screenspace-component.d.ts.map +1 -0
- package/dist/ui/screenspace-component.js +21 -0
- package/dist/ui/screenspace-component.js.map +1 -0
- package/dist/ui/screenspace.d.ts +47 -135
- package/dist/ui/screenspace.d.ts.map +1 -1
- package/dist/ui/screenspace.js +127 -65
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.d.ts +20 -122
- package/dist/ui/ui.d.ts.map +1 -1
- package/dist/ui/ui.js +44 -107
- package/dist/ui/ui.js.map +1 -1
- package/dist/ui/uikitml-asset.d.ts +25 -0
- package/dist/ui/uikitml-asset.d.ts.map +1 -0
- package/dist/ui/uikitml-asset.js +56 -0
- package/dist/ui/uikitml-asset.js.map +1 -0
- package/dist/ui/uikitml.d.ts +41 -0
- package/dist/ui/uikitml.d.ts.map +1 -0
- package/dist/ui/uikitml.js +119 -0
- package/dist/ui/uikitml.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/visibility/visibility-component.d.ts +14 -0
- package/dist/visibility/visibility-component.d.ts.map +1 -0
- package/dist/visibility/visibility-component.js +15 -0
- package/dist/visibility/visibility-component.js.map +1 -0
- package/dist/visibility/visibility.d.ts +3 -10
- package/dist/visibility/visibility.d.ts.map +1 -1
- package/dist/visibility/visibility.js +9 -12
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +36 -8
- package/dist/ecs/component-registry.d.ts +0 -54
- package/dist/ecs/component-registry.d.ts.map +0 -1
- package/dist/ecs/component-registry.js +0 -86
- package/dist/ecs/component-registry.js.map +0 -1
- package/dist/level/level-entity-creator.d.ts +0 -27
- package/dist/level/level-entity-creator.d.ts.map +0 -1
- package/dist/level/level-entity-creator.js +0 -108
- package/dist/level/level-entity-creator.js.map +0 -1
- package/dist/level/level-glxf-importer.d.ts +0 -23
- package/dist/level/level-glxf-importer.d.ts.map +0 -1
- package/dist/level/level-glxf-importer.js +0 -40
- package/dist/level/level-glxf-importer.js.map +0 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { MAX_SCENE_MODEL_PAYLOAD_BYTES, MAX_SCENE_TOTAL_MODEL_PAYLOAD_BYTES } from '@iwsdk/scene-composition';
|
|
1
2
|
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
|
2
3
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
3
4
|
import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader.js';
|
|
4
5
|
import { clone } from 'three/examples/jsm/utils/SkeletonUtils.js';
|
|
5
6
|
import '../../runtime/three.js';
|
|
6
7
|
import { CacheManager } from '../cache-manager.js';
|
|
8
|
+
import { DEFAULT_ASSET_LOAD_TIMEOUT_MS, loadCachedAsset } from './cached-asset-load.js';
|
|
7
9
|
import { REVISION } from 'three';
|
|
8
10
|
|
|
9
11
|
/**
|
|
@@ -12,6 +14,20 @@ import { REVISION } from 'three';
|
|
|
12
14
|
* This source code is licensed under the MIT license found in the
|
|
13
15
|
* LICENSE file in the root directory of this source tree.
|
|
14
16
|
*/
|
|
17
|
+
/** Default maximum combined response size for one staged model. */
|
|
18
|
+
const DEFAULT_MAX_MODEL_PAYLOAD_BYTES = MAX_SCENE_MODEL_PAYLOAD_BYTES;
|
|
19
|
+
/** Default maximum combined primary-response size for staged scene models. */
|
|
20
|
+
const DEFAULT_MAX_TOTAL_MODEL_PAYLOAD_BYTES = MAX_SCENE_TOTAL_MODEL_PAYLOAD_BYTES;
|
|
21
|
+
/** Error raised when an actual model response exceeds its configured ceiling. */
|
|
22
|
+
class GLTFPayloadLimitError extends Error {
|
|
23
|
+
constructor(url, actualBytes, limitBytes) {
|
|
24
|
+
super(`Model payload "${url}" is ${actualBytes} bytes; the configured limit is ${limitBytes} bytes`);
|
|
25
|
+
this.url = url;
|
|
26
|
+
this.actualBytes = actualBytes;
|
|
27
|
+
this.limitBytes = limitBytes;
|
|
28
|
+
this.name = 'GLTFPayloadLimitError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
15
31
|
const THREE_PATH = `https://unpkg.com/three@0.${REVISION}.0`;
|
|
16
32
|
/**
|
|
17
33
|
* GLTF loader with DRACO/KTX2 support, de-duplication, and caching.
|
|
@@ -46,37 +62,85 @@ class GLTFAssetLoader {
|
|
|
46
62
|
* suitable for placing into multiple entities, call {@link GLTFAssetLoader.getGLTF}
|
|
47
63
|
* (or `AssetManager.getGLTF`) by key after the load resolves.
|
|
48
64
|
*/
|
|
49
|
-
static loadGLTF(
|
|
50
|
-
|
|
51
|
-
if (
|
|
52
|
-
|
|
65
|
+
static loadGLTF(urlOrKey, key, timeoutMs = DEFAULT_ASSET_LOAD_TIMEOUT_MS) {
|
|
66
|
+
const url = CacheManager.resolveUrl(urlOrKey);
|
|
67
|
+
if (key) {
|
|
68
|
+
CacheManager.setKeyToUrl(key, url);
|
|
53
69
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
return loadCachedAsset({
|
|
71
|
+
discard: disposeGLTFResources,
|
|
72
|
+
load: (resolve, reject) => {
|
|
73
|
+
this.gltfLoader.load(url, resolve, () => { }, // progress callback
|
|
74
|
+
reject);
|
|
75
|
+
},
|
|
76
|
+
timeoutMs,
|
|
77
|
+
url,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Fetch and parse a glTF without touching the shared URL, promise, or key
|
|
82
|
+
* caches. The glTF/GLB response plus external glTF buffers and images are
|
|
83
|
+
* measured from their actual decoded bytes; `Content-Length` is used only as
|
|
84
|
+
* an early rejection signal.
|
|
85
|
+
*/
|
|
86
|
+
static async loadGLTFDetached(url, maxPayloadBytes = DEFAULT_MAX_MODEL_PAYLOAD_BYTES) {
|
|
87
|
+
var _a;
|
|
88
|
+
const primary = await fetchResponseBytes(url, maxPayloadBytes);
|
|
89
|
+
let payloadBytes = primary.bytes.byteLength;
|
|
90
|
+
let parseBytes = primary.bytes;
|
|
91
|
+
const objectUrls = [];
|
|
92
|
+
try {
|
|
93
|
+
if (!isGLB(primary.bytes)) {
|
|
94
|
+
const json = tryParseGLTFJson(primary.bytes);
|
|
95
|
+
if (json != null) {
|
|
96
|
+
const dependencies = collectExternalGLTFDependencies(json);
|
|
97
|
+
const objectUrlByUri = new Map();
|
|
98
|
+
for (const dependency of dependencies) {
|
|
99
|
+
let objectUrl = objectUrlByUri.get(dependency.uri);
|
|
100
|
+
if (objectUrl == null) {
|
|
101
|
+
const resolvedUrl = resolveDependencyUrl(dependency.uri, url);
|
|
102
|
+
let loaded;
|
|
103
|
+
try {
|
|
104
|
+
loaded = await fetchResponseBytes(resolvedUrl, maxPayloadBytes - payloadBytes);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (error instanceof GLTFPayloadLimitError) {
|
|
108
|
+
throw new GLTFPayloadLimitError(url, payloadBytes + error.actualBytes, maxPayloadBytes);
|
|
109
|
+
}
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
payloadBytes += loaded.bytes.byteLength;
|
|
113
|
+
const dependencyPayload = new ArrayBuffer(loaded.bytes.byteLength);
|
|
114
|
+
new Uint8Array(dependencyPayload).set(loaded.bytes);
|
|
115
|
+
objectUrl = URL.createObjectURL(new Blob([dependencyPayload], {
|
|
116
|
+
type: (_a = loaded.contentType) !== null && _a !== void 0 ? _a : 'application/octet-stream',
|
|
117
|
+
}));
|
|
118
|
+
objectUrls.push(objectUrl);
|
|
119
|
+
objectUrlByUri.set(dependency.uri, objectUrl);
|
|
120
|
+
}
|
|
121
|
+
dependency.owner.uri = objectUrl;
|
|
122
|
+
}
|
|
123
|
+
parseBytes = new TextEncoder().encode(JSON.stringify(json));
|
|
74
124
|
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
125
|
+
}
|
|
126
|
+
const resourcePath = url.slice(0, Math.max(0, url.lastIndexOf('/') + 1));
|
|
127
|
+
const payload = new ArrayBuffer(parseBytes.byteLength);
|
|
128
|
+
new Uint8Array(payload).set(parseBytes);
|
|
129
|
+
const gltf = await this.gltfLoader.parseAsync(payload, resourcePath);
|
|
130
|
+
return { gltf, payloadBytes };
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
objectUrls.forEach((objectUrl) => URL.revokeObjectURL(objectUrl));
|
|
78
134
|
}
|
|
79
135
|
}
|
|
136
|
+
/** Clone a glTF object tree while retaining its renderer resources by reference. */
|
|
137
|
+
static cloneGLTF(gltf) {
|
|
138
|
+
return {
|
|
139
|
+
...gltf,
|
|
140
|
+
scene: clone(gltf.scene),
|
|
141
|
+
scenes: gltf.scenes.map((scene) => clone(scene)),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
80
144
|
/**
|
|
81
145
|
* Get a cached GLTF by logical key.
|
|
82
146
|
*
|
|
@@ -101,13 +165,170 @@ class GLTFAssetLoader {
|
|
|
101
165
|
if (options.shared) {
|
|
102
166
|
return cached;
|
|
103
167
|
}
|
|
104
|
-
return
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
168
|
+
return this.cloneGLTF(cached);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/** Dispose every renderer resource reachable from a detached glTF scene tree. */
|
|
172
|
+
function disposeGLTFResources(gltf) {
|
|
173
|
+
const geometries = new Set();
|
|
174
|
+
const materials = new Set();
|
|
175
|
+
const textures = new Set();
|
|
176
|
+
const visited = new Set();
|
|
177
|
+
const visitValue = (value) => {
|
|
178
|
+
if (value == null || typeof value !== 'object' || visited.has(value)) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
visited.add(value);
|
|
182
|
+
if (value.isTexture === true) {
|
|
183
|
+
textures.add(value);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (Array.isArray(value)) {
|
|
187
|
+
value.forEach(visitValue);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
for (const nested of Object.values(value)) {
|
|
191
|
+
visitValue(nested);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
const roots = new Set([gltf.scene, ...gltf.scenes]);
|
|
195
|
+
for (const root of roots) {
|
|
196
|
+
root.traverse((object) => {
|
|
197
|
+
var _a, _b;
|
|
198
|
+
const renderable = object;
|
|
199
|
+
if (((_a = renderable.geometry) === null || _a === void 0 ? void 0 : _a.dispose) != null) {
|
|
200
|
+
geometries.add(renderable.geometry);
|
|
201
|
+
}
|
|
202
|
+
const objectMaterials = Array.isArray(renderable.material)
|
|
203
|
+
? renderable.material
|
|
204
|
+
: renderable.material != null
|
|
205
|
+
? [renderable.material]
|
|
206
|
+
: [];
|
|
207
|
+
for (const material of objectMaterials) {
|
|
208
|
+
materials.add(material);
|
|
209
|
+
visitValue(material);
|
|
210
|
+
}
|
|
211
|
+
visitValue((_b = renderable.skeleton) === null || _b === void 0 ? void 0 : _b.boneTexture);
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
textures.forEach((texture) => texture.dispose());
|
|
215
|
+
materials.forEach((material) => material.dispose());
|
|
216
|
+
geometries.forEach((geometry) => geometry.dispose());
|
|
217
|
+
}
|
|
218
|
+
function parseContentLength(value) {
|
|
219
|
+
if (value == null || !/^\d+$/.test(value)) {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
const bytes = Number(value);
|
|
223
|
+
return Number.isSafeInteger(bytes) ? bytes : null;
|
|
224
|
+
}
|
|
225
|
+
async function fetchResponseBytes(url, maxPayloadBytes) {
|
|
226
|
+
var _a;
|
|
227
|
+
const response = await fetch(url);
|
|
228
|
+
if (!response.ok) {
|
|
229
|
+
throw new Error(`Failed to load model resource "${url}": ${response.status} ${response.statusText}`);
|
|
230
|
+
}
|
|
231
|
+
const declaredBytes = parseContentLength(response.headers.get('content-length'));
|
|
232
|
+
if (declaredBytes != null && declaredBytes > maxPayloadBytes) {
|
|
233
|
+
await ((_a = response.body) === null || _a === void 0 ? void 0 : _a.cancel().catch(() => { }));
|
|
234
|
+
throw new GLTFPayloadLimitError(url, declaredBytes, maxPayloadBytes);
|
|
235
|
+
}
|
|
236
|
+
return {
|
|
237
|
+
bytes: await readResponseBytes(response, url, maxPayloadBytes),
|
|
238
|
+
contentType: response.headers.get('content-type'),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function isGLB(bytes) {
|
|
242
|
+
return (bytes.byteLength >= 4 &&
|
|
243
|
+
bytes[0] === 0x67 &&
|
|
244
|
+
bytes[1] === 0x6c &&
|
|
245
|
+
bytes[2] === 0x54 &&
|
|
246
|
+
bytes[3] === 0x46);
|
|
247
|
+
}
|
|
248
|
+
function tryParseGLTFJson(bytes) {
|
|
249
|
+
try {
|
|
250
|
+
const value = JSON.parse(new TextDecoder().decode(bytes));
|
|
251
|
+
return value != null && typeof value === 'object'
|
|
252
|
+
? value
|
|
253
|
+
: null;
|
|
254
|
+
}
|
|
255
|
+
catch (_a) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
function collectExternalGLTFDependencies(json) {
|
|
260
|
+
const dependencies = [];
|
|
261
|
+
for (const collectionName of ['buffers', 'images']) {
|
|
262
|
+
const collection = json[collectionName];
|
|
263
|
+
if (!Array.isArray(collection)) {
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
for (const value of collection) {
|
|
267
|
+
if (value != null &&
|
|
268
|
+
typeof value === 'object' &&
|
|
269
|
+
typeof value.uri === 'string' &&
|
|
270
|
+
!isEmbeddedGLTFUri(value.uri)) {
|
|
271
|
+
dependencies.push({
|
|
272
|
+
owner: value,
|
|
273
|
+
uri: value.uri,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return dependencies;
|
|
279
|
+
}
|
|
280
|
+
function isEmbeddedGLTFUri(uri) {
|
|
281
|
+
return uri.startsWith('data:') || uri.startsWith('blob:');
|
|
282
|
+
}
|
|
283
|
+
function resolveDependencyUrl(uri, modelUrl) {
|
|
284
|
+
const base = globalThis.location == null
|
|
285
|
+
? new URL(modelUrl, 'https://iwsdk.local/')
|
|
286
|
+
: new URL(modelUrl, globalThis.location.href);
|
|
287
|
+
return new URL(uri, base).href;
|
|
288
|
+
}
|
|
289
|
+
async function readResponseBytes(response, url, maxPayloadBytes) {
|
|
290
|
+
if (response.body == null) {
|
|
291
|
+
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
292
|
+
assertPayloadWithinLimit(url, bytes.byteLength, maxPayloadBytes);
|
|
293
|
+
return bytes;
|
|
294
|
+
}
|
|
295
|
+
const reader = response.body.getReader();
|
|
296
|
+
const chunks = [];
|
|
297
|
+
let byteLength = 0;
|
|
298
|
+
try {
|
|
299
|
+
while (true) {
|
|
300
|
+
const { done, value } = await reader.read();
|
|
301
|
+
if (done) {
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
if (value == null) {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
byteLength += value.byteLength;
|
|
308
|
+
assertPayloadWithinLimit(url, byteLength, maxPayloadBytes);
|
|
309
|
+
chunks.push(value);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
await reader.cancel().catch(() => { });
|
|
314
|
+
throw error;
|
|
315
|
+
}
|
|
316
|
+
finally {
|
|
317
|
+
reader.releaseLock();
|
|
318
|
+
}
|
|
319
|
+
const bytes = new Uint8Array(byteLength);
|
|
320
|
+
let offset = 0;
|
|
321
|
+
for (const chunk of chunks) {
|
|
322
|
+
bytes.set(chunk, offset);
|
|
323
|
+
offset += chunk.byteLength;
|
|
324
|
+
}
|
|
325
|
+
return bytes;
|
|
326
|
+
}
|
|
327
|
+
function assertPayloadWithinLimit(url, actualBytes, limitBytes) {
|
|
328
|
+
if (actualBytes > limitBytes) {
|
|
329
|
+
throw new GLTFPayloadLimitError(url, actualBytes, limitBytes);
|
|
109
330
|
}
|
|
110
331
|
}
|
|
111
332
|
|
|
112
|
-
export { GLTFAssetLoader };
|
|
333
|
+
export { DEFAULT_MAX_MODEL_PAYLOAD_BYTES, DEFAULT_MAX_TOTAL_MODEL_PAYLOAD_BYTES, GLTFAssetLoader, GLTFPayloadLimitError, disposeGLTFResources };
|
|
113
334
|
//# sourceMappingURL=gltf-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-loader.js","sources":["../../../src/asset/loaders/gltf-loader.ts"],"sourcesContent":[null],"names":["cloneSkinned"],"mappings":"
|
|
1
|
+
{"version":3,"file":"gltf-loader.js","sources":["../../../src/asset/loaders/gltf-loader.ts"],"sourcesContent":[null],"names":["cloneSkinned"],"mappings":"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"}
|
|
@@ -13,6 +13,6 @@ export declare class HDRTextureAssetLoader {
|
|
|
13
13
|
private static exrLoader;
|
|
14
14
|
static init(loadingManager: LoadingManager): void;
|
|
15
15
|
/** Load an HDR `.hdr`/`.exr` texture by URL, returning a cached instance when possible. */
|
|
16
|
-
static loadHDRTexture(
|
|
16
|
+
static loadHDRTexture(urlOrKey: string, timeoutMs?: number): Promise<Texture>;
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=hdr-texture-loader.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAOhC;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAY;IACpC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAY;IAEpC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAKjD,2FAA2F;IAC3F,MAAM,CAAC,cAAc,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAgC,GACxC,OAAO,CAAC,OAAO,CAAC;CAgCpB"}
|
|
@@ -2,6 +2,7 @@ import { EXRLoader } from 'three/examples/jsm/loaders/EXRLoader.js';
|
|
|
2
2
|
import { HDRLoader } from 'three/examples/jsm/loaders/HDRLoader.js';
|
|
3
3
|
import '../../runtime/three.js';
|
|
4
4
|
import { CacheManager } from '../cache-manager.js';
|
|
5
|
+
import { DEFAULT_ASSET_LOAD_TIMEOUT_MS, loadCachedAsset } from './cached-asset-load.js';
|
|
5
6
|
import { EquirectangularReflectionMapping } from 'three';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -19,7 +20,8 @@ class HDRTextureAssetLoader {
|
|
|
19
20
|
this.exrLoader = new EXRLoader(loadingManager);
|
|
20
21
|
}
|
|
21
22
|
/** Load an HDR `.hdr`/`.exr` texture by URL, returning a cached instance when possible. */
|
|
22
|
-
static
|
|
23
|
+
static loadHDRTexture(urlOrKey, timeoutMs = DEFAULT_ASSET_LOAD_TIMEOUT_MS) {
|
|
24
|
+
const url = CacheManager.resolveUrl(urlOrKey);
|
|
23
25
|
// Normalize extension
|
|
24
26
|
const u = url.toLowerCase();
|
|
25
27
|
const isEXR = u.endsWith('.exr');
|
|
@@ -29,35 +31,23 @@ class HDRTextureAssetLoader {
|
|
|
29
31
|
// but keep API compatibility for callers that route through here.
|
|
30
32
|
return Promise.reject(new Error(`Unsupported HDR texture extension in url: ${url}`));
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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.hdrLoader.load(url, onLoad, undefined, onError);
|
|
57
|
-
}
|
|
34
|
+
return loadCachedAsset({
|
|
35
|
+
discard: (texture) => texture.dispose(),
|
|
36
|
+
load: (resolve, reject) => {
|
|
37
|
+
const onLoad = (texture) => {
|
|
38
|
+
texture.mapping = EquirectangularReflectionMapping;
|
|
39
|
+
resolve(texture);
|
|
40
|
+
};
|
|
41
|
+
if (isEXR) {
|
|
42
|
+
this.exrLoader.load(url, onLoad, undefined, reject);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.hdrLoader.load(url, onLoad, undefined, reject);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
timeoutMs,
|
|
49
|
+
url,
|
|
58
50
|
});
|
|
59
|
-
CacheManager.setPromise(url, loadingPromise);
|
|
60
|
-
return loadingPromise;
|
|
61
51
|
}
|
|
62
52
|
}
|
|
63
53
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hdr-texture-loader.js","sources":["../../../src/asset/loaders/hdr-texture-loader.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hdr-texture-loader.js","sources":["../../../src/asset/loaders/hdr-texture-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;AAeH;;AAEG;MACU,qBAAqB,CAAA;IAIhC,OAAO,IAAI,CAAC,cAA8B,EAAA;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,cAAc,CAAC;IAChD;;AAGA,IAAA,OAAO,cAAc,CACnB,QAAgB,EAChB,SAAS,GAAG,6BAA6B,EAAA;QAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;;AAE7C,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,OAAO,eAAe,CAAC;YACrB,OAAO,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;AACvC,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAI;AACxB,gBAAA,MAAM,MAAM,GAAG,CAAC,OAAgB,KAAI;AAClC,oBAAA,OAAO,CAAC,OAAO,GAAG,gCAAgC;oBAClD,OAAO,CAAC,OAAO,CAAC;AAClB,gBAAA,CAAC;gBACD,IAAI,KAAK,EAAE;AACT,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;gBACrD;qBAAO;AACL,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;gBACrD;YACF,CAAC;YACD,SAAS;YACT,GAAG;AACJ,SAAA,CAAC;IACJ;AACD;;;;"}
|
|
@@ -14,7 +14,7 @@ export declare class TextureAssetLoader {
|
|
|
14
14
|
private static textureLoader;
|
|
15
15
|
static init(loadingManager: LoadingManager): void;
|
|
16
16
|
/** Load a texture (URL or logical key), returning a cached instance when possible. */
|
|
17
|
-
static loadTexture(urlOrKey: string): Promise<Texture>;
|
|
17
|
+
static loadTexture(urlOrKey: string, timeoutMs?: number): Promise<Texture>;
|
|
18
18
|
/** Get a cached texture by logical key. */
|
|
19
19
|
static getTexture(key: string): Texture | null;
|
|
20
20
|
}
|
|
@@ -1 +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;
|
|
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;AAOhF;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAgB;IAE5C,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAIjD,sFAAsF;IACtF,MAAM,CAAC,WAAW,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAgC,GACxC,OAAO,CAAC,OAAO,CAAC;IAYnB,2CAA2C;IAC3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;CAG/C"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '../../runtime/three.js';
|
|
2
2
|
import { CacheManager } from '../cache-manager.js';
|
|
3
|
+
import { DEFAULT_ASSET_LOAD_TIMEOUT_MS, loadCachedAsset } from './cached-asset-load.js';
|
|
3
4
|
import { TextureLoader } from 'three';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -18,34 +19,16 @@ class TextureAssetLoader {
|
|
|
18
19
|
this.textureLoader = new TextureLoader(loadingManager);
|
|
19
20
|
}
|
|
20
21
|
/** Load a texture (URL or logical key), returning a cached instance when possible. */
|
|
21
|
-
static
|
|
22
|
-
// Resolve URL from key if needed
|
|
22
|
+
static loadTexture(urlOrKey, timeoutMs = DEFAULT_ASSET_LOAD_TIMEOUT_MS) {
|
|
23
23
|
const url = CacheManager.resolveUrl(urlOrKey);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
}
|
|
24
|
+
return loadCachedAsset({
|
|
25
|
+
discard: (texture) => texture.dispose(),
|
|
26
|
+
load: (resolve, reject) => {
|
|
27
|
+
this.textureLoader.load(url, resolve, undefined, reject);
|
|
28
|
+
},
|
|
29
|
+
timeoutMs,
|
|
30
|
+
url,
|
|
46
31
|
});
|
|
47
|
-
CacheManager.setPromise(url, loadingPromise);
|
|
48
|
-
return loadingPromise;
|
|
49
32
|
}
|
|
50
33
|
/** Get a cached texture by logical key. */
|
|
51
34
|
static getTexture(key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture-loader.js","sources":["../../../src/asset/loaders/texture-loader.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"texture-loader.js","sources":["../../../src/asset/loaders/texture-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;;;AAKG;AASH;;;;AAIG;MACU,kBAAkB,CAAA;IAG7B,OAAO,IAAI,CAAC,cAA8B,EAAA;QACxC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,cAAc,CAAC;IACxD;;AAGA,IAAA,OAAO,WAAW,CAChB,QAAgB,EAChB,SAAS,GAAG,6BAA6B,EAAA;QAEzC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;AAC7C,QAAA,OAAO,eAAe,CAAC;YACrB,OAAO,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;AACvC,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAI;AACxB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC;YAC1D,CAAC;YACD,SAAS;YACT,GAAG;AACJ,SAAA,CAAC;IACJ;;IAGA,OAAO,UAAU,CAAC,GAAW,EAAA;QAC3B,OAAQ,YAAY,CAAC,aAAa,CAAC,GAAG,CAAa,IAAI,IAAI;IAC7D;AACD;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
/** Cached text loader for UIKitML source assets. */
|
|
8
|
+
export declare class UIKitMLAssetLoader {
|
|
9
|
+
static loadUIKitML(urlOrKey: string, key?: string, forceReload?: boolean, timeoutMs?: number): Promise<string>;
|
|
10
|
+
static getUIKitML(keyOrUrl: string): string | null;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=uikitml-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uikitml-loader.d.ts","sourceRoot":"","sources":["../../../src/asset/loaders/uikitml-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,oDAAoD;AACpD,qBAAa,kBAAkB;WAChB,WAAW,CACtB,QAAQ,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,MAAM,EACZ,WAAW,UAAQ,EACnB,SAAS,SAAgC,GACxC,OAAO,CAAC,MAAM,CAAC;IA2BlB,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAInD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CacheManager } from '../cache-manager.js';
|
|
2
|
+
import { DEFAULT_ASSET_LOAD_TIMEOUT_MS, loadCachedAsset } from './cached-asset-load.js';
|
|
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
|
+
/** Cached text loader for UIKitML source assets. */
|
|
11
|
+
class UIKitMLAssetLoader {
|
|
12
|
+
static async loadUIKitML(urlOrKey, key, forceReload = false, timeoutMs = DEFAULT_ASSET_LOAD_TIMEOUT_MS) {
|
|
13
|
+
if (key) {
|
|
14
|
+
CacheManager.setKeyToUrl(key, urlOrKey);
|
|
15
|
+
}
|
|
16
|
+
const url = CacheManager.resolveUrl(urlOrKey);
|
|
17
|
+
if (forceReload) {
|
|
18
|
+
CacheManager.deleteAsset(url);
|
|
19
|
+
}
|
|
20
|
+
return loadCachedAsset({
|
|
21
|
+
load: (resolve, reject) => {
|
|
22
|
+
(forceReload ? fetch(url, { cache: 'no-store' }) : fetch(url))
|
|
23
|
+
.then(async (response) => {
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
throw new Error(`Failed to load UIKitML: ${url} (${response.status} ${response.statusText})`);
|
|
26
|
+
}
|
|
27
|
+
resolve(await response.text());
|
|
28
|
+
})
|
|
29
|
+
.catch(reject);
|
|
30
|
+
},
|
|
31
|
+
replacePending: forceReload,
|
|
32
|
+
timeoutMs,
|
|
33
|
+
url,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
static getUIKitML(keyOrUrl) {
|
|
37
|
+
var _a;
|
|
38
|
+
const url = CacheManager.resolveUrl(keyOrUrl);
|
|
39
|
+
return (_a = CacheManager.getAsset(url)) !== null && _a !== void 0 ? _a : null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { UIKitMLAssetLoader };
|
|
44
|
+
//# sourceMappingURL=uikitml-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uikitml-loader.js","sources":["../../../src/asset/loaders/uikitml-loader.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAQH;MACa,kBAAkB,CAAA;AAC7B,IAAA,aAAa,WAAW,CACtB,QAAgB,EAChB,GAAY,EACZ,WAAW,GAAG,KAAK,EACnB,SAAS,GAAG,6BAA6B,EAAA;QAEzC,IAAI,GAAG,EAAE;AACP,YAAA,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC;QACzC;QACA,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC7C,IAAI,WAAW,EAAE;AACf,YAAA,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC;QAC/B;AACA,QAAA,OAAO,eAAe,CAAC;AACrB,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAI;gBACxB,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;AAC1D,qBAAA,IAAI,CAAC,OAAO,QAAQ,KAAI;AACvB,oBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,wBAAA,EAA2B,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAA,CAAA,CAAG,CAC7E;oBACH;AACA,oBAAA,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAChC,gBAAA,CAAC;qBACA,KAAK,CAAC,MAAM,CAAC;YAClB,CAAC;AACD,YAAA,cAAc,EAAE,WAAW;YAC3B,SAAS;YACT,GAAG;AACJ,SAAA,CAAC;IACJ;IAEA,OAAO,UAAU,CAAC,QAAgB,EAAA;;QAChC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC7C,OAAO,CAAA,EAAA,GAAA,YAAY,CAAC,QAAQ,CAAS,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI;IACnD;AACD;;;;"}
|
|
@@ -18,6 +18,13 @@ export interface AudioInstance<T extends AmbientAudio | PositionalAudio> {
|
|
|
18
18
|
isFadingOut?: boolean;
|
|
19
19
|
isFadingIn?: boolean;
|
|
20
20
|
pausedBySessionEnd?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Pending timer used to attach the `onended` handler when `audio.source` is
|
|
23
|
+
* not ready immediately. Tracked so it can be cancelled when the instance is
|
|
24
|
+
* released — otherwise a late callback could clobber the `onended` of a
|
|
25
|
+
* pooled audio node that has since been reacquired for a different sound.
|
|
26
|
+
*/
|
|
27
|
+
onendedTimeout?: ReturnType<typeof setTimeout>;
|
|
21
28
|
}
|
|
22
29
|
/**
|
|
23
30
|
* Fixed-size pool of Three.js `Audio`/`PositionalAudio` objects.
|
|
@@ -1 +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;
|
|
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;IAC7B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAChD;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio-pool.js","sources":["../../src/audio/audio-pool.ts"],"sourcesContent":[null],"names":["AmbientAudio"],"mappings":";;;AAAA;;;;;AAKG;
|
|
1
|
+
{"version":3,"file":"audio-pool.js","sources":["../../src/audio/audio-pool.ts"],"sourcesContent":[null],"names":["AmbientAudio"],"mappings":";;;AAAA;;;;;AAKG;AAgCH;;;;;;;;;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;;;;"}
|
|
@@ -317,6 +317,7 @@ export declare class AudioSystem extends AudioSystem_base {
|
|
|
317
317
|
private playIgnore;
|
|
318
318
|
private playFadeRestart;
|
|
319
319
|
private createAndPlayInstance;
|
|
320
|
+
private clearInstanceTimeout;
|
|
320
321
|
private updateActiveInstances;
|
|
321
322
|
private onInstanceEnded;
|
|
322
323
|
private releaseInstance;
|