@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.
Files changed (326) hide show
  1. package/LICENSE +21 -0
  2. package/dist/asset/asset-manager.d.ts +72 -0
  3. package/dist/asset/asset-manager.d.ts.map +1 -0
  4. package/dist/asset/asset-manager.js +138 -0
  5. package/dist/asset/asset-manager.js.map +1 -0
  6. package/dist/asset/cache-manager.d.ts +44 -0
  7. package/dist/asset/cache-manager.d.ts.map +1 -0
  8. package/dist/asset/cache-manager.js +80 -0
  9. package/dist/asset/cache-manager.js.map +1 -0
  10. package/dist/asset/index.d.ts +9 -0
  11. package/dist/asset/index.d.ts.map +1 -0
  12. package/dist/asset/loaders/audio-loader.d.ts +21 -0
  13. package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
  14. package/dist/asset/loaders/audio-loader.js +57 -0
  15. package/dist/asset/loaders/audio-loader.js.map +1 -0
  16. package/dist/asset/loaders/gltf-loader.d.ts +33 -0
  17. package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
  18. package/dist/asset/loaders/gltf-loader.js +79 -0
  19. package/dist/asset/loaders/gltf-loader.js.map +1 -0
  20. package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
  21. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
  22. package/dist/asset/loaders/hdr-texture-loader.js +65 -0
  23. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
  24. package/dist/asset/loaders/texture-loader.d.ts +21 -0
  25. package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
  26. package/dist/asset/loaders/texture-loader.js +57 -0
  27. package/dist/asset/loaders/texture-loader.js.map +1 -0
  28. package/dist/audio/audio-pool.d.ts +59 -0
  29. package/dist/audio/audio-pool.d.ts.map +1 -0
  30. package/dist/audio/audio-pool.js +105 -0
  31. package/dist/audio/audio-pool.js.map +1 -0
  32. package/dist/audio/audio-system.d.ts +326 -0
  33. package/dist/audio/audio-system.d.ts.map +1 -0
  34. package/dist/audio/audio-system.js +478 -0
  35. package/dist/audio/audio-system.js.map +1 -0
  36. package/dist/audio/audio-utils.d.ts +71 -0
  37. package/dist/audio/audio-utils.d.ts.map +1 -0
  38. package/dist/audio/audio-utils.js +145 -0
  39. package/dist/audio/audio-utils.js.map +1 -0
  40. package/dist/audio/audio.d.ts +178 -0
  41. package/dist/audio/audio.d.ts.map +1 -0
  42. package/dist/audio/audio.js +104 -0
  43. package/dist/audio/audio.js.map +1 -0
  44. package/dist/audio/index.d.ts +11 -0
  45. package/dist/audio/index.d.ts.map +1 -0
  46. package/dist/ecs/component-registry.d.ts +54 -0
  47. package/dist/ecs/component-registry.d.ts.map +1 -0
  48. package/dist/ecs/component-registry.js +86 -0
  49. package/dist/ecs/component-registry.js.map +1 -0
  50. package/dist/ecs/component.d.ts +12 -0
  51. package/dist/ecs/component.d.ts.map +1 -0
  52. package/dist/ecs/entity.d.ts +17 -0
  53. package/dist/ecs/entity.d.ts.map +1 -0
  54. package/dist/ecs/entity.js +13 -0
  55. package/dist/ecs/entity.js.map +1 -0
  56. package/dist/ecs/index.d.ts +12 -0
  57. package/dist/ecs/index.d.ts.map +1 -0
  58. package/dist/ecs/system.d.ts +70 -0
  59. package/dist/ecs/system.d.ts.map +1 -0
  60. package/dist/ecs/system.js +79 -0
  61. package/dist/ecs/system.js.map +1 -0
  62. package/dist/ecs/world.d.ts +101 -0
  63. package/dist/ecs/world.d.ts.map +1 -0
  64. package/dist/ecs/world.js +165 -0
  65. package/dist/ecs/world.js.map +1 -0
  66. package/dist/environment/dome-gradient.d.ts +39 -0
  67. package/dist/environment/dome-gradient.d.ts.map +1 -0
  68. package/dist/environment/dome-gradient.js +30 -0
  69. package/dist/environment/dome-gradient.js.map +1 -0
  70. package/dist/environment/dome-texture.d.ts +39 -0
  71. package/dist/environment/dome-texture.d.ts.map +1 -0
  72. package/dist/environment/dome-texture.js +30 -0
  73. package/dist/environment/dome-texture.js.map +1 -0
  74. package/dist/environment/environment-system.d.ts +82 -0
  75. package/dist/environment/environment-system.d.ts.map +1 -0
  76. package/dist/environment/environment-system.js +389 -0
  77. package/dist/environment/environment-system.js.map +1 -0
  78. package/dist/environment/gradient-environment.d.ts +37 -0
  79. package/dist/environment/gradient-environment.d.ts.map +1 -0
  80. package/dist/environment/gradient-environment.js +99 -0
  81. package/dist/environment/gradient-environment.js.map +1 -0
  82. package/dist/environment/ibl-gradient.d.ts +38 -0
  83. package/dist/environment/ibl-gradient.d.ts.map +1 -0
  84. package/dist/environment/ibl-gradient.js +29 -0
  85. package/dist/environment/ibl-gradient.js.map +1 -0
  86. package/dist/environment/ibl-texture.d.ts +36 -0
  87. package/dist/environment/ibl-texture.d.ts.map +1 -0
  88. package/dist/environment/ibl-texture.js +30 -0
  89. package/dist/environment/ibl-texture.js.map +1 -0
  90. package/dist/environment/index.d.ts +12 -0
  91. package/dist/environment/index.d.ts.map +1 -0
  92. package/dist/grab/distance-grabbable.d.ts +115 -0
  93. package/dist/grab/distance-grabbable.d.ts.map +1 -0
  94. package/dist/grab/distance-grabbable.js +102 -0
  95. package/dist/grab/distance-grabbable.js.map +1 -0
  96. package/dist/grab/grab-system.d.ts +320 -0
  97. package/dist/grab/grab-system.d.ts.map +1 -0
  98. package/dist/grab/grab-system.js +239 -0
  99. package/dist/grab/grab-system.js.map +1 -0
  100. package/dist/grab/handles.d.ts +43 -0
  101. package/dist/grab/handles.d.ts.map +1 -0
  102. package/dist/grab/handles.js +132 -0
  103. package/dist/grab/handles.js.map +1 -0
  104. package/dist/grab/index.d.ts +13 -0
  105. package/dist/grab/index.d.ts.map +1 -0
  106. package/dist/grab/index.js +23 -0
  107. package/dist/grab/index.js.map +1 -0
  108. package/dist/grab/one-hand-grabbable.d.ts +80 -0
  109. package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
  110. package/dist/grab/one-hand-grabbable.js +80 -0
  111. package/dist/grab/one-hand-grabbable.js.map +1 -0
  112. package/dist/grab/pointer-events-patch.d.ts +16 -0
  113. package/dist/grab/pointer-events-patch.d.ts.map +1 -0
  114. package/dist/grab/pointer-events-patch.js +223 -0
  115. package/dist/grab/pointer-events-patch.js.map +1 -0
  116. package/dist/grab/two-hands-grabbable.d.ts +103 -0
  117. package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
  118. package/dist/grab/two-hands-grabbable.js +100 -0
  119. package/dist/grab/two-hands-grabbable.js.map +1 -0
  120. package/dist/index.d.ts +27 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +82 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/init/index.d.ts +9 -0
  125. package/dist/init/index.d.ts.map +1 -0
  126. package/dist/init/world-initializer.d.ts +76 -0
  127. package/dist/init/world-initializer.d.ts.map +1 -0
  128. package/dist/init/world-initializer.js +403 -0
  129. package/dist/init/world-initializer.js.map +1 -0
  130. package/dist/init/xr.d.ts +87 -0
  131. package/dist/init/xr.d.ts.map +1 -0
  132. package/dist/init/xr.js +193 -0
  133. package/dist/init/xr.js.map +1 -0
  134. package/dist/input/index.d.ts +9 -0
  135. package/dist/input/index.d.ts.map +1 -0
  136. package/dist/input/input-system.d.ts +52 -0
  137. package/dist/input/input-system.d.ts.map +1 -0
  138. package/dist/input/input-system.js +176 -0
  139. package/dist/input/input-system.js.map +1 -0
  140. package/dist/input/state-tags.d.ts +56 -0
  141. package/dist/input/state-tags.d.ts.map +1 -0
  142. package/dist/input/state-tags.js +63 -0
  143. package/dist/input/state-tags.js.map +1 -0
  144. package/dist/level/index.d.ts +12 -0
  145. package/dist/level/index.d.ts.map +1 -0
  146. package/dist/level/level-entity-creator.d.ts +27 -0
  147. package/dist/level/level-entity-creator.d.ts.map +1 -0
  148. package/dist/level/level-entity-creator.js +110 -0
  149. package/dist/level/level-entity-creator.js.map +1 -0
  150. package/dist/level/level-glxf-importer.d.ts +22 -0
  151. package/dist/level/level-glxf-importer.d.ts.map +1 -0
  152. package/dist/level/level-glxf-importer.js +40 -0
  153. package/dist/level/level-glxf-importer.js.map +1 -0
  154. package/dist/level/level-root.d.ts +18 -0
  155. package/dist/level/level-root.d.ts.map +1 -0
  156. package/dist/level/level-root.js +25 -0
  157. package/dist/level/level-root.js.map +1 -0
  158. package/dist/level/level-system.d.ts +54 -0
  159. package/dist/level/level-system.d.ts.map +1 -0
  160. package/dist/level/level-system.js +134 -0
  161. package/dist/level/level-system.js.map +1 -0
  162. package/dist/level/level-tag.d.ts +25 -0
  163. package/dist/level/level-tag.d.ts.map +1 -0
  164. package/dist/level/level-tag.js +28 -0
  165. package/dist/level/level-tag.js.map +1 -0
  166. package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
  167. package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
  168. package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
  169. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
  170. package/dist/locomotion/index.d.ts +11 -0
  171. package/dist/locomotion/index.d.ts.map +1 -0
  172. package/dist/locomotion/locomotion.d.ts +239 -0
  173. package/dist/locomotion/locomotion.d.ts.map +1 -0
  174. package/dist/locomotion/locomotion.js +256 -0
  175. package/dist/locomotion/locomotion.js.map +1 -0
  176. package/dist/locomotion/materials/line.d.ts +24 -0
  177. package/dist/locomotion/materials/line.d.ts.map +1 -0
  178. package/dist/locomotion/materials/line.js +307 -0
  179. package/dist/locomotion/materials/line.js.map +1 -0
  180. package/dist/locomotion/slide.d.ts +76 -0
  181. package/dist/locomotion/slide.d.ts.map +1 -0
  182. package/dist/locomotion/slide.js +131 -0
  183. package/dist/locomotion/slide.js.map +1 -0
  184. package/dist/locomotion/teleport.d.ts +68 -0
  185. package/dist/locomotion/teleport.d.ts.map +1 -0
  186. package/dist/locomotion/teleport.js +150 -0
  187. package/dist/locomotion/teleport.js.map +1 -0
  188. package/dist/locomotion/turn.d.ts +77 -0
  189. package/dist/locomotion/turn.d.ts.map +1 -0
  190. package/dist/locomotion/turn.js +126 -0
  191. package/dist/locomotion/turn.js.map +1 -0
  192. 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
  193. 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
  194. 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
  195. 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
  196. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
  197. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
  198. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
  199. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
  200. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
  201. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
  202. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
  203. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
  204. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
  205. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
  206. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
  207. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
  208. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
  209. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
  210. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
  211. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
  212. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
  213. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
  214. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
  215. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
  216. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
  217. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
  218. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
  219. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
  220. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
  221. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
  222. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
  223. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
  224. package/dist/physics/index.d.ts +11 -0
  225. package/dist/physics/index.d.ts.map +1 -0
  226. package/dist/physics/physics-system.d.ts +314 -0
  227. package/dist/physics/physics-system.d.ts.map +1 -0
  228. package/dist/physics/physics-system.js +419 -0
  229. package/dist/physics/physics-system.js.map +1 -0
  230. package/dist/physics/physicsBody.d.ts +83 -0
  231. package/dist/physics/physicsBody.d.ts.map +1 -0
  232. package/dist/physics/physicsBody.js +60 -0
  233. package/dist/physics/physicsBody.js.map +1 -0
  234. package/dist/physics/physicsManipulation.d.ts +51 -0
  235. package/dist/physics/physicsManipulation.d.ts.map +1 -0
  236. package/dist/physics/physicsManipulation.js +46 -0
  237. package/dist/physics/physicsManipulation.js.map +1 -0
  238. package/dist/physics/physicsShape.d.ts +133 -0
  239. package/dist/physics/physicsShape.d.ts.map +1 -0
  240. package/dist/physics/physicsShape.js +97 -0
  241. package/dist/physics/physicsShape.js.map +1 -0
  242. package/dist/physics/utils.d.ts +21 -0
  243. package/dist/physics/utils.d.ts.map +1 -0
  244. package/dist/physics/utils.js +130 -0
  245. package/dist/physics/utils.js.map +1 -0
  246. package/dist/runtime/index.d.ts +8 -0
  247. package/dist/runtime/index.d.ts.map +1 -0
  248. package/dist/runtime/three.d.ts +8 -0
  249. package/dist/runtime/three.d.ts.map +1 -0
  250. package/dist/runtime/three.js +18 -0
  251. package/dist/runtime/three.js.map +1 -0
  252. package/dist/scene-understanding/anchor.d.ts +42 -0
  253. package/dist/scene-understanding/anchor.d.ts.map +1 -0
  254. package/dist/scene-understanding/anchor.js +45 -0
  255. package/dist/scene-understanding/anchor.js.map +1 -0
  256. package/dist/scene-understanding/index.d.ts +11 -0
  257. package/dist/scene-understanding/index.d.ts.map +1 -0
  258. package/dist/scene-understanding/mesh.d.ts +67 -0
  259. package/dist/scene-understanding/mesh.d.ts.map +1 -0
  260. package/dist/scene-understanding/mesh.js +55 -0
  261. package/dist/scene-understanding/mesh.js.map +1 -0
  262. package/dist/scene-understanding/plane.d.ts +39 -0
  263. package/dist/scene-understanding/plane.d.ts.map +1 -0
  264. package/dist/scene-understanding/plane.js +42 -0
  265. package/dist/scene-understanding/plane.js.map +1 -0
  266. package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
  267. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
  268. package/dist/scene-understanding/scene-understanding-system.js +342 -0
  269. package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
  270. package/dist/transform/index.d.ts +10 -0
  271. package/dist/transform/index.d.ts.map +1 -0
  272. package/dist/transform/synced-quaternion.d.ts +35 -0
  273. package/dist/transform/synced-quaternion.d.ts.map +1 -0
  274. package/dist/transform/synced-quaternion.js +128 -0
  275. package/dist/transform/synced-quaternion.js.map +1 -0
  276. package/dist/transform/synced-vector3.d.ts +34 -0
  277. package/dist/transform/synced-vector3.d.ts.map +1 -0
  278. package/dist/transform/synced-vector3.js +106 -0
  279. package/dist/transform/synced-vector3.js.map +1 -0
  280. package/dist/transform/transform.d.ts +100 -0
  281. package/dist/transform/transform.d.ts.map +1 -0
  282. package/dist/transform/transform.js +194 -0
  283. package/dist/transform/transform.js.map +1 -0
  284. package/dist/types/webxr-augmentations.d.ts +23 -0
  285. package/dist/types/webxr-augmentations.d.ts.map +1 -0
  286. package/dist/ui/document.d.ts +112 -0
  287. package/dist/ui/document.d.ts.map +1 -0
  288. package/dist/ui/document.js +298 -0
  289. package/dist/ui/document.js.map +1 -0
  290. package/dist/ui/follow.d.ts +197 -0
  291. package/dist/ui/follow.d.ts.map +1 -0
  292. package/dist/ui/follow.js +143 -0
  293. package/dist/ui/follow.js.map +1 -0
  294. package/dist/ui/index.d.ts +18 -0
  295. package/dist/ui/index.d.ts.map +1 -0
  296. package/dist/ui/screenspace.d.ts +219 -0
  297. package/dist/ui/screenspace.d.ts.map +1 -0
  298. package/dist/ui/screenspace.js +215 -0
  299. package/dist/ui/screenspace.js.map +1 -0
  300. package/dist/ui/ui.d.ts +209 -0
  301. package/dist/ui/ui.d.ts.map +1 -0
  302. package/dist/ui/ui.js +185 -0
  303. package/dist/ui/ui.js.map +1 -0
  304. package/dist/vendor/basis/README.md +46 -0
  305. package/dist/vendor/basis/basis_transcoder.js +19 -0
  306. package/dist/vendor/basis/basis_transcoder.wasm +0 -0
  307. package/dist/vendor/draco/README.md +32 -0
  308. package/dist/vendor/draco/draco_decoder.js +34 -0
  309. package/dist/vendor/draco/draco_decoder.wasm +0 -0
  310. package/dist/vendor/draco/draco_encoder.js +33 -0
  311. package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
  312. package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
  313. package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
  314. package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
  315. package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
  316. package/dist/version.d.ts +2 -0
  317. package/dist/version.d.ts.map +1 -0
  318. package/dist/version.js +4 -0
  319. package/dist/version.js.map +1 -0
  320. package/dist/visibility/index.d.ts +8 -0
  321. package/dist/visibility/index.d.ts.map +1 -0
  322. package/dist/visibility/visibility.d.ts +37 -0
  323. package/dist/visibility/visibility.d.ts.map +1 -0
  324. package/dist/visibility/visibility.js +52 -0
  325. package/dist/visibility/visibility.js.map +1 -0
  326. 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"}