@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,132 @@
1
+ import { HandleStore } from '@pmndrs/handle';
2
+ import '@preact/signals-core';
3
+ import '../ecs/world.js';
4
+ import { createComponent, Types } from 'elics';
5
+ import '../ecs/component-registry.js';
6
+ import '../runtime/three.js';
7
+ import { Vector3 } from 'three';
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
+ const Handle = createComponent('Handle', {
16
+ instance: { type: Types.Object, default: undefined },
17
+ }, 'Internal component storing an active interaction handle instance');
18
+ /** MovementMode for {@link DistanceGrabbable}. @category Grab */
19
+ const MovementMode = {
20
+ /** Object smoothly moves with the ray cast end point of the grabbing controller. */
21
+ MoveFromTarget: 'MoveFromTarget',
22
+ /** Object smoothly moves toward the input source that's grabbing. */
23
+ MoveTowardsTarget: 'MoveTowardsTarget',
24
+ /** Object moves relative to controller delta movement while maintaining distance. */
25
+ MoveAtSource: 'MoveAtSource',
26
+ /** Object rotates in place without translation or scaling. */
27
+ RotateAtSource: 'RotateAtSource',
28
+ };
29
+ class DistanceGrabHandle extends HandleStore {
30
+ constructor(target_, getOptions = () => ({}), movementMode, returnToOrigin, moveSpeed = 0.1) {
31
+ super(target_, getOptions);
32
+ this.target_ = target_;
33
+ this.getOptions = getOptions;
34
+ this.movementMode = movementMode;
35
+ this.returnToOrigin = returnToOrigin;
36
+ this.moveSpeed = moveSpeed;
37
+ }
38
+ update(time) {
39
+ var _a;
40
+ if (this.movementMode === MovementMode.RotateAtSource ||
41
+ this.movementMode === MovementMode.MoveFromTarget) {
42
+ super.update(time);
43
+ return;
44
+ }
45
+ const target = this.getTarget();
46
+ if (target == null ||
47
+ this.inputState.size === 0 ||
48
+ (this.latestMoveEvent == null &&
49
+ ((_a = this.getOptions().alwaysUpdate) !== null && _a !== void 0 ? _a : false) === false)) {
50
+ if (this.previousPointerOrigin != undefined) {
51
+ this.previousPointerOrigin = undefined;
52
+ }
53
+ return;
54
+ }
55
+ if (target.parent) {
56
+ target.removeFromParent();
57
+ target.matrixWorld.decompose(target.position, target.quaternion, target.scale);
58
+ }
59
+ const pointerAmount = this.inputState.size;
60
+ const position = target.position;
61
+ const quaternion = target.quaternion;
62
+ const rotation = target.rotation;
63
+ const scale = target.scale;
64
+ switch (this.movementMode) {
65
+ case MovementMode.MoveAtSource: {
66
+ const [p1] = this.inputState.values();
67
+ const current = p1.pointerWorldOrigin;
68
+ if (this.previousPointerOrigin != undefined) {
69
+ const delta = DistanceGrabHandle._tmp
70
+ .copy(current)
71
+ .sub(this.previousPointerOrigin);
72
+ position.add(delta);
73
+ }
74
+ else {
75
+ this.previousPointerOrigin = new Vector3().copy(current);
76
+ }
77
+ // Update stored previous for next frame
78
+ this.previousPointerOrigin.copy(current);
79
+ break;
80
+ }
81
+ case MovementMode.MoveTowardsTarget: {
82
+ const [p1] = this.inputState.values();
83
+ const pointerOrigin = p1.pointerWorldOrigin;
84
+ const distance = pointerOrigin.distanceTo(position);
85
+ if (distance > this.moveSpeed) {
86
+ const step = DistanceGrabHandle._tmp
87
+ .copy(pointerOrigin)
88
+ .sub(position)
89
+ .normalize()
90
+ .multiplyScalar(this.moveSpeed);
91
+ position.add(step);
92
+ }
93
+ else {
94
+ position.set(pointerOrigin.x, pointerOrigin.y, pointerOrigin.z);
95
+ quaternion.set(p1.pointerWorldQuaternion.x, p1.pointerWorldQuaternion.y, p1.pointerWorldQuaternion.z, p1.pointerWorldQuaternion.w);
96
+ }
97
+ break;
98
+ }
99
+ }
100
+ // Always apply during drag; if returnToOrigin is true,
101
+ // the override in apply() will snap back on release.
102
+ this.outputState.update(this.latestMoveEvent, {
103
+ pointerAmount,
104
+ position,
105
+ quaternion,
106
+ rotation,
107
+ scale,
108
+ time,
109
+ });
110
+ this.outputState.memo = this.apply(target);
111
+ this.latestMoveEvent = undefined;
112
+ }
113
+ apply(target) {
114
+ var _a;
115
+ // On release (last frame), if configured to return to origin,
116
+ // restore the initially saved transform instead of leaving the final drag state.
117
+ if (this.returnToOrigin && ((_a = this.outputState) === null || _a === void 0 ? void 0 : _a.last)) {
118
+ target.position.copy(this.initialTargetPosition);
119
+ // Keep rotation order consistent when restoring
120
+ target.rotation.order = this.initialTargetRotation.order;
121
+ target.quaternion.copy(this.initialTargetQuaternion);
122
+ target.scale.copy(this.initialTargetScale);
123
+ // Do not call super.apply to avoid re-applying the drag transform.
124
+ return undefined;
125
+ }
126
+ return super.apply(target);
127
+ }
128
+ }
129
+ DistanceGrabHandle._tmp = new Vector3();
130
+
131
+ export { DistanceGrabHandle, Handle, MovementMode };
132
+ //# sourceMappingURL=handles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handles.js","sources":["../../src/grab/handles.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
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 { Interactable, Hovered, Pressed } from '../input/index.js';
8
+ export * from './grab-system.js';
9
+ export * from './one-hand-grabbable.js';
10
+ export * from './two-hands-grabbable.js';
11
+ export * from './distance-grabbable.js';
12
+ export { MovementMode } from './handles.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/grab/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnE,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { RayIntersector, SphereIntersector } from '@pmndrs/pointer-events';
2
+ import { patchedIntersectRayPointerCapture, patchedIntersectSpherePointerCapture, patchedExecuteIntersection } from './pointer-events-patch.js';
3
+ import '../input/input-system.js';
4
+ export { Hovered, Interactable, Pressed } from '../input/state-tags.js';
5
+ export { GrabSystem } from './grab-system.js';
6
+ export { OneHandGrabbable } from './one-hand-grabbable.js';
7
+ export { TwoHandsGrabbable } from './two-hands-grabbable.js';
8
+ export { DistanceGrabbable } from './distance-grabbable.js';
9
+ export { MovementMode } from './handles.js';
10
+
11
+ /**
12
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
13
+ *
14
+ * This source code is licensed under the MIT license found in the
15
+ * LICENSE file in the root directory of this source tree.
16
+ */
17
+ // Apply monkeypatch once
18
+ RayIntersector.prototype.intersectPointerCapture =
19
+ patchedIntersectRayPointerCapture;
20
+ SphereIntersector.prototype.intersectPointerCapture =
21
+ patchedIntersectSpherePointerCapture;
22
+ SphereIntersector.prototype.executeIntersection = patchedExecuteIntersection;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/grab/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAAA;;;;;AAKG;AAiBH;AACA,cAAc,CAAC,SAAS,CAAC,uBAAuB;AAC9C,IAAA,iCAAiC;AACnC,iBAAiB,CAAC,SAAS,CAAC,uBAAuB;AACjD,IAAA,oCAAoC;AACtC,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,GAAG,0BAA0B"}
@@ -0,0 +1,80 @@
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
+ /**
9
+ * Component for enabling single‑hand object grabbing and manipulation.
10
+ *
11
+ * @remarks
12
+ * - Allows users to grab and manipulate objects using a single VR controller or hand input.
13
+ * - Supports independent control of rotation and translation (movement) axes.
14
+ * - Rotation and translation can be constrained using min/max limits per axis.
15
+ * - Works with the {@link GrabSystem} to automatically create interaction handles.
16
+ * - Requires the entity to have an `object3D` for the interaction to work.
17
+ *
18
+ * @example Basic single‑hand grabbable object
19
+ * ```ts
20
+ * entity.addComponent(OneHandGrabbable, {})
21
+ * ```
22
+ *
23
+ * @example Constrained manipulation (rotation‑only on Y axis)
24
+ * ```ts
25
+ * entity.addComponent(OneHandGrabbable, {
26
+ * rotate: true,
27
+ * rotateMin: [0, -Math.PI, 0],
28
+ * rotateMax: [0, Math.PI, 0],
29
+ * translate: false
30
+ * })
31
+ * ```
32
+ *
33
+ * @example Limited movement range
34
+ * ```ts
35
+ * entity.addComponent(OneHandGrabbable, {
36
+ * rotate: true,
37
+ * translate: true,
38
+ * translateMin: [-2, 0, -2],
39
+ * translateMax: [2, 3, 2]
40
+ * })
41
+ * ```
42
+ *
43
+ * @category Grab
44
+ * @see {@link GrabSystem}
45
+ * @see {@link TwoHandsGrabbable}
46
+ * @see {@link DistanceGrabbable}
47
+ */
48
+ export declare const OneHandGrabbable: import("elics").Component<{
49
+ /** A boolean value to set whether rotating the object is allowed. */
50
+ rotate: {
51
+ type: Types.Boolean;
52
+ default: true;
53
+ };
54
+ /** An optional vector to define the maximum angle of the allowed rotation in [x, y, z] axes. */
55
+ rotateMax: {
56
+ type: Types.Vec3;
57
+ default: [number, number, number];
58
+ };
59
+ /** An optional vector to define the minimum angle of the allowed rotation in [x, y, z] axes. */
60
+ rotateMin: {
61
+ type: Types.Vec3;
62
+ default: [number, number, number];
63
+ };
64
+ /** A boolean value to set whether moving the object's position is allowed. */
65
+ translate: {
66
+ type: Types.Boolean;
67
+ default: true;
68
+ };
69
+ /** An optional vector to define the maximum allowed position in [x, y, z] axes. */
70
+ translateMax: {
71
+ type: Types.Vec3;
72
+ default: [number, number, number];
73
+ };
74
+ /** An optional vector to define the minimum allowed position in [x, y, z] axes. */
75
+ translateMin: {
76
+ type: Types.Vec3;
77
+ default: [number, number, number];
78
+ };
79
+ }>;
80
+ //# sourceMappingURL=one-hand-grabbable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"one-hand-grabbable.d.ts","sourceRoot":"","sources":["../../src/grab/one-hand-grabbable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,eAAO,MAAM,gBAAgB;IAGzB,qEAAqE;;;;;IAErE,gGAAgG;;;;;IAKhG,gGAAgG;;;;;IAKhG,8EAA8E;;;;;IAE9E,mFAAmF;;;;;IAKnF,mFAAmF;;;;;EAOtF,CAAC"}
@@ -0,0 +1,80 @@
1
+ import '@preact/signals-core';
2
+ import '../ecs/world.js';
3
+ import { createComponent, Types } 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
+ * Component for enabling single‑hand object grabbing and manipulation.
14
+ *
15
+ * @remarks
16
+ * - Allows users to grab and manipulate objects using a single VR controller or hand input.
17
+ * - Supports independent control of rotation and translation (movement) axes.
18
+ * - Rotation and translation can be constrained using min/max limits per axis.
19
+ * - Works with the {@link GrabSystem} to automatically create interaction handles.
20
+ * - Requires the entity to have an `object3D` for the interaction to work.
21
+ *
22
+ * @example Basic single‑hand grabbable object
23
+ * ```ts
24
+ * entity.addComponent(OneHandGrabbable, {})
25
+ * ```
26
+ *
27
+ * @example Constrained manipulation (rotation‑only on Y axis)
28
+ * ```ts
29
+ * entity.addComponent(OneHandGrabbable, {
30
+ * rotate: true,
31
+ * rotateMin: [0, -Math.PI, 0],
32
+ * rotateMax: [0, Math.PI, 0],
33
+ * translate: false
34
+ * })
35
+ * ```
36
+ *
37
+ * @example Limited movement range
38
+ * ```ts
39
+ * entity.addComponent(OneHandGrabbable, {
40
+ * rotate: true,
41
+ * translate: true,
42
+ * translateMin: [-2, 0, -2],
43
+ * translateMax: [2, 3, 2]
44
+ * })
45
+ * ```
46
+ *
47
+ * @category Grab
48
+ * @see {@link GrabSystem}
49
+ * @see {@link TwoHandsGrabbable}
50
+ * @see {@link DistanceGrabbable}
51
+ */
52
+ const OneHandGrabbable = createComponent('OneHandGrabbable', {
53
+ /** A boolean value to set whether rotating the object is allowed. */
54
+ rotate: { type: Types.Boolean, default: true },
55
+ /** An optional vector to define the maximum angle of the allowed rotation in [x, y, z] axes. */
56
+ rotateMax: {
57
+ type: Types.Vec3,
58
+ default: [Infinity, Infinity, Infinity],
59
+ },
60
+ /** An optional vector to define the minimum angle of the allowed rotation in [x, y, z] axes. */
61
+ rotateMin: {
62
+ type: Types.Vec3,
63
+ default: [-Infinity, -Infinity, -Infinity],
64
+ },
65
+ /** A boolean value to set whether moving the object's position is allowed. */
66
+ translate: { type: Types.Boolean, default: true },
67
+ /** An optional vector to define the maximum allowed position in [x, y, z] axes. */
68
+ translateMax: {
69
+ type: Types.Vec3,
70
+ default: [Infinity, Infinity, Infinity],
71
+ },
72
+ /** An optional vector to define the minimum allowed position in [x, y, z] axes. */
73
+ translateMin: {
74
+ type: Types.Vec3,
75
+ default: [-Infinity, -Infinity, -Infinity],
76
+ },
77
+ }, 'Component for single-hand object grabbing and manipulation');
78
+
79
+ export { OneHandGrabbable };
80
+ //# sourceMappingURL=one-hand-grabbable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"one-hand-grabbable.js","sources":["../../src/grab/one-hand-grabbable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AAEI,MAAM,gBAAgB,GAAG,eAAe,CAC7C,kBAAkB,EAClB;;IAEE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE9C,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;IAED,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAEjD,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;CACF,EACD,4DAA4D;;;;"}
@@ -0,0 +1,16 @@
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 { Object3D } from '../runtime/index.js';
8
+ type PointerCapture = {
9
+ intersection: any;
10
+ object: Object3D;
11
+ };
12
+ export declare function patchedIntersectRayPointerCapture(this: any, { intersection, object }: PointerCapture): any;
13
+ export declare function patchedIntersectSpherePointerCapture(this: any, { intersection, object }: PointerCapture): any;
14
+ export declare function patchedExecuteIntersection(this: any, object: Object3D): void;
15
+ export {};
16
+ //# sourceMappingURL=pointer-events-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointer-events-patch.d.ts","sourceRoot":"","sources":["../../src/grab/pointer-events-patch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAIL,QAAQ,EAKT,MAAM,qBAAqB,CAAC;AAE7B,KAAK,cAAc,GAAG;IAAE,YAAY,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC;AAe9D,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,GAAG,EACT,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,cAAc,OAiDzC;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,GAAG,EACT,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,cAAc,OA2DzC;AA8ID,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,QASrE"}
@@ -0,0 +1,223 @@
1
+ import '../runtime/three.js';
2
+ import { Plane, Sphere, Vector3, Quaternion, Matrix4, InstancedMesh, Mesh } 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
+ // Monkeypatch @pmndrs/pointer-events RayIntersector to skip expensive UV recomputation
11
+ // during pointer capture. This keeps grabbing performant on dense meshes.
12
+ const planeHelper = new Plane();
13
+ const helperSphere = new Sphere();
14
+ const vecHelper = new Vector3();
15
+ const oldInputDevicePointOffset = new Vector3();
16
+ const inputDeviceQuaternionOffset = new Quaternion();
17
+ const vectorHelper = new Vector3();
18
+ const boxSizeHelper = new Vector3();
19
+ const boxCenterHelper = new Vector3();
20
+ const vec0_0001 = new Vector3(0.0001, 0.0001, 0.0001);
21
+ const invertedMatrixHelper = new Matrix4();
22
+ function patchedIntersectRayPointerCapture({ intersection, object }) {
23
+ var _a, _b, _c;
24
+ const details = intersection.details;
25
+ if (details.type !== 'ray') {
26
+ throw new Error(`unable to process a pointer capture of type "${details.type}" with a ray intersector`);
27
+ }
28
+ if (!this.prepareTransformation()) {
29
+ return intersection;
30
+ }
31
+ object.updateWorldMatrix(true, false);
32
+ // Recompute the plane in world space using the stored localPoint and normal/face
33
+ const normal = (_a = intersection.normal) !== null && _a !== void 0 ? _a : (_b = intersection.face) === null || _b === void 0 ? void 0 : _b.normal;
34
+ if (normal != null && intersection.localPoint != null) {
35
+ planeHelper.setFromNormalAndCoplanarPoint(normal, intersection.localPoint);
36
+ planeHelper.applyMatrix4(object.matrixWorld);
37
+ }
38
+ else {
39
+ // Fallback: face-on plane at previous world point
40
+ planeHelper.setFromNormalAndCoplanarPoint(new Vector3(0, 0, 1), intersection.point);
41
+ }
42
+ const { ray } = this.raycaster;
43
+ const pointOnFace = (_c = ray.intersectPlane(planeHelper, new Vector3())) !== null && _c !== void 0 ? _c : intersection.point;
44
+ // Preserve distance along the ray from previous intersection
45
+ const distanceAlongRay = intersection.pointerPosition.distanceTo(intersection.point);
46
+ const point = vecHelper
47
+ .copy(ray.direction)
48
+ .multiplyScalar(distanceAlongRay)
49
+ .add(ray.origin);
50
+ // NOTE: We intentionally skip UV recomputation here for performance.
51
+ return {
52
+ ...intersection,
53
+ object,
54
+ pointOnFace,
55
+ point,
56
+ pointerPosition: ray.origin.clone(),
57
+ pointerQuaternion: this.raycasterQuaternion.clone(),
58
+ };
59
+ }
60
+ function patchedIntersectSpherePointerCapture({ intersection, object }) {
61
+ var _a, _b;
62
+ const details = intersection.details;
63
+ if (details.type !== 'sphere') {
64
+ throw new Error(`unable to process a pointer capture of type "${details.type}" with a ray intersector`);
65
+ }
66
+ if (!this.prepareTransformation()) {
67
+ return intersection;
68
+ }
69
+ //compute old inputDevicePosition-point offset
70
+ oldInputDevicePointOffset
71
+ .copy(intersection.point)
72
+ .sub(intersection.pointerPosition);
73
+ //compute oldInputDeviceQuaternion-newInputDeviceQuaternion offset
74
+ inputDeviceQuaternionOffset
75
+ .copy(intersection.pointerQuaternion)
76
+ .invert()
77
+ .multiply(this.fromQuaternion);
78
+ //apply quaternion offset to old inputDevicePosition-point offset and add to new inputDevicePosition
79
+ const point = oldInputDevicePointOffset
80
+ .clone()
81
+ .applyQuaternion(inputDeviceQuaternionOffset)
82
+ .add(this.fromPosition);
83
+ object.updateWorldMatrix(true, false);
84
+ // Recompute the plane in world space using the stored localPoint and normal/face
85
+ const normal = (_a = intersection.normal) !== null && _a !== void 0 ? _a : (_b = intersection.face) === null || _b === void 0 ? void 0 : _b.normal;
86
+ if (normal != null && intersection.localPoint != null) {
87
+ planeHelper.setFromNormalAndCoplanarPoint(normal, intersection.localPoint);
88
+ planeHelper.applyMatrix4(object.matrixWorld);
89
+ }
90
+ else {
91
+ // Fallback: face-on plane at previous world point
92
+ planeHelper.setFromNormalAndCoplanarPoint(new Vector3(0, 0, 1), intersection.point);
93
+ }
94
+ const pointOnFace = planeHelper.projectPoint(this.fromPosition, new Vector3());
95
+ // NOTE: We intentionally skip UV recomputation here for performance.
96
+ return {
97
+ details: {
98
+ type: 'sphere',
99
+ },
100
+ distance: point.distanceTo(pointOnFace),
101
+ pointerPosition: this.fromPosition.clone(),
102
+ pointerQuaternion: this.fromQuaternion.clone(),
103
+ object,
104
+ point,
105
+ pointOnFace,
106
+ face: intersection.face,
107
+ localPoint: intersection.localPoint,
108
+ };
109
+ }
110
+ function maximizeAxisVector(vec) {
111
+ const absX = Math.abs(vec.x);
112
+ const absY = Math.abs(vec.y);
113
+ const absZ = Math.abs(vec.z);
114
+ if (absX >= absY && absX >= absZ) {
115
+ //x biggest
116
+ vec.set(vec.x < 0 ? -1 : 1, 0, 0);
117
+ return;
118
+ }
119
+ if (absY >= absX && absY >= absZ) {
120
+ //y biggest
121
+ vec.set(0, vec.y < 0 ? -1 : 1, 0);
122
+ return;
123
+ }
124
+ //z biggest
125
+ vec.set(0, 0, vec.z < 0 ? -1 : 1);
126
+ }
127
+ function patchedIsSphereIntersectingMesh(pointerSphere, { geometry }, meshMatrixWorld) {
128
+ var _a;
129
+ if (geometry.boundingSphere == null) {
130
+ geometry.computeBoundingSphere();
131
+ }
132
+ helperSphere
133
+ .copy((_a = geometry.boundingSphere) !== null && _a !== void 0 ? _a : new Sphere())
134
+ .applyMatrix4(meshMatrixWorld);
135
+ return (helperSphere.center.distanceToSquared(pointerSphere.center) <
136
+ (pointerSphere.radius + helperSphere.radius) ** 2);
137
+ }
138
+ const matrixHelper = new Matrix4();
139
+ function patchedIntersectSphereWithObject(pointerSphere, object, target) {
140
+ object.updateWorldMatrix(true, false);
141
+ if (object.spherecast != null) {
142
+ object.spherecast(pointerSphere, target);
143
+ return;
144
+ }
145
+ if (object instanceof InstancedMesh) {
146
+ if (object.geometry.boundingSphere == null) {
147
+ object.geometry.computeBoundingSphere();
148
+ }
149
+ if (object.geometry.boundingBox == null) {
150
+ object.geometry.computeBoundingBox();
151
+ }
152
+ for (let i = 0; i < object.count; i++) {
153
+ object.getMatrixAt(i, matrixHelper);
154
+ matrixHelper.premultiply(object.matrixWorld);
155
+ if (!patchedIsSphereIntersectingMesh(pointerSphere, object, matrixHelper)) {
156
+ continue;
157
+ }
158
+ const intersection = patchedIntersectSphereMesh(pointerSphere, object, matrixHelper, i);
159
+ if (intersection == null) {
160
+ continue;
161
+ }
162
+ target.push(intersection);
163
+ }
164
+ }
165
+ if (!(object instanceof Mesh)) {
166
+ return;
167
+ }
168
+ if (!patchedIsSphereIntersectingMesh(pointerSphere, object, object.matrixWorld)) {
169
+ return;
170
+ }
171
+ invertedMatrixHelper.copy(object.matrixWorld).invert();
172
+ const intersection = patchedIntersectSphereMesh(pointerSphere, object, object.matrixWorld);
173
+ if (intersection == null) {
174
+ return;
175
+ }
176
+ target.push(intersection);
177
+ }
178
+ function patchedIntersectSphereMesh(pointerSphere, mesh, meshMatrixWorld, instanceId) {
179
+ var _a, _b, _c;
180
+ invertedMatrixHelper.copy(meshMatrixWorld).invert();
181
+ helperSphere.copy(pointerSphere).applyMatrix4(invertedMatrixHelper);
182
+ const { geometry } = mesh;
183
+ if (geometry.boundingBox == null) {
184
+ geometry.computeBoundingBox();
185
+ }
186
+ (_a = geometry.boundingBox) === null || _a === void 0 ? void 0 : _a.getSize(boxSizeHelper);
187
+ (_b = geometry.boundingBox) === null || _b === void 0 ? void 0 : _b.getCenter(boxCenterHelper);
188
+ (_c = geometry.boundingBox) === null || _c === void 0 ? void 0 : _c.clampPoint(helperSphere.center, vectorHelper);
189
+ vectorHelper.applyMatrix4(meshMatrixWorld); //world coordinates
190
+ const distanceToSphereCenterSquared = vectorHelper.distanceToSquared(pointerSphere.center);
191
+ if (distanceToSphereCenterSquared >
192
+ pointerSphere.radius * pointerSphere.radius) {
193
+ return undefined;
194
+ }
195
+ boxSizeHelper.max(vec0_0001);
196
+ const normal = helperSphere.center.clone().sub(boxCenterHelper);
197
+ normal.divide(boxSizeHelper);
198
+ maximizeAxisVector(normal);
199
+ const point = vectorHelper.clone();
200
+ return {
201
+ distance: Math.sqrt(distanceToSphereCenterSquared),
202
+ face: {
203
+ a: 0,
204
+ b: 0,
205
+ c: 0,
206
+ materialIndex: 0,
207
+ normal,
208
+ },
209
+ normal,
210
+ point,
211
+ instanceId,
212
+ object: mesh,
213
+ };
214
+ }
215
+ function patchedExecuteIntersection(object) {
216
+ if (!this.isReady()) {
217
+ return;
218
+ }
219
+ patchedIntersectSphereWithObject(this.collisionSphere, object, this.intersects);
220
+ }
221
+
222
+ export { patchedExecuteIntersection, patchedIntersectRayPointerCapture, patchedIntersectSpherePointerCapture };
223
+ //# sourceMappingURL=pointer-events-patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pointer-events-patch.js","sources":["../../src/grab/pointer-events-patch.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}