@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,193 @@
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
+ /** WebXR session modes supported by IWSDK. @category Runtime */
8
+ var SessionMode;
9
+ (function (SessionMode) {
10
+ SessionMode["ImmersiveVR"] = "immersive-vr";
11
+ SessionMode["ImmersiveAR"] = "immersive-ar";
12
+ })(SessionMode || (SessionMode = {}));
13
+ /** Common WebXR reference spaces. @category Runtime */
14
+ var ReferenceSpaceType;
15
+ (function (ReferenceSpaceType) {
16
+ ReferenceSpaceType["BoundedFloor"] = "bounded-floor";
17
+ ReferenceSpaceType["Local"] = "local";
18
+ ReferenceSpaceType["LocalFloor"] = "local-floor";
19
+ ReferenceSpaceType["Unbounded"] = "unbounded";
20
+ ReferenceSpaceType["Viewer"] = "viewer";
21
+ })(ReferenceSpaceType || (ReferenceSpaceType = {}));
22
+ /** Default optional features appended to requests/offers. */
23
+ const defaultOffers = ['local-floor', 'bounded-floor', 'layers'];
24
+ /** Normalize a {@link FeatureFlag} to `{ required?: boolean } | undefined`. */
25
+ function normalizeFlag(flag) {
26
+ if (flag === undefined || flag === false) {
27
+ return undefined;
28
+ }
29
+ if (flag === true) {
30
+ return {};
31
+ }
32
+ return { required: !!flag.required };
33
+ }
34
+ function isDepthFlagObject(flag) {
35
+ return typeof flag === 'object';
36
+ }
37
+ /** Build `XRSessionInit` from structured feature flags. */
38
+ function buildSessionInit(opts) {
39
+ var _a;
40
+ const requiredFeatures = [];
41
+ // Always offer helpful optional features by default
42
+ const optionalFeatures = Array.from(new Set(defaultOffers));
43
+ const f = (_a = opts.features) !== null && _a !== void 0 ? _a : {};
44
+ const map = {
45
+ handTracking: 'hand-tracking',
46
+ anchors: 'anchors',
47
+ hitTest: 'hit-test',
48
+ planeDetection: 'plane-detection',
49
+ meshDetection: 'mesh-detection',
50
+ lightEstimation: 'light-estimation',
51
+ depthSensing: 'depth-sensing',
52
+ layers: 'layers',
53
+ };
54
+ const push = (key, normalized) => {
55
+ if (!normalized) {
56
+ return;
57
+ }
58
+ const token = map[key];
59
+ if (normalized.required) {
60
+ requiredFeatures.push(token);
61
+ }
62
+ else {
63
+ optionalFeatures.push(token);
64
+ }
65
+ };
66
+ // Simple flags
67
+ push('handTracking', normalizeFlag(f.handTracking));
68
+ push('anchors', normalizeFlag(f.anchors));
69
+ push('hitTest', normalizeFlag(f.hitTest));
70
+ push('planeDetection', normalizeFlag(f.planeDetection));
71
+ push('meshDetection', normalizeFlag(f.meshDetection));
72
+ push('lightEstimation', normalizeFlag(f.lightEstimation));
73
+ push('layers', normalizeFlag(f.layers));
74
+ // Depth sensing (may include preferences)
75
+ if (f.depthSensing) {
76
+ const normalized = normalizeFlag(isDepthFlagObject(f.depthSensing)
77
+ ? { required: f.depthSensing.required }
78
+ : f.depthSensing);
79
+ push('depthSensing', normalized);
80
+ }
81
+ const sessionInit = {
82
+ requiredFeatures: Array.from(new Set(requiredFeatures)),
83
+ optionalFeatures: Array.from(new Set(optionalFeatures)),
84
+ };
85
+ if (isDepthFlagObject(f.depthSensing)) {
86
+ const usage = f.depthSensing.usage
87
+ ? [f.depthSensing.usage]
88
+ : undefined;
89
+ const format = f.depthSensing.format
90
+ ? [f.depthSensing.format]
91
+ : undefined;
92
+ // Use DOM XRDepthStateInit typing where available
93
+ sessionInit.depthSensing = {
94
+ ...(usage ? { usagePreference: usage } : {}),
95
+ ...(format ? { dataFormatPreference: format } : {}),
96
+ };
97
+ }
98
+ return sessionInit;
99
+ }
100
+ function normalizeReferenceSpec(spec) {
101
+ var _a, _b, _c;
102
+ if (!spec || typeof spec === 'string') {
103
+ return {
104
+ type: (_a = spec) !== null && _a !== void 0 ? _a : ReferenceSpaceType.LocalFloor,
105
+ required: false,
106
+ fallbackOrder: [ReferenceSpaceType.Local, ReferenceSpaceType.Viewer],
107
+ };
108
+ }
109
+ return {
110
+ type: (_b = spec.type) !== null && _b !== void 0 ? _b : ReferenceSpaceType.LocalFloor,
111
+ required: !!spec.required,
112
+ fallbackOrder: (_c = spec.fallbackOrder) !== null && _c !== void 0 ? _c : [
113
+ ReferenceSpaceType.Local,
114
+ ReferenceSpaceType.Viewer,
115
+ ],
116
+ };
117
+ }
118
+ function mergeXROptions(base, overrides) {
119
+ var _a, _b, _c, _d, _e;
120
+ const b = base !== null && base !== void 0 ? base : {};
121
+ const o = overrides !== null && overrides !== void 0 ? overrides : {};
122
+ const mergedFeatures = { ...((_a = b.features) !== null && _a !== void 0 ? _a : {}), ...((_b = o.features) !== null && _b !== void 0 ? _b : {}) };
123
+ const merged = {
124
+ sessionMode: (_d = (_c = o.sessionMode) !== null && _c !== void 0 ? _c : b.sessionMode) !== null && _d !== void 0 ? _d : SessionMode.ImmersiveVR,
125
+ referenceSpace: (_e = o.referenceSpace) !== null && _e !== void 0 ? _e : b.referenceSpace,
126
+ features: Object.keys(mergedFeatures).length ? mergedFeatures : undefined,
127
+ };
128
+ return merged;
129
+ }
130
+ async function resolveReferenceSpaceType(session, preferred, fallbacks) {
131
+ const candidates = [];
132
+ for (const t of [preferred, ...fallbacks]) {
133
+ if (!candidates.includes(t)) {
134
+ candidates.push(t);
135
+ }
136
+ }
137
+ for (const type of candidates) {
138
+ try {
139
+ // Probe support; three.js will request again using the resolved type.
140
+ await session.requestReferenceSpace(type);
141
+ return type;
142
+ }
143
+ catch (_err) {
144
+ // continue
145
+ }
146
+ }
147
+ // If nothing worked, throw; caller will end the session.
148
+ throw new Error('No supported reference space available');
149
+ }
150
+ /**
151
+ * Explicitly request a WebXR session with the given options.
152
+ *
153
+ * @param world Target world.
154
+ * @param options Partial overrides merged with {@link World.xrDefaults}.
155
+ * @category Runtime
156
+ */
157
+ function launchXR(world, options) {
158
+ var _a, _b;
159
+ const merged = mergeXROptions(world.xrDefaults, options);
160
+ const { sessionMode = SessionMode.ImmersiveVR } = merged;
161
+ const refSpec = normalizeReferenceSpec(merged.referenceSpace);
162
+ const sessionOptions = buildSessionInit(merged);
163
+ const onSessionStart = async (session) => {
164
+ session.addEventListener('end', onSessionEnd);
165
+ try {
166
+ const resolvedType = await resolveReferenceSpaceType(session, refSpec.type, refSpec.required ? [] : refSpec.fallbackOrder);
167
+ world.renderer.xr.setReferenceSpaceType(resolvedType);
168
+ await world.renderer.xr.setSession(session);
169
+ world.session = session;
170
+ }
171
+ catch (err) {
172
+ console.error('[XR] Failed to acquire reference space:', err);
173
+ try {
174
+ await session.end();
175
+ }
176
+ catch (_a) { }
177
+ }
178
+ };
179
+ const onSessionEnd = () => {
180
+ var _a;
181
+ (_a = world.session) === null || _a === void 0 ? void 0 : _a.removeEventListener('end', onSessionEnd);
182
+ world.session = undefined;
183
+ };
184
+ if (!world.session) {
185
+ (_b = (_a = navigator.xr) === null || _a === void 0 ? void 0 : _a.requestSession) === null || _b === void 0 ? void 0 : _b.call(_a, sessionMode, sessionOptions).then(onSessionStart);
186
+ }
187
+ else {
188
+ console.error('XRSession already exists');
189
+ }
190
+ }
191
+
192
+ export { ReferenceSpaceType, SessionMode, buildSessionInit, launchXR, normalizeReferenceSpec, resolveReferenceSpaceType };
193
+ //# sourceMappingURL=xr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xr.js","sources":["../../src/init/xr.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ export * from './input-system.js';
8
+ export * from './state-tags.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,52 @@
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
+ declare const InputSystem_base: import("elics").SystemConstructor<{}, {
8
+ interactable: {
9
+ required: import("elics").Component<{}>[];
10
+ };
11
+ }, import("../ecs/world.js").World, import("../ecs/system.js").System<{}, {
12
+ interactable: {
13
+ required: import("elics").Component<{}>[];
14
+ };
15
+ }>>;
16
+ /**
17
+ * Samples XR poses (hands/controllers/head) and gamepads, curates the set of
18
+ * interactables for pointer raycasting, and attaches minimal event listeners.
19
+ *
20
+ * @remarks
21
+ * - Scheduled after player movement so pointers reflect updated transforms.
22
+ * - Maintains a filtered list of interactable Object3D roots when XR visibility is `Visible`.
23
+ * - Adds transient `Hovered` / `Pressed` tags so other systems can react declaratively.
24
+ *
25
+ * @category Input
26
+ * @example React to Hovered / Pressed
27
+ * ```ts
28
+ * export class HighlightSystem extends createSystem({
29
+ * items: { required: [Interactable] }
30
+ * }) {
31
+ * update() {
32
+ * this.queries.items.entities.forEach(e => {
33
+ * e.object3D.visible = !e.hasComponent(Pressed);
34
+ * })
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ export declare class InputSystem extends InputSystem_base {
40
+ private intersectables;
41
+ private shouldSetIntersectables;
42
+ private dirty;
43
+ private listeners;
44
+ private lastBVHUpdate;
45
+ init(): void;
46
+ update(delta: number, time: number): void;
47
+ private setupEventListeners;
48
+ private computeBoundsTreeForEntity;
49
+ private cleanupEventListeners;
50
+ }
51
+ export {};
52
+ //# sourceMappingURL=input-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-system.d.ts","sourceRoot":"","sources":["../../src/input/input-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;;;;;;;AAQH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,WAAY,SAAQ,gBAKhC;IACC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,SAAS,CAQb;IACJ,OAAO,CAAC,aAAa,CAAmC;IAExD,IAAI,IAAI,IAAI;IAuBZ,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAsBzC,OAAO,CAAC,mBAAmB;IAqD3B,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,qBAAqB;CAe9B"}
@@ -0,0 +1,176 @@
1
+ import { createSystem } from '../ecs/system.js';
2
+ import { VisibilityState } from '../ecs/world.js';
3
+ import 'elics';
4
+ import '../ecs/component-registry.js';
5
+ import { Transform } from '../transform/transform.js';
6
+ import '../runtime/three.js';
7
+ import { Interactable, Hovered, Pressed } from './state-tags.js';
8
+
9
+ /**
10
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
11
+ *
12
+ * This source code is licensed under the MIT license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ */
15
+ /**
16
+ * Samples XR poses (hands/controllers/head) and gamepads, curates the set of
17
+ * interactables for pointer raycasting, and attaches minimal event listeners.
18
+ *
19
+ * @remarks
20
+ * - Scheduled after player movement so pointers reflect updated transforms.
21
+ * - Maintains a filtered list of interactable Object3D roots when XR visibility is `Visible`.
22
+ * - Adds transient `Hovered` / `Pressed` tags so other systems can react declaratively.
23
+ *
24
+ * @category Input
25
+ * @example React to Hovered / Pressed
26
+ * ```ts
27
+ * export class HighlightSystem extends createSystem({
28
+ * items: { required: [Interactable] }
29
+ * }) {
30
+ * update() {
31
+ * this.queries.items.entities.forEach(e => {
32
+ * e.object3D.visible = !e.hasComponent(Pressed);
33
+ * })
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ class InputSystem extends createSystem({
39
+ interactable: { required: [Interactable, Transform] },
40
+ }, {}) {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.intersectables = [];
44
+ this.shouldSetIntersectables = false;
45
+ this.dirty = true;
46
+ this.listeners = new WeakMap();
47
+ this.lastBVHUpdate = new WeakMap();
48
+ }
49
+ init() {
50
+ // React to XR visibility for enabling scoped intersections
51
+ this.cleanupFuncs.push(this.visibilityState.subscribe((value) => {
52
+ const nextVisible = value === VisibilityState.Visible;
53
+ if (this.shouldSetIntersectables !== nextVisible) {
54
+ this.shouldSetIntersectables = nextVisible;
55
+ this.dirty = true;
56
+ }
57
+ }));
58
+ // Handle additions/removals of interactables
59
+ this.queries.interactable.subscribe('qualify', (entity) => {
60
+ this.setupEventListeners(entity);
61
+ this.dirty = true;
62
+ });
63
+ this.queries.interactable.subscribe('disqualify', (entity) => {
64
+ this.cleanupEventListeners(entity);
65
+ this.dirty = true;
66
+ });
67
+ }
68
+ update(delta, time) {
69
+ // Update input sampling first
70
+ this.input.update(this.xrManager, delta, time);
71
+ // Maintain the filtered list of interactables for pointer raycasting
72
+ if (this.dirty) {
73
+ this.dirty = false;
74
+ this.intersectables.length = 0;
75
+ if (this.shouldSetIntersectables) {
76
+ for (const entity of this.queries.interactable.entities) {
77
+ const obj = entity.object3D;
78
+ if (isDescendantOf(obj, this.scene)) {
79
+ this.intersectables.push(obj);
80
+ }
81
+ }
82
+ this.scene.interactableDescendants = this.intersectables;
83
+ }
84
+ else {
85
+ this.scene.interactableDescendants = undefined;
86
+ }
87
+ }
88
+ }
89
+ setupEventListeners(entity) {
90
+ const object3D = entity.object3D;
91
+ if (!object3D) {
92
+ return;
93
+ }
94
+ // Compute BVH for all meshes in the entity hierarchy for fast raycasting
95
+ this.computeBoundsTreeForEntity(object3D);
96
+ // Enable pointer events for raycasting
97
+ object3D.pointerEvents = 'auto';
98
+ // Throttled subtree BVH refresh helper
99
+ const maybeRefreshBVH = () => {
100
+ var _a;
101
+ const now = typeof performance !== 'undefined' && performance.now
102
+ ? performance.now()
103
+ : Date.now();
104
+ const last = (_a = this.lastBVHUpdate.get(object3D)) !== null && _a !== void 0 ? _a : 0;
105
+ if (now - last > 250) {
106
+ this.computeBoundsTreeForEntity(object3D);
107
+ this.lastBVHUpdate.set(object3D, now);
108
+ }
109
+ };
110
+ const enter = () => {
111
+ maybeRefreshBVH();
112
+ if (!entity.hasComponent(Hovered)) {
113
+ entity.addComponent(Hovered);
114
+ }
115
+ };
116
+ const leave = () => {
117
+ entity.removeComponent(Hovered);
118
+ };
119
+ const down = () => {
120
+ maybeRefreshBVH();
121
+ if (!entity.hasComponent(Pressed)) {
122
+ entity.addComponent(Pressed);
123
+ }
124
+ };
125
+ const up = () => {
126
+ entity.removeComponent(Pressed);
127
+ };
128
+ this.listeners.set(object3D, { enter, leave, down, up });
129
+ object3D.addEventListener('pointerenter', enter);
130
+ object3D.addEventListener('pointerleave', leave);
131
+ object3D.addEventListener('pointerdown', down);
132
+ object3D.addEventListener('pointerup', up);
133
+ }
134
+ computeBoundsTreeForEntity(object3D) {
135
+ object3D.traverse((child) => {
136
+ if (child.isMesh) {
137
+ const mesh = child;
138
+ if (mesh.geometry && !mesh.geometry.boundsTree) {
139
+ try {
140
+ mesh.geometry.computeBoundsTree();
141
+ }
142
+ catch (error) {
143
+ console.warn(`[InputSystem] Failed to compute BVH for ${mesh.name || 'unnamed'}:`, error);
144
+ }
145
+ }
146
+ }
147
+ });
148
+ }
149
+ cleanupEventListeners(entity) {
150
+ const object3D = entity.object3D;
151
+ if (!object3D) {
152
+ return;
153
+ }
154
+ const fns = this.listeners.get(object3D);
155
+ if (fns) {
156
+ object3D.removeEventListener('pointerenter', fns.enter);
157
+ object3D.removeEventListener('pointerleave', fns.leave);
158
+ object3D.removeEventListener('pointerdown', fns.down);
159
+ object3D.removeEventListener('pointerup', fns.up);
160
+ this.listeners.delete(object3D);
161
+ }
162
+ entity.removeComponent(Hovered).removeComponent(Pressed);
163
+ }
164
+ }
165
+ function isDescendantOf(object, parent) {
166
+ while (object) {
167
+ if (object === parent) {
168
+ return true;
169
+ }
170
+ object = object.parent;
171
+ }
172
+ return false;
173
+ }
174
+
175
+ export { InputSystem };
176
+ //# sourceMappingURL=input-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-system.js","sources":["../../src/input/input-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ /**
8
+ * Marks an entity as eligible for XR/UI pointer interaction.
9
+ *
10
+ * @remarks
11
+ * - The {@link InputSystem} discovers all entities with `Interactable` and, when
12
+ * XR visibility is Visible, registers their Object3D roots as raycast targets
13
+ * (computing BVHs for meshes to accelerate intersection tests).
14
+ * - When a pointer enters/leaves or presses/releases on the entity, the system
15
+ * adds/removes the transient tags {@link Hovered} and {@link Pressed} so other
16
+ * systems can react declaratively without manual event wiring.
17
+ * - Add this tag to the root Object3D of your UI/interactive object. Children
18
+ * are implicitly covered because the InputSystem registers the whole subtree.
19
+ *
20
+ * @category Input
21
+ * @example Highlight on hover
22
+ * ```ts
23
+ * export class HighlightSystem extends createSystem({ items: { required: [Interactable] } }) {
24
+ * update() {
25
+ * this.queries.items.entities.forEach(e => {
26
+ * e.object3D.visible = !e.hasComponent(Pressed);
27
+ * e.object3D.material.emissiveIntensity = e.hasComponent(Hovered) ? 1.0 : 0.0;
28
+ * });
29
+ * }
30
+ * }
31
+ * ```
32
+ */
33
+ export declare const Interactable: import("elics").Component<{}>;
34
+ /**
35
+ * A transient tag set while a pointer ray is intersecting an `Interactable`.
36
+ *
37
+ * @remarks
38
+ * - Managed by {@link InputSystem}; do not add/remove this component manually in normal usage.
39
+ * - Use as a declarative condition for hover effects, tooltips, or affordances.
40
+ *
41
+ * @category Input
42
+ * @hideineditor
43
+ */
44
+ export declare const Hovered: import("elics").Component<{}>;
45
+ /**
46
+ * A transient tag set while a pointer is actively pressing an `Interactable`.
47
+ *
48
+ * @remarks
49
+ * - Managed by {@link InputSystem}; do not add/remove this component manually in normal usage.
50
+ * - Often used to gate activation logic or pressed-state visuals.
51
+ *
52
+ * @category Input
53
+ * @hideineditor
54
+ */
55
+ export declare const Pressed: import("elics").Component<{}>;
56
+ //# sourceMappingURL=state-tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-tags.d.ts","sourceRoot":"","sources":["../../src/input/state-tags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,YAAY,+BAIxB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,+BAInB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,+BAInB,CAAC"}
@@ -0,0 +1,63 @@
1
+ import '@preact/signals-core';
2
+ import '../ecs/world.js';
3
+ import { createComponent } from 'elics';
4
+ import '../ecs/component-registry.js';
5
+
6
+ /**
7
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+ /**
13
+ * Marks an entity as eligible for XR/UI pointer interaction.
14
+ *
15
+ * @remarks
16
+ * - The {@link InputSystem} discovers all entities with `Interactable` and, when
17
+ * XR visibility is Visible, registers their Object3D roots as raycast targets
18
+ * (computing BVHs for meshes to accelerate intersection tests).
19
+ * - When a pointer enters/leaves or presses/releases on the entity, the system
20
+ * adds/removes the transient tags {@link Hovered} and {@link Pressed} so other
21
+ * systems can react declaratively without manual event wiring.
22
+ * - Add this tag to the root Object3D of your UI/interactive object. Children
23
+ * are implicitly covered because the InputSystem registers the whole subtree.
24
+ *
25
+ * @category Input
26
+ * @example Highlight on hover
27
+ * ```ts
28
+ * export class HighlightSystem extends createSystem({ items: { required: [Interactable] } }) {
29
+ * update() {
30
+ * this.queries.items.entities.forEach(e => {
31
+ * e.object3D.visible = !e.hasComponent(Pressed);
32
+ * e.object3D.material.emissiveIntensity = e.hasComponent(Hovered) ? 1.0 : 0.0;
33
+ * });
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ const Interactable = createComponent('Interactable', {}, 'Marks an entity as eligible for XR pointer interaction (ray/proximity).');
39
+ /**
40
+ * A transient tag set while a pointer ray is intersecting an `Interactable`.
41
+ *
42
+ * @remarks
43
+ * - Managed by {@link InputSystem}; do not add/remove this component manually in normal usage.
44
+ * - Use as a declarative condition for hover effects, tooltips, or affordances.
45
+ *
46
+ * @category Input
47
+ * @hideineditor
48
+ */
49
+ const Hovered = createComponent('Hovered', {}, 'A tag added by InputSystem while a pointer is hovering over the entity.');
50
+ /**
51
+ * A transient tag set while a pointer is actively pressing an `Interactable`.
52
+ *
53
+ * @remarks
54
+ * - Managed by {@link InputSystem}; do not add/remove this component manually in normal usage.
55
+ * - Often used to gate activation logic or pressed-state visuals.
56
+ *
57
+ * @category Input
58
+ * @hideineditor
59
+ */
60
+ const Pressed = createComponent('Pressed', {}, 'A tag added by InputSystem while the entity is actively pressed.');
61
+
62
+ export { Hovered, Interactable, Pressed };
63
+ //# sourceMappingURL=state-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-tags.js","sources":["../../src/input/state-tags.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI,MAAM,YAAY,GAAG,eAAe,CACzC,cAAc,EACd,EAAE,EACF,yEAAyE;AAG3E;;;;;;;;;AASG;AACI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT,EAAE,EACF,yEAAyE;AAG3E;;;;;;;;;AASG;AACI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT,EAAE,EACF,kEAAkE;;;;"}
@@ -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
+ export * from './level-system.js';
8
+ export * from './level-tag.js';
9
+ export * from './level-glxf-importer.js';
10
+ export * from './level-entity-creator.js';
11
+ export * from './level-root.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/level/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,27 @@
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 { Entity } from '../ecs/index.js';
8
+ import type { World } from '../ecs/index.js';
9
+ import { Object3D } from '../runtime/index.js';
10
+ /**
11
+ * Creates ECS entities from Three.js Object3D graphs and applies IWSDK components
12
+ * found in GLXF `meta_spatial.components` extras.
13
+ *
14
+ * @remarks
15
+ * - Only nodes present in the GLXF `nodes` array are converted to entities.
16
+ * - Component ids are matched against the registry by `com.iwsdk.components.<id>`.
17
+ * - Panel UI extras are mapped to {@link PanelUI} with JSON config paths.
18
+ *
19
+ * @category Scene
20
+ */
21
+ export declare class EntityCreator {
22
+ static createEntitiesFromObject3D(object: Object3D, nodes: Object3D[], parentEntity: Entity, world: World): void;
23
+ private static applyComponents;
24
+ private static mapGLXFDataToProps;
25
+ private static handleMetaSpatialPanelComponents;
26
+ }
27
+ //# sourceMappingURL=level-entity-creator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-entity-creator.d.ts","sourceRoot":"","sources":["../../src/level/level-entity-creator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAS,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB,MAAM,CAAC,0BAA0B,CAC/B,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,QAAQ,EAAE,EACjB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,KAAK,GACX,IAAI;IAsCP,OAAO,CAAC,MAAM,CAAC,eAAe;IAoC9B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,OAAO,CAAC,MAAM,CAAC,gCAAgC;CAuBhD"}