@iwsdk/core 0.4.2 → 0.5.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.
Files changed (314) hide show
  1. package/README.md +4 -7
  2. package/dist/asset/asset-manager.d.ts +136 -8
  3. package/dist/asset/asset-manager.d.ts.map +1 -1
  4. package/dist/asset/asset-manager.js +491 -47
  5. package/dist/asset/asset-manager.js.map +1 -1
  6. package/dist/asset/cache-manager.d.ts +4 -2
  7. package/dist/asset/cache-manager.d.ts.map +1 -1
  8. package/dist/asset/cache-manager.js +10 -3
  9. package/dist/asset/cache-manager.js.map +1 -1
  10. package/dist/asset/loaders/audio-loader.d.ts +1 -1
  11. package/dist/asset/loaders/audio-loader.d.ts.map +1 -1
  12. package/dist/asset/loaders/audio-loader.js +8 -26
  13. package/dist/asset/loaders/audio-loader.js.map +1 -1
  14. package/dist/asset/loaders/cached-asset-load.d.ts +35 -0
  15. package/dist/asset/loaders/cached-asset-load.d.ts.map +1 -0
  16. package/dist/asset/loaders/cached-asset-load.js +100 -0
  17. package/dist/asset/loaders/cached-asset-load.js.map +1 -0
  18. package/dist/asset/loaders/gltf-loader.d.ts +28 -1
  19. package/dist/asset/loaders/gltf-loader.d.ts.map +1 -1
  20. package/dist/asset/loaders/gltf-loader.js +254 -33
  21. package/dist/asset/loaders/gltf-loader.js.map +1 -1
  22. package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
  23. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
  24. package/dist/asset/loaders/hdr-texture-loader.js +19 -29
  25. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  26. package/dist/asset/loaders/texture-loader.d.ts +1 -1
  27. package/dist/asset/loaders/texture-loader.d.ts.map +1 -1
  28. package/dist/asset/loaders/texture-loader.js +9 -26
  29. package/dist/asset/loaders/texture-loader.js.map +1 -1
  30. package/dist/asset/loaders/uikitml-loader.d.ts +12 -0
  31. package/dist/asset/loaders/uikitml-loader.d.ts.map +1 -0
  32. package/dist/asset/loaders/uikitml-loader.js +44 -0
  33. package/dist/asset/loaders/uikitml-loader.js.map +1 -0
  34. package/dist/audio/audio-pool.d.ts +7 -0
  35. package/dist/audio/audio-pool.d.ts.map +1 -1
  36. package/dist/audio/audio-pool.js.map +1 -1
  37. package/dist/audio/audio-system.d.ts +1 -0
  38. package/dist/audio/audio-system.d.ts.map +1 -1
  39. package/dist/audio/audio-system.js +16 -2
  40. package/dist/audio/audio-system.js.map +1 -1
  41. package/dist/camera/camera-system.d.ts.map +1 -1
  42. package/dist/camera/camera-system.js +5 -3
  43. package/dist/camera/camera-system.js.map +1 -1
  44. package/dist/depth/depth-sensing-system.d.ts.map +1 -1
  45. package/dist/depth/depth-sensing-system.js +31 -10
  46. package/dist/depth/depth-sensing-system.js.map +1 -1
  47. package/dist/ecs/builtin-components.d.ts +1239 -0
  48. package/dist/ecs/builtin-components.d.ts.map +1 -0
  49. package/dist/ecs/builtin-components.js +87 -0
  50. package/dist/ecs/builtin-components.js.map +1 -0
  51. package/dist/ecs/component-editor-metadata.d.ts +19 -0
  52. package/dist/ecs/component-editor-metadata.d.ts.map +1 -0
  53. package/dist/ecs/component-editor-metadata.js +19 -0
  54. package/dist/ecs/component-editor-metadata.js.map +1 -0
  55. package/dist/ecs/component-manifest.d.ts +24 -0
  56. package/dist/ecs/component-manifest.d.ts.map +1 -0
  57. package/dist/ecs/component-manifest.js +121 -0
  58. package/dist/ecs/component-manifest.js.map +1 -0
  59. package/dist/ecs/component.d.ts +1 -0
  60. package/dist/ecs/component.d.ts.map +1 -1
  61. package/dist/ecs/entity.d.ts +20 -2
  62. package/dist/ecs/entity.d.ts.map +1 -1
  63. package/dist/ecs/entity.js +59 -3
  64. package/dist/ecs/entity.js.map +1 -1
  65. package/dist/ecs/index.d.ts +3 -1
  66. package/dist/ecs/index.d.ts.map +1 -1
  67. package/dist/ecs/system.d.ts +9 -0
  68. package/dist/ecs/system.d.ts.map +1 -1
  69. package/dist/ecs/system.js.map +1 -1
  70. package/dist/ecs/world.d.ts +158 -4
  71. package/dist/ecs/world.d.ts.map +1 -1
  72. package/dist/ecs/world.js +304 -5
  73. package/dist/ecs/world.js.map +1 -1
  74. package/dist/environment/dome-gradient.d.ts +2 -1
  75. package/dist/environment/dome-gradient.d.ts.map +1 -1
  76. package/dist/environment/dome-gradient.js +2 -1
  77. package/dist/environment/dome-gradient.js.map +1 -1
  78. package/dist/environment/environment-system.d.ts +19 -3
  79. package/dist/environment/environment-system.d.ts.map +1 -1
  80. package/dist/environment/environment-system.js +78 -48
  81. package/dist/environment/environment-system.js.map +1 -1
  82. package/dist/environment/gradient-environment.d.ts.map +1 -1
  83. package/dist/environment/gradient-environment.js +13 -7
  84. package/dist/environment/gradient-environment.js.map +1 -1
  85. package/dist/environment/scene-ar-environment.d.ts +39 -0
  86. package/dist/environment/scene-ar-environment.d.ts.map +1 -0
  87. package/dist/environment/scene-ar-environment.js +93 -0
  88. package/dist/environment/scene-ar-environment.js.map +1 -0
  89. package/dist/grab/grab-helpers.d.ts +39 -0
  90. package/dist/grab/grab-helpers.d.ts.map +1 -0
  91. package/dist/grab/grab-helpers.js +59 -0
  92. package/dist/grab/grab-helpers.js.map +1 -0
  93. package/dist/grab/grab-system.d.ts +45 -0
  94. package/dist/grab/grab-system.d.ts.map +1 -1
  95. package/dist/grab/grab-system.js +67 -5
  96. package/dist/grab/grab-system.js.map +1 -1
  97. package/dist/grab/grab-warnings.d.ts +14 -0
  98. package/dist/grab/grab-warnings.d.ts.map +1 -0
  99. package/dist/grab/grab-warnings.js +53 -0
  100. package/dist/grab/grab-warnings.js.map +1 -0
  101. package/dist/grab/handles.d.ts.map +1 -1
  102. package/dist/grab/handles.js +8 -3
  103. package/dist/grab/handles.js.map +1 -1
  104. package/dist/index.d.ts +4 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +42 -16
  107. package/dist/index.js.map +1 -1
  108. package/dist/init/world-initializer.d.ts +11 -7
  109. package/dist/init/world-initializer.d.ts.map +1 -1
  110. package/dist/init/world-initializer.js +118 -57
  111. package/dist/init/world-initializer.js.map +1 -1
  112. package/dist/init/xr.d.ts +0 -1
  113. package/dist/init/xr.d.ts.map +1 -1
  114. package/dist/init/xr.js +12 -3
  115. package/dist/init/xr.js.map +1 -1
  116. package/dist/input/input-system.d.ts.map +1 -1
  117. package/dist/input/input-system.js +26 -11
  118. package/dist/input/input-system.js.map +1 -1
  119. package/dist/layers/xr-layer-state.d.ts +47 -0
  120. package/dist/layers/xr-layer-state.d.ts.map +1 -0
  121. package/dist/layers/xr-layer-state.js +23 -0
  122. package/dist/layers/xr-layer-state.js.map +1 -0
  123. package/dist/layers/xr-layer-system.d.ts +45 -93
  124. package/dist/layers/xr-layer-system.d.ts.map +1 -1
  125. package/dist/layers/xr-layer-system.js +4 -25
  126. package/dist/layers/xr-layer-system.js.map +1 -1
  127. package/dist/level/index.d.ts +6 -2
  128. package/dist/level/index.d.ts.map +1 -1
  129. package/dist/level/level-component-applier.d.ts +24 -0
  130. package/dist/level/level-component-applier.d.ts.map +1 -0
  131. package/dist/level/level-component-applier.js +199 -0
  132. package/dist/level/level-component-applier.js.map +1 -0
  133. package/dist/level/level-player-rig.d.ts +17 -0
  134. package/dist/level/level-player-rig.d.ts.map +1 -0
  135. package/dist/level/level-player-rig.js +113 -0
  136. package/dist/level/level-player-rig.js.map +1 -0
  137. package/dist/level/level-scene-environment.d.ts +28 -0
  138. package/dist/level/level-scene-environment.d.ts.map +1 -0
  139. package/dist/level/level-scene-environment.js +121 -0
  140. package/dist/level/level-scene-environment.js.map +1 -0
  141. package/dist/level/level-scene-json-importer.d.ts +53 -0
  142. package/dist/level/level-scene-json-importer.d.ts.map +1 -0
  143. package/dist/level/level-scene-json-importer.js +256 -0
  144. package/dist/level/level-scene-json-importer.js.map +1 -0
  145. package/dist/level/level-scene-material.d.ts +22 -0
  146. package/dist/level/level-scene-material.d.ts.map +1 -0
  147. package/dist/level/level-scene-material.js +231 -0
  148. package/dist/level/level-scene-material.js.map +1 -0
  149. package/dist/level/level-scene-object.d.ts +49 -0
  150. package/dist/level/level-scene-object.d.ts.map +1 -0
  151. package/dist/level/level-scene-object.js +396 -0
  152. package/dist/level/level-scene-object.js.map +1 -0
  153. package/dist/level/level-scene-primitive.d.ts +21 -0
  154. package/dist/level/level-scene-primitive.d.ts.map +1 -0
  155. package/dist/level/level-scene-primitive.js +159 -0
  156. package/dist/level/level-scene-primitive.js.map +1 -0
  157. package/dist/level/level-system.d.ts +14 -20
  158. package/dist/level/level-system.d.ts.map +1 -1
  159. package/dist/level/level-system.js +114 -49
  160. package/dist/level/level-system.js.map +1 -1
  161. package/dist/lighting/index.d.ts +10 -0
  162. package/dist/lighting/index.d.ts.map +1 -0
  163. package/dist/lighting/index.js +4 -0
  164. package/dist/lighting/index.js.map +1 -0
  165. package/dist/lighting/light-binding.d.ts +76 -0
  166. package/dist/lighting/light-binding.d.ts.map +1 -0
  167. package/dist/lighting/light-binding.js +229 -0
  168. package/dist/lighting/light-binding.js.map +1 -0
  169. package/dist/lighting/light-components.d.ts +885 -0
  170. package/dist/lighting/light-components.d.ts.map +1 -0
  171. package/dist/lighting/light-components.js +146 -0
  172. package/dist/lighting/light-components.js.map +1 -0
  173. package/dist/lighting/light-system.d.ts +919 -0
  174. package/dist/lighting/light-system.d.ts.map +1 -0
  175. package/dist/lighting/light-system.js +244 -0
  176. package/dist/lighting/light-system.js.map +1 -0
  177. package/dist/locomotion/locomotion-environment.d.ts +27 -0
  178. package/dist/locomotion/locomotion-environment.d.ts.map +1 -0
  179. package/dist/locomotion/locomotion-environment.js +22 -0
  180. package/dist/locomotion/locomotion-environment.js.map +1 -0
  181. package/dist/locomotion/locomotion.d.ts +5 -34
  182. package/dist/locomotion/locomotion.d.ts.map +1 -1
  183. package/dist/locomotion/locomotion.js +33 -31
  184. package/dist/locomotion/locomotion.js.map +1 -1
  185. package/dist/locomotion/materials/line.js +1 -1
  186. package/dist/locomotion/slide.d.ts.map +1 -1
  187. package/dist/locomotion/slide.js +2 -2
  188. package/dist/locomotion/slide.js.map +1 -1
  189. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
  190. package/dist/mcp/ecs-debug-tools.js +10 -2
  191. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  192. package/dist/mcp/mcp-runtime.d.ts.map +1 -1
  193. package/dist/mcp/mcp-runtime.js +4 -1
  194. package/dist/mcp/mcp-runtime.js.map +1 -1
  195. package/dist/mcp/scene-tools.d.ts +152 -1
  196. package/dist/mcp/scene-tools.d.ts.map +1 -1
  197. package/dist/mcp/scene-tools.js +538 -8
  198. package/dist/mcp/scene-tools.js.map +1 -1
  199. package/dist/physics/index.js +11 -4
  200. package/dist/physics/index.js.map +1 -1
  201. package/dist/physics/physics-system.d.ts +704 -11
  202. package/dist/physics/physics-system.d.ts.map +1 -1
  203. package/dist/physics/physics-system.js +307 -25
  204. package/dist/physics/physics-system.js.map +1 -1
  205. package/dist/physics/physicsBody.d.ts +40 -1
  206. package/dist/physics/physicsBody.d.ts.map +1 -1
  207. package/dist/physics/physicsBody.js +39 -0
  208. package/dist/physics/physicsBody.js.map +1 -1
  209. package/dist/physics/physicsManipulation.d.ts +1 -1
  210. package/dist/physics/physicsManipulation.d.ts.map +1 -1
  211. package/dist/physics/physicsShape.d.ts +5 -3
  212. package/dist/physics/physicsShape.d.ts.map +1 -1
  213. package/dist/physics/physicsShape.js +2 -1
  214. package/dist/physics/physicsShape.js.map +1 -1
  215. package/dist/physics/utils.d.ts +10 -0
  216. package/dist/physics/utils.d.ts.map +1 -1
  217. package/dist/physics/utils.js +82 -48
  218. package/dist/physics/utils.js.map +1 -1
  219. package/dist/project/index.d.ts +11 -0
  220. package/dist/project/index.d.ts.map +1 -0
  221. package/dist/project/index.js +5 -0
  222. package/dist/project/index.js.map +1 -0
  223. package/dist/project/normalize.d.ts +19 -0
  224. package/dist/project/normalize.d.ts.map +1 -0
  225. package/dist/project/normalize.js +206 -0
  226. package/dist/project/normalize.js.map +1 -0
  227. package/dist/project/paths.d.ts +21 -0
  228. package/dist/project/paths.d.ts.map +1 -0
  229. package/dist/project/paths.js +75 -0
  230. package/dist/project/paths.js.map +1 -0
  231. package/dist/project/types.d.ts +159 -0
  232. package/dist/project/types.d.ts.map +1 -0
  233. package/dist/project/types.js +11 -0
  234. package/dist/project/types.js.map +1 -0
  235. package/dist/project/validation.d.ts +17 -0
  236. package/dist/project/validation.d.ts.map +1 -0
  237. package/dist/project/validation.js +501 -0
  238. package/dist/project/validation.js.map +1 -0
  239. package/dist/scene-understanding/scene-understanding-system.d.ts +23 -2
  240. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
  241. package/dist/scene-understanding/scene-understanding-system.js +76 -54
  242. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  243. package/dist/schemas/iwsdk-project.v1.schema.json +305 -0
  244. package/dist/transform/transform-component.d.ts +32 -0
  245. package/dist/transform/transform-component.d.ts.map +1 -0
  246. package/dist/transform/transform-component.js +24 -0
  247. package/dist/transform/transform-component.js.map +1 -0
  248. package/dist/transform/transform.d.ts +9 -42
  249. package/dist/transform/transform.d.ts.map +1 -1
  250. package/dist/transform/transform.js +8 -25
  251. package/dist/transform/transform.js.map +1 -1
  252. package/dist/ui/document.d.ts +9 -2
  253. package/dist/ui/document.d.ts.map +1 -1
  254. package/dist/ui/document.js +30 -5
  255. package/dist/ui/document.js.map +1 -1
  256. package/dist/ui/follow-component.d.ts +57 -0
  257. package/dist/ui/follow-component.d.ts.map +1 -0
  258. package/dist/ui/follow-component.js +38 -0
  259. package/dist/ui/follow-component.js.map +1 -0
  260. package/dist/ui/follow.d.ts +28 -102
  261. package/dist/ui/follow.d.ts.map +1 -1
  262. package/dist/ui/follow.js +10 -48
  263. package/dist/ui/follow.js.map +1 -1
  264. package/dist/ui/index.d.ts +3 -0
  265. package/dist/ui/index.d.ts.map +1 -1
  266. package/dist/ui/panel-components.d.ts +29 -0
  267. package/dist/ui/panel-components.d.ts.map +1 -0
  268. package/dist/ui/panel-components.js +22 -0
  269. package/dist/ui/panel-components.js.map +1 -0
  270. package/dist/ui/screenspace-component.d.ts +39 -0
  271. package/dist/ui/screenspace-component.d.ts.map +1 -0
  272. package/dist/ui/screenspace-component.js +21 -0
  273. package/dist/ui/screenspace-component.js.map +1 -0
  274. package/dist/ui/screenspace.d.ts +47 -135
  275. package/dist/ui/screenspace.d.ts.map +1 -1
  276. package/dist/ui/screenspace.js +127 -65
  277. package/dist/ui/screenspace.js.map +1 -1
  278. package/dist/ui/ui.d.ts +20 -122
  279. package/dist/ui/ui.d.ts.map +1 -1
  280. package/dist/ui/ui.js +44 -107
  281. package/dist/ui/ui.js.map +1 -1
  282. package/dist/ui/uikitml-asset.d.ts +25 -0
  283. package/dist/ui/uikitml-asset.d.ts.map +1 -0
  284. package/dist/ui/uikitml-asset.js +56 -0
  285. package/dist/ui/uikitml-asset.js.map +1 -0
  286. package/dist/ui/uikitml.d.ts +41 -0
  287. package/dist/ui/uikitml.d.ts.map +1 -0
  288. package/dist/ui/uikitml.js +119 -0
  289. package/dist/ui/uikitml.js.map +1 -0
  290. package/dist/vendor/draco/gltf/draco_encoder.js +0 -0
  291. package/dist/version.d.ts +1 -1
  292. package/dist/version.js +1 -1
  293. package/dist/visibility/visibility-component.d.ts +14 -0
  294. package/dist/visibility/visibility-component.d.ts.map +1 -0
  295. package/dist/visibility/visibility-component.js +15 -0
  296. package/dist/visibility/visibility-component.js.map +1 -0
  297. package/dist/visibility/visibility.d.ts +3 -10
  298. package/dist/visibility/visibility.d.ts.map +1 -1
  299. package/dist/visibility/visibility.js +9 -12
  300. package/dist/visibility/visibility.js.map +1 -1
  301. package/package.json +48 -19
  302. package/LICENSE +0 -21
  303. package/dist/ecs/component-registry.d.ts +0 -54
  304. package/dist/ecs/component-registry.d.ts.map +0 -1
  305. package/dist/ecs/component-registry.js +0 -86
  306. package/dist/ecs/component-registry.js.map +0 -1
  307. package/dist/level/level-entity-creator.d.ts +0 -27
  308. package/dist/level/level-entity-creator.d.ts.map +0 -1
  309. package/dist/level/level-entity-creator.js +0 -108
  310. package/dist/level/level-entity-creator.js.map +0 -1
  311. package/dist/level/level-glxf-importer.d.ts +0 -23
  312. package/dist/level/level-glxf-importer.d.ts.map +0 -1
  313. package/dist/level/level-glxf-importer.js +0 -40
  314. package/dist/level/level-glxf-importer.js.map +0 -1
package/README.md CHANGED
@@ -68,15 +68,12 @@ cube.addComponent(OneHandGrabbable, { rotate: true, translate: true });
68
68
  For the best development experience, use our Vite plugins:
69
69
 
70
70
  ```bash
71
- npm install -D @iwsdk/vite-plugin-dev @iwsdk/vite-plugin-gltf-optimizer @iwsdk/vite-plugin-uikitml
71
+ npm install -D @iwsdk/vite-plugin-dev
72
72
  ```
73
73
 
74
- | Plugin | Description |
75
- | ----------------------------------- | ----------------------------------------------- |
76
- | `@iwsdk/vite-plugin-dev` | XR emulation, AI agent tooling, and dev browser |
77
- | `@iwsdk/vite-plugin-gltf-optimizer` | GLTF/GLB optimization during build |
78
- | `@iwsdk/vite-plugin-uikitml` | Compile HTML-like UI templates to spatial UI |
79
- | `@iwsdk/vite-plugin-metaspatial` | Meta Spatial Editor integration |
74
+ | Plugin | Description |
75
+ | ------------------------ | ----------------------------------------------- |
76
+ | `@iwsdk/vite-plugin-dev` | XR emulation, AI agent tooling, and dev browser |
80
77
 
81
78
  ## Documentation
82
79
 
@@ -6,9 +6,22 @@
6
6
  */
7
7
  import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
8
8
  import type { World } from '../ecs/world.js';
9
- import { LoadingManager, Texture, WebGLRenderer } from '../runtime/index.js';
9
+ import { LoadingManager, Object3D, Texture, WebGLRenderer } from '../runtime/index.js';
10
10
  import { GetGLTFOptions } from './loaders/gltf-loader.js';
11
11
  export type { GetGLTFOptions } from './loaders/gltf-loader.js';
12
+ export { DEFAULT_MAX_MODEL_PAYLOAD_BYTES, DEFAULT_MAX_TOTAL_MODEL_PAYLOAD_BYTES, GLTFPayloadLimitError, } from './loaders/gltf-loader.js';
13
+ export { AssetLoadTimeoutError, DEFAULT_ASSET_LOAD_TIMEOUT_MS, } from './loaders/cached-asset-load.js';
14
+ /** Payload ceilings applied to detached model resource preflight. */
15
+ export interface GLTFLoadTransactionLimits {
16
+ maxModelPayloadBytes?: number;
17
+ maxTotalModelPayloadBytes?: number;
18
+ }
19
+ export interface StagedGLTFLoad {
20
+ gltf: GLTF;
21
+ payloadBytes: number;
22
+ source: 'cache' | 'detached';
23
+ url: string;
24
+ }
12
25
  /**
13
26
  * Asset types supported by the {@link AssetManager}.
14
27
  * @category Assets
@@ -17,23 +30,91 @@ export declare enum AssetType {
17
30
  GLTF = "gltf",// 3D models (cached)
18
31
  Audio = "audio",// Audio buffers (cached)
19
32
  Texture = "texture",// 3D textures (cached)
20
- HDRTexture = "hdr-texture"
33
+ HDRTexture = "hdr-texture",// HDR/EXR equirect textures (cached)
34
+ UIKitML = "uikitml"
21
35
  }
36
+ export interface LoadableAssetManifestEntry {
37
+ url: string;
38
+ type: AssetType;
39
+ priority?: 'critical' | 'background' | 'lazy';
40
+ /** Human-readable label used by authoring tools. */
41
+ name?: string;
42
+ }
43
+ export type AssetManifestEntry = LoadableAssetManifestEntry | Object3D;
22
44
  /**
23
- * Declarative manifest for preloading assets.
45
+ * Application asset catalog. Parentless Object3D entries are immutable
46
+ * renderable prototypes; URL entries are loaded and cached by type.
24
47
  * @category Assets
25
48
  */
26
49
  export interface AssetManifest {
27
- [key: string]: {
28
- url: string;
29
- type: AssetType;
30
- priority?: 'critical' | 'background';
50
+ [key: string]: AssetManifestEntry;
51
+ }
52
+ /** Non-enumerable marker carried by manifests created with defineAssets. */
53
+ export declare const ASSET_MANIFEST_BRAND: unique symbol;
54
+ export type DefinedAssetManifest<T extends AssetManifest = AssetManifest> = Readonly<T> & {
55
+ readonly [ASSET_MANIFEST_BRAND]: 1;
56
+ };
57
+ /**
58
+ * Declare the complete application asset catalog shared by runtime/editor.
59
+ * The returned container is frozen; entry objects and Three.js prototypes are
60
+ * intentionally left mutable and retain their original identities.
61
+ */
62
+ export declare function defineAssets<const T extends AssetManifest>(assets: T): DefinedAssetManifest<T>;
63
+ /** Structured identity for critical, background, and on-demand failures. */
64
+ export declare class AssetLoadError extends Error {
65
+ readonly assetId: string;
66
+ readonly url: string;
67
+ readonly cause: unknown;
68
+ constructor(assetId: string, url: string, cause: unknown);
69
+ }
70
+ export interface RenderableAssetInfo {
71
+ id: string;
72
+ kind: 'gltf' | 'primitive' | 'procedural';
73
+ name: string;
74
+ bounds?: {
75
+ min: [number, number, number];
76
+ max: [number, number, number];
31
77
  };
32
78
  }
79
+ /** Asset metadata exposed to authoring tools. */
80
+ export interface AuthoringAssetInfo extends Omit<RenderableAssetInfo, 'kind'> {
81
+ kind: 'gltf' | 'primitive' | 'procedural' | 'uikitml';
82
+ url?: string;
83
+ }
84
+ export interface AssetRegistryOptions {
85
+ instantiateUIKitML?: (assetId: string) => Promise<Object3D>;
86
+ }
87
+ /**
88
+ * World-owned view of the application's renderable asset manifest.
89
+ *
90
+ * The registry never places registered prototypes into a scene. Each request
91
+ * returns a hierarchy clone while retaining shared geometry and material
92
+ * references, matching the existing glTF cache behavior.
93
+ */
94
+ export declare class RenderableAssetRegistry {
95
+ private readonly options;
96
+ private readonly manifest;
97
+ constructor(manifest?: AssetManifest, options?: AssetRegistryOptions);
98
+ preload(): Promise<void>;
99
+ has(id: string): boolean;
100
+ /** Return whether an id instantiates as a conventional model hierarchy. */
101
+ hasRenderable(id: string): boolean;
102
+ /** Return whether an id is available to authoring, including UIKitML. */
103
+ hasAuthoringAsset(id: string): boolean;
104
+ /** Resolve the authoring kind for a manifest id. */
105
+ kind(id: string): AuthoringAssetInfo['kind'] | undefined;
106
+ list(): RenderableAssetInfo[];
107
+ /** List placeable model and UIKitML assets for authoring tools. */
108
+ catalog(): AuthoringAssetInfo[];
109
+ bounds(id: string): RenderableAssetInfo['bounds'] | undefined;
110
+ instantiate<T extends Object3D = Object3D>(id: string): Promise<T>;
111
+ }
33
112
  /** Loader-level options for GLTF/HDR loaders. @category Assets */
34
113
  export interface AssetManagerOptions {
35
114
  dracoDecoderPath: string;
36
115
  ktx2TranscoderPath: string;
116
+ /** Finite upper bound for every critical/background/on-demand load. */
117
+ loadTimeoutMs: number;
37
118
  }
38
119
  /**
39
120
  * Centralized asset loader with caching and priority‑based preloading.
@@ -47,13 +128,28 @@ export interface AssetManagerOptions {
47
128
  export declare class AssetManager {
48
129
  static loadingManager: LoadingManager;
49
130
  static world: World;
131
+ private static loadTimeoutMs;
132
+ private static readonly manifestEntries;
50
133
  /**
51
134
  * Initialize loaders and bind to the current world/renderer.
52
135
  */
53
136
  static init(renderer: WebGLRenderer, world: World, options?: Partial<AssetManagerOptions>): void;
137
+ /** Configure the finite timeout used by subsequent asset loads. */
138
+ static setLoadTimeout(timeoutMs: number): void;
139
+ /** Register catalog identity without starting network requests. */
140
+ static registerManifest(manifest: AssetManifest): void;
54
141
  /** Preload assets with critical/background prioritization. */
55
142
  static preloadAssets(manifest: AssetManifest): Promise<void>;
56
143
  private static loadAssetByType;
144
+ /** Load one registered manifest entry by asset ID. */
145
+ static loadAsset(assetId: string): Promise<GLTF | AudioBuffer | Texture | string>;
146
+ static loadGLTFById(assetId: string): Promise<GLTF>;
147
+ static loadAudioById(assetId: string): Promise<AudioBuffer>;
148
+ static loadTextureById(assetId: string): Promise<Texture>;
149
+ static loadHDRTextureById(assetId: string): Promise<Texture>;
150
+ static loadUIKitMLById(assetId: string): Promise<string>;
151
+ private static loadTypedManifestAsset;
152
+ private static requireManifestEntry;
57
153
  /**
58
154
  * Load a GLTF by URL; optionally register a logical key.
59
155
  *
@@ -62,7 +158,9 @@ export declare class AssetManager {
62
158
  * after the load resolves to retrieve a clone suitable for placing into
63
159
  * multiple entities.
64
160
  */
65
- static loadGLTF(url: string, key?: string): Promise<GLTF>;
161
+ static loadGLTF(urlOrKey: string, key?: string): Promise<GLTF>;
162
+ /** Create an isolated glTF load transaction for scene resource preflight. */
163
+ static createGLTFLoadTransaction(limits?: GLTFLoadTransactionLimits): GLTFLoadTransaction;
66
164
  /** Fetch any cached asset by logical key. */
67
165
  static getAsset(key: string): any;
68
166
  /** Load an AudioBuffer by URL; optionally register a logical key. */
@@ -73,6 +171,10 @@ export declare class AssetManager {
73
171
  static loadTexture(url: string, key?: string): Promise<Texture>;
74
172
  /** Get a cached Texture by logical key. */
75
173
  static getTexture(key: string): Texture | null;
174
+ /** Load and cache UIKitML source by URL or manifest key. */
175
+ static loadUIKitML(urlOrKey: string, key?: string, forceReload?: boolean): Promise<string>;
176
+ /** Get cached UIKitML source by URL or manifest key. */
177
+ static getUIKitML(keyOrUrl: string): string | null;
76
178
  /** Load an HDR equirectangular texture; optionally register a logical key. */
77
179
  static loadHDRTexture(url: string, key?: string): Promise<Texture>;
78
180
  /**
@@ -86,4 +188,30 @@ export declare class AssetManager {
86
188
  */
87
189
  static getGLTF(key: string, options?: GetGLTFOptions): GLTF | null;
88
190
  }
191
+ /**
192
+ * Stages model resources without mutating shared AssetManager caches. A
193
+ * successful scene commit adopts owned resources; rollback disposes them.
194
+ */
195
+ export declare class GLTFLoadTransaction {
196
+ private readonly maxModelPayloadBytes;
197
+ private readonly maxTotalModelPayloadBytes;
198
+ private readonly stagedByUrl;
199
+ private readonly urlByKey;
200
+ private state;
201
+ private totalPayloadBytes;
202
+ constructor(limits?: GLTFLoadTransactionLimits);
203
+ /** Stage one logical key. Repeated URLs share one detached response. */
204
+ stage(url: string, key: string): Promise<StagedGLTFLoad>;
205
+ /** Retrieve a clone for materialization without transferring ownership. */
206
+ getGLTF(key: string, options?: GetGLTFOptions): GLTF | null;
207
+ /** Exact newly fetched primary-response bytes in this transaction. */
208
+ get payloadBytes(): number;
209
+ /** Verify cache ownership can transfer synchronously after scene install. */
210
+ assertCanCommit(): void;
211
+ /** Atomically transfer staged resources and logical keys to the shared cache. */
212
+ commit(): void;
213
+ /** Dispose all transaction-owned model resources; cached resources are borrowed. */
214
+ rollback(): void;
215
+ private assertOpen;
216
+ }
89
217
  //# sourceMappingURL=asset-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset-manager.d.ts","sourceRoot":"","sources":["../../src/asset/asset-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EAAE,cAAc,EAAmB,MAAM,0BAA0B,CAAC;AAI3E,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,oBAAY,SAAS;IACnB,IAAI,SAAS,CAAE,qBAAqB;IACpC,KAAK,UAAU,CAAE,yBAAyB;IAC1C,OAAO,YAAY,CAAE,uBAAuB;IAC5C,UAAU,gBAAgB;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,CAAC;QAChB,QAAQ,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;KACtC,CAAC;CACH;AAED,kEAAkE;AAClE,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC;IACtC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,IAAI,CACT,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAY5C,8DAA8D;WACjD,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;mBA0B7C,eAAe;IAmBpC;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,6CAA6C;IAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAKjC,qEAAqE;WACxD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASvE,+CAA+C;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIhD,gEAAgE;WACnD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASrE,2CAA2C;IAC3C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAI9C,8EAA8E;WACjE,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxE;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;CAGnE"}
1
+ {"version":3,"file":"asset-manager.d.ts","sourceRoot":"","sources":["../../src/asset/asset-manager.ts"],"names":[],"mappings":"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"}