@iwsdk/core 0.2.1 → 0.3.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 (228) hide show
  1. package/README.md +94 -0
  2. package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
  3. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
  4. package/dist/asset/loaders/hdr-texture-loader.js +4 -4
  5. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  6. package/dist/audio/audio-system.d.ts +6 -2
  7. package/dist/audio/audio-system.d.ts.map +1 -1
  8. package/dist/audio/audio-system.js +1 -0
  9. package/dist/audio/audio-system.js.map +1 -1
  10. package/dist/audio/audio.d.ts +3 -1
  11. package/dist/audio/audio.d.ts.map +1 -1
  12. package/dist/audio/audio.js +8 -2
  13. package/dist/audio/audio.js.map +1 -1
  14. package/dist/camera/camera-source.js +1 -0
  15. package/dist/camera/camera-source.js.map +1 -1
  16. package/dist/camera/camera-system.d.ts.map +1 -1
  17. package/dist/camera/camera-system.js +1 -0
  18. package/dist/camera/camera-system.js.map +1 -1
  19. package/dist/camera/camera-utils.d.ts.map +1 -1
  20. package/dist/camera/camera-utils.js.map +1 -1
  21. package/dist/depth/depth-occludable.d.ts +48 -0
  22. package/dist/depth/depth-occludable.d.ts.map +1 -0
  23. package/dist/depth/depth-occludable.js +48 -0
  24. package/dist/depth/depth-occludable.js.map +1 -0
  25. package/dist/depth/depth-sensing-system.d.ts +164 -0
  26. package/dist/depth/depth-sensing-system.d.ts.map +1 -0
  27. package/dist/depth/depth-sensing-system.js +453 -0
  28. package/dist/depth/depth-sensing-system.js.map +1 -0
  29. package/dist/depth/depth-textures.d.ts +53 -0
  30. package/dist/depth/depth-textures.d.ts.map +1 -0
  31. package/dist/depth/depth-textures.js +114 -0
  32. package/dist/depth/depth-textures.js.map +1 -0
  33. package/dist/depth/index.d.ts +10 -0
  34. package/dist/depth/index.d.ts.map +1 -0
  35. package/dist/depth/occlusion/preprocessing-pass.d.ts +52 -0
  36. package/dist/depth/occlusion/preprocessing-pass.d.ts.map +1 -0
  37. package/dist/depth/occlusion/preprocessing-pass.js +105 -0
  38. package/dist/depth/occlusion/preprocessing-pass.js.map +1 -0
  39. package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts +22 -0
  40. package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts.map +1 -0
  41. package/dist/depth/occlusion/preprocessing-shader.glsl.js +115 -0
  42. package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -0
  43. package/dist/ecs/entity.d.ts +17 -1
  44. package/dist/ecs/entity.d.ts.map +1 -1
  45. package/dist/ecs/entity.js +7 -1
  46. package/dist/ecs/entity.js.map +1 -1
  47. package/dist/ecs/world.d.ts +12 -0
  48. package/dist/ecs/world.d.ts.map +1 -1
  49. package/dist/ecs/world.js +47 -3
  50. package/dist/ecs/world.js.map +1 -1
  51. package/dist/environment/dome-gradient.js +1 -0
  52. package/dist/environment/dome-gradient.js.map +1 -1
  53. package/dist/environment/dome-texture.d.ts +3 -1
  54. package/dist/environment/dome-texture.d.ts.map +1 -1
  55. package/dist/environment/dome-texture.js +7 -1
  56. package/dist/environment/dome-texture.js.map +1 -1
  57. package/dist/environment/environment-system.d.ts +8 -0
  58. package/dist/environment/environment-system.d.ts.map +1 -1
  59. package/dist/environment/environment-system.js +78 -2
  60. package/dist/environment/environment-system.js.map +1 -1
  61. package/dist/environment/ibl-gradient.js +1 -0
  62. package/dist/environment/ibl-gradient.js.map +1 -1
  63. package/dist/environment/ibl-texture.d.ts +3 -1
  64. package/dist/environment/ibl-texture.d.ts.map +1 -1
  65. package/dist/environment/ibl-texture.js +7 -1
  66. package/dist/environment/ibl-texture.js.map +1 -1
  67. package/dist/environment-raycast/environment-raycast.d.ts +136 -0
  68. package/dist/environment-raycast/environment-raycast.d.ts.map +1 -0
  69. package/dist/environment-raycast/environment-raycast.js +333 -0
  70. package/dist/environment-raycast/environment-raycast.js.map +1 -0
  71. package/dist/environment-raycast/index.d.ts +9 -0
  72. package/dist/environment-raycast/index.d.ts.map +1 -0
  73. package/dist/environment-raycast/raycast-target.d.ts +114 -0
  74. package/dist/environment-raycast/raycast-target.d.ts.map +1 -0
  75. package/dist/environment-raycast/raycast-target.js +84 -0
  76. package/dist/environment-raycast/raycast-target.js.map +1 -0
  77. package/dist/grab/distance-grabbable.d.ts +27 -2
  78. package/dist/grab/distance-grabbable.d.ts.map +1 -1
  79. package/dist/grab/distance-grabbable.js +25 -2
  80. package/dist/grab/distance-grabbable.js.map +1 -1
  81. package/dist/grab/grab-system.d.ts +106 -61
  82. package/dist/grab/grab-system.d.ts.map +1 -1
  83. package/dist/grab/grab-system.js +61 -10
  84. package/dist/grab/grab-system.js.map +1 -1
  85. package/dist/grab/handles.d.ts +14 -4
  86. package/dist/grab/handles.d.ts.map +1 -1
  87. package/dist/grab/handles.js +45 -18
  88. package/dist/grab/handles.js.map +1 -1
  89. package/dist/grab/index.d.ts +0 -1
  90. package/dist/grab/index.d.ts.map +1 -1
  91. package/dist/grab/index.js +0 -2
  92. package/dist/grab/index.js.map +1 -1
  93. package/dist/grab/one-hand-grabbable.js +1 -0
  94. package/dist/grab/one-hand-grabbable.js.map +1 -1
  95. package/dist/grab/two-hands-grabbable.js +1 -0
  96. package/dist/grab/two-hands-grabbable.js.map +1 -1
  97. package/dist/index.d.ts +3 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +9 -1
  100. package/dist/index.js.map +1 -1
  101. package/dist/init/world-initializer.d.ts +17 -3
  102. package/dist/init/world-initializer.d.ts.map +1 -1
  103. package/dist/init/world-initializer.js +86 -19
  104. package/dist/init/world-initializer.js.map +1 -1
  105. package/dist/init/xr.d.ts +1 -0
  106. package/dist/init/xr.d.ts.map +1 -1
  107. package/dist/init/xr.js +6 -0
  108. package/dist/init/xr.js.map +1 -1
  109. package/dist/input/input-system.d.ts +408 -5
  110. package/dist/input/input-system.d.ts.map +1 -1
  111. package/dist/input/input-system.js +146 -23
  112. package/dist/input/input-system.js.map +1 -1
  113. package/dist/input/state-tags.d.ts +32 -15
  114. package/dist/input/state-tags.d.ts.map +1 -1
  115. package/dist/input/state-tags.js +34 -16
  116. package/dist/input/state-tags.js.map +1 -1
  117. package/dist/level/level-entity-creator.js +1 -0
  118. package/dist/level/level-entity-creator.js.map +1 -1
  119. package/dist/level/level-root.js +1 -0
  120. package/dist/level/level-root.js.map +1 -1
  121. package/dist/level/level-system.js +1 -0
  122. package/dist/level/level-system.js.map +1 -1
  123. package/dist/level/level-tag.js +1 -0
  124. package/dist/level/level-tag.js.map +1 -1
  125. package/dist/locomotion/locomotion.d.ts +10 -0
  126. package/dist/locomotion/locomotion.d.ts.map +1 -1
  127. package/dist/locomotion/locomotion.js +17 -1
  128. package/dist/locomotion/locomotion.js.map +1 -1
  129. package/dist/locomotion/slide.d.ts +10 -0
  130. package/dist/locomotion/slide.d.ts.map +1 -1
  131. package/dist/locomotion/slide.js +6 -2
  132. package/dist/locomotion/slide.js.map +1 -1
  133. package/dist/locomotion/teleport.js +1 -0
  134. package/dist/locomotion/teleport.js.map +1 -1
  135. package/dist/mcp/ecs-debug-tools.d.ts +167 -0
  136. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -0
  137. package/dist/mcp/ecs-debug-tools.js +602 -0
  138. package/dist/mcp/ecs-debug-tools.js.map +1 -0
  139. package/dist/mcp/index.d.ts +10 -0
  140. package/dist/mcp/index.d.ts.map +1 -0
  141. package/dist/mcp/mcp-runtime.d.ts +31 -0
  142. package/dist/mcp/mcp-runtime.d.ts.map +1 -0
  143. package/dist/mcp/mcp-runtime.js +85 -0
  144. package/dist/mcp/mcp-runtime.js.map +1 -0
  145. package/dist/mcp/scene-tools.d.ts +41 -0
  146. package/dist/mcp/scene-tools.d.ts.map +1 -0
  147. package/dist/mcp/scene-tools.js +95 -0
  148. package/dist/mcp/scene-tools.js.map +1 -0
  149. package/dist/physics/physics-system.d.ts +1 -1
  150. package/dist/physics/physics-system.d.ts.map +1 -1
  151. package/dist/physics/physics-system.js +9 -4
  152. package/dist/physics/physics-system.js.map +1 -1
  153. package/dist/physics/utils.d.ts.map +1 -1
  154. package/dist/physics/utils.js +1 -1
  155. package/dist/scene-understanding/anchor.js +1 -0
  156. package/dist/scene-understanding/anchor.js.map +1 -1
  157. package/dist/scene-understanding/mesh.js +1 -0
  158. package/dist/scene-understanding/mesh.js.map +1 -1
  159. package/dist/scene-understanding/plane.js +1 -0
  160. package/dist/scene-understanding/plane.js.map +1 -1
  161. package/dist/scene-understanding/scene-understanding-system.d.ts +29 -0
  162. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
  163. package/dist/scene-understanding/scene-understanding-system.js +118 -18
  164. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  165. package/dist/transform/index.d.ts +2 -0
  166. package/dist/transform/index.d.ts.map +1 -1
  167. package/dist/transform/synced-euler.d.ts +62 -0
  168. package/dist/transform/synced-euler.d.ts.map +1 -0
  169. package/dist/transform/synced-euler.js +212 -0
  170. package/dist/transform/synced-euler.js.map +1 -0
  171. package/dist/transform/synced-quaternion.d.ts +11 -0
  172. package/dist/transform/synced-quaternion.d.ts.map +1 -1
  173. package/dist/transform/synced-quaternion.js +29 -0
  174. package/dist/transform/synced-quaternion.js.map +1 -1
  175. package/dist/transform/transform-utils.d.ts +24 -0
  176. package/dist/transform/transform-utils.d.ts.map +1 -0
  177. package/dist/transform/transform-utils.js +53 -0
  178. package/dist/transform/transform-utils.js.map +1 -0
  179. package/dist/transform/transform.d.ts.map +1 -1
  180. package/dist/transform/transform.js +19 -2
  181. package/dist/transform/transform.js.map +1 -1
  182. package/dist/ui/follow.js +1 -0
  183. package/dist/ui/follow.js.map +1 -1
  184. package/dist/ui/index.d.ts +1 -1
  185. package/dist/ui/index.d.ts.map +1 -1
  186. package/dist/ui/screenspace.js +1 -0
  187. package/dist/ui/screenspace.js.map +1 -1
  188. package/dist/ui/ui.d.ts.map +1 -1
  189. package/dist/ui/ui.js +2 -8
  190. package/dist/ui/ui.js.map +1 -1
  191. package/dist/version.d.ts +1 -1
  192. package/dist/version.js +1 -1
  193. package/dist/visibility/visibility.d.ts.map +1 -1
  194. package/dist/visibility/visibility.js +4 -1
  195. package/dist/visibility/visibility.js.map +1 -1
  196. package/package.json +16 -9
  197. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js +0 -128
  198. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js.map +0 -1
  199. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +0 -161
  200. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +0 -1
  201. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +0 -66
  202. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +0 -1
  203. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +0 -162
  204. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +0 -1
  205. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +0 -519
  206. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +0 -1
  207. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +0 -15
  208. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +0 -1
  209. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +0 -32
  210. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +0 -1
  211. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +0 -10
  212. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +0 -1
  213. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +0 -41
  214. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +0 -1
  215. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +0 -35
  216. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +0 -1
  217. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +0 -24
  218. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +0 -1
  219. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +0 -92
  220. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +0 -1
  221. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +0 -382
  222. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +0 -1
  223. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +0 -2587
  224. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +0 -1
  225. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +0 -477
  226. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +0 -1
  227. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +0 -17
  228. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import '@preact/signals-core';
2
2
  import '../ecs/world.js';
3
3
  import { createComponent, Types } from 'elics';
4
+ import '../ecs/entity.js';
4
5
  import '../ecs/component-registry.js';
5
6
  import { MovementMode } from './handles.js';
6
7
 
@@ -21,6 +22,7 @@ import { MovementMode } from './handles.js';
21
22
  * - **RotateAtSource**: Object rotates in place without translation or scaling.
22
23
  * - Optional `returnToOrigin` makes objects snap back to their original position when released.
23
24
  * - Supports rotation, translation, and scaling with per‑axis constraints.
25
+ * - Configure target position and rotation offsets relative to the input source for MoveTowardsTarget mode.
24
26
  * - Works with the {@link GrabSystem} to create specialized distance grab handles.
25
27
  * - Perfect for telekinetic‑style interactions and remote object manipulation.
26
28
  *
@@ -49,6 +51,15 @@ import { MovementMode } from './handles.js';
49
51
  * })
50
52
  * ```
51
53
  *
54
+ * @example Distance grabbable with offset (object stays 0.3m in front of controller)
55
+ * ```ts
56
+ * entity.addComponent(DistanceGrabbable, {
57
+ * movementMode: MovementMode.MoveTowardsTarget,
58
+ * targetPositionOffset: [0, 0, -0.3], // 0.3m forward in controller space
59
+ * targetQuaternionOffset: [0, 0, 0, 1], // no rotation offset
60
+ * })
61
+ * ```
62
+ *
52
63
  * @category Grab
53
64
  * @see {@link GrabSystem}
54
65
  * @see {@link OneHandGrabbable}
@@ -100,8 +111,20 @@ const DistanceGrabbable = createComponent('DistanceGrabbable', {
100
111
  },
101
112
  /** A boolean value to set whether the object snap back to its original position and rotation. */
102
113
  returnToOrigin: { type: Types.Boolean, default: false },
103
- /** Object movement speed for the MoveTowardsTarget movement mode. */
104
- moveSpeed: { type: Types.Float32, default: 0.1 },
114
+ /** A boolean value to set whether the object will be detached from its parent and attach to the scene/Level root when grabbed. */
115
+ detachOnGrab: { type: Types.Boolean, default: false },
116
+ /** Object movement and rotation speed factor for the MoveTowardsTarget movement mode with a scale from 0 to 1. */
117
+ moveSpeedFactor: { type: Types.Float32, default: 0.1 },
118
+ /** Target position offset relative to the input source for MoveTowardsTarget mode in [x, y, z]. */
119
+ targetPositionOffset: {
120
+ type: Types.Vec3,
121
+ default: [0, 0, 0],
122
+ },
123
+ /** Target rotation offset as a quaternion relative to the input source for MoveTowardsTarget mode in [x, y, z, w]. */
124
+ targetQuaternionOffset: {
125
+ type: Types.Vec4,
126
+ default: [0, 0, 0, 1],
127
+ },
105
128
  }, 'Component for distance-based object grabbing and manipulation');
106
129
 
107
130
  export { DistanceGrabbable };
@@ -1 +1 @@
1
- {"version":3,"file":"distance-grabbable.js","sources":["../../src/grab/distance-grabbable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAKH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CG;AACI,MAAM,iBAAiB,GAAG,eAAe,CAC9C,mBAAmB,EACnB;;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;;IAED,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE7C,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;AAED,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,iBAAiB;AACxC,KAAA;;IAED,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;IAEvD,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;CACjD,EACD,+DAA+D;;;;"}
1
+ {"version":3,"file":"distance-grabbable.js","sources":["../../src/grab/distance-grabbable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;AAKH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDG;AACI,MAAM,iBAAiB,GAAG,eAAe,CAC9C,mBAAmB,EACnB;;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;;IAED,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE7C,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;AAED,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,iBAAiB;AACxC,KAAA;;IAED,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;IAEvD,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;IAErD,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;AAEtD,IAAA,oBAAoB,EAAE;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACnB,KAAA;;AAED,IAAA,sBAAsB,EAAE;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtB,KAAA;CACF,EACD,+DAA+D;;;;"}
@@ -4,31 +4,42 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- declare const GrabSystem_base: import("elics").SystemConstructor<import("elics").SystemSchema, {
7
+ import { Types } from '../ecs/index.js';
8
+ declare const GrabSystem_base: import("elics").SystemConstructor<{
9
+ /**
10
+ * Controls whether hand pinch gestures are forwarded as squeeze events for grab interactions.
11
+ * Set to `false` to disable pinch-to-grab and require the physical squeeze button instead.
12
+ * @default false
13
+ */
14
+ useHandPinchForGrab: {
15
+ type: Types.Boolean;
16
+ default: false;
17
+ };
18
+ }, {
8
19
  oneHandGrabbables: {
9
20
  required: import("elics").Component<{
10
21
  rotate: {
11
- type: import("elics/lib/types.js").Types.Boolean;
22
+ type: Types.Boolean;
12
23
  default: true;
13
24
  };
14
25
  rotateMax: {
15
- type: import("elics/lib/types.js").Types.Vec3;
26
+ type: Types.Vec3;
16
27
  default: [number, number, number];
17
28
  };
18
29
  rotateMin: {
19
- type: import("elics/lib/types.js").Types.Vec3;
30
+ type: Types.Vec3;
20
31
  default: [number, number, number];
21
32
  };
22
33
  translate: {
23
- type: import("elics/lib/types.js").Types.Boolean;
34
+ type: Types.Boolean;
24
35
  default: true;
25
36
  };
26
37
  translateMax: {
27
- type: import("elics/lib/types.js").Types.Vec3;
38
+ type: Types.Vec3;
28
39
  default: [number, number, number];
29
40
  };
30
41
  translateMin: {
31
- type: import("elics/lib/types.js").Types.Vec3;
42
+ type: Types.Vec3;
32
43
  default: [number, number, number];
33
44
  };
34
45
  }>[];
@@ -36,39 +47,39 @@ declare const GrabSystem_base: import("elics").SystemConstructor<import("elics")
36
47
  twoHandsGrabbables: {
37
48
  required: import("elics").Component<{
38
49
  rotate: {
39
- type: import("elics/lib/types.js").Types.Boolean;
50
+ type: Types.Boolean;
40
51
  default: true;
41
52
  };
42
53
  rotateMax: {
43
- type: import("elics/lib/types.js").Types.Vec3;
54
+ type: Types.Vec3;
44
55
  default: [number, number, number];
45
56
  };
46
57
  rotateMin: {
47
- type: import("elics/lib/types.js").Types.Vec3;
58
+ type: Types.Vec3;
48
59
  default: [number, number, number];
49
60
  };
50
61
  translate: {
51
- type: import("elics/lib/types.js").Types.Boolean;
62
+ type: Types.Boolean;
52
63
  default: true;
53
64
  };
54
65
  translateMax: {
55
- type: import("elics/lib/types.js").Types.Vec3;
66
+ type: Types.Vec3;
56
67
  default: [number, number, number];
57
68
  };
58
69
  translateMin: {
59
- type: import("elics/lib/types.js").Types.Vec3;
70
+ type: Types.Vec3;
60
71
  default: [number, number, number];
61
72
  };
62
73
  scale: {
63
- type: import("elics/lib/types.js").Types.Boolean;
74
+ type: Types.Boolean;
64
75
  default: true;
65
76
  };
66
77
  scaleMax: {
67
- type: import("elics/lib/types.js").Types.Vec3;
78
+ type: Types.Vec3;
68
79
  default: [number, number, number];
69
80
  };
70
81
  scaleMin: {
71
- type: import("elics/lib/types.js").Types.Vec3;
82
+ type: Types.Vec3;
72
83
  default: [number, number, number];
73
84
  };
74
85
  }>[];
@@ -76,43 +87,43 @@ declare const GrabSystem_base: import("elics").SystemConstructor<import("elics")
76
87
  distanceGrabbables: {
77
88
  required: import("elics").Component<{
78
89
  rotate: {
79
- type: import("elics/lib/types.js").Types.Boolean;
90
+ type: Types.Boolean;
80
91
  default: true;
81
92
  };
82
93
  rotateMax: {
83
- type: import("elics/lib/types.js").Types.Vec3;
94
+ type: Types.Vec3;
84
95
  default: [number, number, number];
85
96
  };
86
97
  rotateMin: {
87
- type: import("elics/lib/types.js").Types.Vec3;
98
+ type: Types.Vec3;
88
99
  default: [number, number, number];
89
100
  };
90
101
  translate: {
91
- type: import("elics/lib/types.js").Types.Boolean;
102
+ type: Types.Boolean;
92
103
  default: true;
93
104
  };
94
105
  translateMax: {
95
- type: import("elics/lib/types.js").Types.Vec3;
106
+ type: Types.Vec3;
96
107
  default: [number, number, number];
97
108
  };
98
109
  translateMin: {
99
- type: import("elics/lib/types.js").Types.Vec3;
110
+ type: Types.Vec3;
100
111
  default: [number, number, number];
101
112
  };
102
113
  scale: {
103
- type: import("elics/lib/types.js").Types.Boolean;
114
+ type: Types.Boolean;
104
115
  default: true;
105
116
  };
106
117
  scaleMax: {
107
- type: import("elics/lib/types.js").Types.Vec3;
118
+ type: Types.Vec3;
108
119
  default: [number, number, number];
109
120
  };
110
121
  scaleMin: {
111
- type: import("elics/lib/types.js").Types.Vec3;
122
+ type: Types.Vec3;
112
123
  default: [number, number, number];
113
124
  };
114
125
  movementMode: {
115
- type: import("elics/lib/types.js").Types.Enum;
126
+ type: Types.Enum;
116
127
  enum: {
117
128
  MoveFromTarget: string;
118
129
  MoveTowardsTarget: string;
@@ -122,48 +133,70 @@ declare const GrabSystem_base: import("elics").SystemConstructor<import("elics")
122
133
  default: string;
123
134
  };
124
135
  returnToOrigin: {
125
- type: import("elics/lib/types.js").Types.Boolean;
136
+ type: Types.Boolean;
137
+ default: false;
138
+ };
139
+ detachOnGrab: {
140
+ type: Types.Boolean;
126
141
  default: false;
127
142
  };
128
- moveSpeed: {
129
- type: import("elics/lib/types.js").Types.Float32;
143
+ moveSpeedFactor: {
144
+ type: Types.Float32;
130
145
  default: number;
131
146
  };
147
+ targetPositionOffset: {
148
+ type: Types.Vec3;
149
+ default: [number, number, number];
150
+ };
151
+ targetQuaternionOffset: {
152
+ type: Types.Vec4;
153
+ default: [number, number, number, number];
154
+ };
132
155
  }>[];
133
156
  };
134
157
  handles: {
135
158
  required: import("elics").Component<{
136
159
  instance: {
137
- type: import("elics/lib/types.js").Types.Object;
160
+ type: Types.Object;
138
161
  default: undefined;
139
162
  };
140
163
  }>[];
141
164
  };
142
- }, import("../ecs/world.js").World, import("../ecs/system.js").System<import("elics").SystemSchema, {
165
+ }, import("../ecs/world.js").World, import("../ecs/system.js").System<{
166
+ /**
167
+ * Controls whether hand pinch gestures are forwarded as squeeze events for grab interactions.
168
+ * Set to `false` to disable pinch-to-grab and require the physical squeeze button instead.
169
+ * @default false
170
+ */
171
+ useHandPinchForGrab: {
172
+ type: Types.Boolean;
173
+ default: false;
174
+ };
175
+ }, {
143
176
  oneHandGrabbables: {
144
177
  required: import("elics").Component<{
145
178
  rotate: {
146
- type: import("elics/lib/types.js").Types.Boolean;
179
+ type: Types.Boolean;
147
180
  default: true;
148
181
  };
149
182
  rotateMax: {
150
- type: import("elics/lib/types.js").Types.Vec3;
183
+ type: Types.Vec3;
151
184
  default: [number, number, number];
152
185
  };
153
186
  rotateMin: {
154
- type: import("elics/lib/types.js").Types.Vec3;
187
+ type: Types.Vec3;
155
188
  default: [number, number, number];
156
189
  };
157
190
  translate: {
158
- type: import("elics/lib/types.js").Types.Boolean;
191
+ type: Types.Boolean;
159
192
  default: true;
160
193
  };
161
194
  translateMax: {
162
- type: import("elics/lib/types.js").Types.Vec3;
195
+ type: Types.Vec3;
163
196
  default: [number, number, number];
164
197
  };
165
198
  translateMin: {
166
- type: import("elics/lib/types.js").Types.Vec3;
199
+ type: Types.Vec3;
167
200
  default: [number, number, number];
168
201
  };
169
202
  }>[];
@@ -171,39 +204,39 @@ declare const GrabSystem_base: import("elics").SystemConstructor<import("elics")
171
204
  twoHandsGrabbables: {
172
205
  required: import("elics").Component<{
173
206
  rotate: {
174
- type: import("elics/lib/types.js").Types.Boolean;
207
+ type: Types.Boolean;
175
208
  default: true;
176
209
  };
177
210
  rotateMax: {
178
- type: import("elics/lib/types.js").Types.Vec3;
211
+ type: Types.Vec3;
179
212
  default: [number, number, number];
180
213
  };
181
214
  rotateMin: {
182
- type: import("elics/lib/types.js").Types.Vec3;
215
+ type: Types.Vec3;
183
216
  default: [number, number, number];
184
217
  };
185
218
  translate: {
186
- type: import("elics/lib/types.js").Types.Boolean;
219
+ type: Types.Boolean;
187
220
  default: true;
188
221
  };
189
222
  translateMax: {
190
- type: import("elics/lib/types.js").Types.Vec3;
223
+ type: Types.Vec3;
191
224
  default: [number, number, number];
192
225
  };
193
226
  translateMin: {
194
- type: import("elics/lib/types.js").Types.Vec3;
227
+ type: Types.Vec3;
195
228
  default: [number, number, number];
196
229
  };
197
230
  scale: {
198
- type: import("elics/lib/types.js").Types.Boolean;
231
+ type: Types.Boolean;
199
232
  default: true;
200
233
  };
201
234
  scaleMax: {
202
- type: import("elics/lib/types.js").Types.Vec3;
235
+ type: Types.Vec3;
203
236
  default: [number, number, number];
204
237
  };
205
238
  scaleMin: {
206
- type: import("elics/lib/types.js").Types.Vec3;
239
+ type: Types.Vec3;
207
240
  default: [number, number, number];
208
241
  };
209
242
  }>[];
@@ -211,43 +244,43 @@ declare const GrabSystem_base: import("elics").SystemConstructor<import("elics")
211
244
  distanceGrabbables: {
212
245
  required: import("elics").Component<{
213
246
  rotate: {
214
- type: import("elics/lib/types.js").Types.Boolean;
247
+ type: Types.Boolean;
215
248
  default: true;
216
249
  };
217
250
  rotateMax: {
218
- type: import("elics/lib/types.js").Types.Vec3;
251
+ type: Types.Vec3;
219
252
  default: [number, number, number];
220
253
  };
221
254
  rotateMin: {
222
- type: import("elics/lib/types.js").Types.Vec3;
255
+ type: Types.Vec3;
223
256
  default: [number, number, number];
224
257
  };
225
258
  translate: {
226
- type: import("elics/lib/types.js").Types.Boolean;
259
+ type: Types.Boolean;
227
260
  default: true;
228
261
  };
229
262
  translateMax: {
230
- type: import("elics/lib/types.js").Types.Vec3;
263
+ type: Types.Vec3;
231
264
  default: [number, number, number];
232
265
  };
233
266
  translateMin: {
234
- type: import("elics/lib/types.js").Types.Vec3;
267
+ type: Types.Vec3;
235
268
  default: [number, number, number];
236
269
  };
237
270
  scale: {
238
- type: import("elics/lib/types.js").Types.Boolean;
271
+ type: Types.Boolean;
239
272
  default: true;
240
273
  };
241
274
  scaleMax: {
242
- type: import("elics/lib/types.js").Types.Vec3;
275
+ type: Types.Vec3;
243
276
  default: [number, number, number];
244
277
  };
245
278
  scaleMin: {
246
- type: import("elics/lib/types.js").Types.Vec3;
279
+ type: Types.Vec3;
247
280
  default: [number, number, number];
248
281
  };
249
282
  movementMode: {
250
- type: import("elics/lib/types.js").Types.Enum;
283
+ type: Types.Enum;
251
284
  enum: {
252
285
  MoveFromTarget: string;
253
286
  MoveTowardsTarget: string;
@@ -257,19 +290,31 @@ declare const GrabSystem_base: import("elics").SystemConstructor<import("elics")
257
290
  default: string;
258
291
  };
259
292
  returnToOrigin: {
260
- type: import("elics/lib/types.js").Types.Boolean;
293
+ type: Types.Boolean;
294
+ default: false;
295
+ };
296
+ detachOnGrab: {
297
+ type: Types.Boolean;
261
298
  default: false;
262
299
  };
263
- moveSpeed: {
264
- type: import("elics/lib/types.js").Types.Float32;
300
+ moveSpeedFactor: {
301
+ type: Types.Float32;
265
302
  default: number;
266
303
  };
304
+ targetPositionOffset: {
305
+ type: Types.Vec3;
306
+ default: [number, number, number];
307
+ };
308
+ targetQuaternionOffset: {
309
+ type: Types.Vec4;
310
+ default: [number, number, number, number];
311
+ };
267
312
  }>[];
268
313
  };
269
314
  handles: {
270
315
  required: import("elics").Component<{
271
316
  instance: {
272
- type: import("elics/lib/types.js").Types.Object;
317
+ type: Types.Object;
273
318
  default: undefined;
274
319
  };
275
320
  }>[];
@@ -311,7 +356,7 @@ declare const GrabSystem_base: import("elics").SystemConstructor<import("elics")
311
356
  */
312
357
  export declare class GrabSystem extends GrabSystem_base {
313
358
  init(): void;
314
- update(delta: number): void;
359
+ update(delta: number, time: number): void;
315
360
  private initializeOneHandHandle;
316
361
  private initializeTwoHandsHandle;
317
362
  private initializeDistanceHandle;
@@ -1 +1 @@
1
- {"version":3,"file":"grab-system.d.ts","sourceRoot":"","sources":["../../src/grab/grab-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,UAAW,SAAQ,eAa9B;IACA,IAAI;IAgDJ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAY3B,OAAO,CAAC,uBAAuB;IAgC/B,OAAO,CAAC,wBAAwB;IA+ChC,OAAO,CAAC,wBAAwB;CA8DjC"}
1
+ {"version":3,"file":"grab-system.d.ts","sourceRoot":"","sources":["../../src/grab/grab-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAwB,KAAK,EAAE,MAAM,iBAAiB,CAAC;;IA+D1D;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAJH;;;;OAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAtDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,qBAAa,UAAW,SAAQ,eAuB/B;IACC,IAAI;IAgDJ,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAgCzC,OAAO,CAAC,uBAAuB;IAoC/B,OAAO,CAAC,wBAAwB;IAmDhC,OAAO,CAAC,wBAAwB;CAyFjC"}
@@ -1,14 +1,26 @@
1
1
  import { HandleStore } from '@pmndrs/handle';
2
2
  import { createSystem } from '../ecs/system.js';
3
3
  import '../ecs/world.js';
4
- import 'elics';
4
+ import { Types } from 'elics';
5
+ import '../ecs/entity.js';
5
6
  import '../ecs/component-registry.js';
7
+ import '../level/level-system.js';
8
+ import { LevelTag } from '../level/level-tag.js';
9
+ import '@iwsdk/glxf';
10
+ import '../asset/asset-manager.js';
11
+ import '../asset/cache-manager.js';
12
+ import '@pmndrs/uikit';
13
+ import '@preact/signals-core';
14
+ import { Object3D, Vector3, Quaternion } from 'three';
15
+ import '../ui/ui.js';
16
+ import '../ui/follow.js';
17
+ import '../ui/screenspace.js';
18
+ import '../level/level-root.js';
6
19
  import '../runtime/three.js';
7
20
  import { DistanceGrabbable } from './distance-grabbable.js';
8
21
  import { Handle, DistanceGrabHandle, MovementMode } from './handles.js';
9
22
  import { OneHandGrabbable } from './one-hand-grabbable.js';
10
23
  import { TwoHandsGrabbable } from './two-hands-grabbable.js';
11
- import { Object3D } from 'three';
12
24
 
13
25
  /**
14
26
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -63,6 +75,13 @@ class GrabSystem extends createSystem({
63
75
  handles: {
64
76
  required: [Handle],
65
77
  },
78
+ }, {
79
+ /**
80
+ * Controls whether hand pinch gestures are forwarded as squeeze events for grab interactions.
81
+ * Set to `false` to disable pinch-to-grab and require the physical squeeze button instead.
82
+ * @default false
83
+ */
84
+ useHandPinchForGrab: { type: Types.Boolean, default: false },
66
85
  }) {
67
86
  init() {
68
87
  // Ensure Handle component is registered in the world before queries rely on it
@@ -100,7 +119,27 @@ class GrabSystem extends createSystem({
100
119
  this.input.multiPointers.left.toggleSubPointer('grab', true);
101
120
  this.input.multiPointers.right.toggleSubPointer('grab', true);
102
121
  }
103
- update(delta) {
122
+ update(delta, time) {
123
+ // Forward hand pinch events to squeeze for grab interactions
124
+ // Only forward if the system-level useHandPinchForGrab flag is enabled
125
+ if (this.config.useHandPinchForGrab) {
126
+ ['left', 'right'].forEach((handedness) => {
127
+ var _a, _b;
128
+ if (this.input.isPrimary('hand', handedness)) {
129
+ const timeStamp = time * 1000;
130
+ if ((_a = this.input.gamepads[handedness]) === null || _a === void 0 ? void 0 : _a.getSelectStart()) {
131
+ this.input.multiPointers[handedness].routeDown('squeeze', 'grab', {
132
+ timeStamp,
133
+ });
134
+ }
135
+ if ((_b = this.input.gamepads[handedness]) === null || _b === void 0 ? void 0 : _b.getSelectEnd()) {
136
+ this.input.multiPointers[handedness].routeUp('squeeze', 'grab', {
137
+ timeStamp,
138
+ });
139
+ }
140
+ }
141
+ });
142
+ }
104
143
  // Unified handle updates
105
144
  this.queries.handles.entities.forEach((entity) => {
106
145
  const h = Handle.data.instance[entity.index];
@@ -110,11 +149,13 @@ class GrabSystem extends createSystem({
110
149
  });
111
150
  }
112
151
  initializeOneHandHandle(entity) {
113
- if (entity.hasComponent(Handle))
152
+ if (entity.hasComponent(Handle)) {
114
153
  return;
154
+ }
115
155
  const object = entity.object3D;
116
- if (!(object instanceof Object3D))
156
+ if (!(object instanceof Object3D)) {
117
157
  return;
158
+ }
118
159
  const obj = object;
119
160
  const rotateMax = entity.getVectorView(OneHandGrabbable, 'rotateMax');
120
161
  const rotateMin = entity.getVectorView(OneHandGrabbable, 'rotateMin');
@@ -143,11 +184,13 @@ class GrabSystem extends createSystem({
143
184
  entity.addComponent(Handle, { instance: handle });
144
185
  }
145
186
  initializeTwoHandsHandle(entity) {
146
- if (entity.hasComponent(Handle))
187
+ if (entity.hasComponent(Handle)) {
147
188
  return;
189
+ }
148
190
  const object = entity.object3D;
149
- if (!(object instanceof Object3D))
191
+ if (!(object instanceof Object3D)) {
150
192
  return;
193
+ }
151
194
  const obj = object;
152
195
  const rotateMax = entity.getVectorView(TwoHandsGrabbable, 'rotateMax');
153
196
  const rotateMin = entity.getVectorView(TwoHandsGrabbable, 'rotateMin');
@@ -186,12 +229,17 @@ class GrabSystem extends createSystem({
186
229
  }
187
230
  initializeDistanceHandle(entity) {
188
231
  var _a;
189
- if (entity.hasComponent(Handle))
232
+ if (entity.hasComponent(Handle)) {
190
233
  return;
234
+ }
191
235
  const object = entity.object3D;
192
- if (!(object instanceof Object3D))
236
+ if (!(object instanceof Object3D)) {
193
237
  return;
238
+ }
194
239
  const obj = object;
240
+ const rootEntity = entity.hasComponent(LevelTag)
241
+ ? this.world.activeLevel.value
242
+ : this.world.sceneEntity;
195
243
  const rotateMax = entity.getVectorView(DistanceGrabbable, 'rotateMax');
196
244
  const rotateMin = entity.getVectorView(DistanceGrabbable, 'rotateMin');
197
245
  const translateMax = entity.getVectorView(DistanceGrabbable, 'translateMax');
@@ -200,6 +248,9 @@ class GrabSystem extends createSystem({
200
248
  const scaleMin = entity.getVectorView(DistanceGrabbable, 'scaleMin');
201
249
  const movementMode = entity.getValue(DistanceGrabbable, 'movementMode');
202
250
  const returnToOrigin = Boolean(entity.getValue(DistanceGrabbable, 'returnToOrigin'));
251
+ const detachOnGrab = Boolean(entity.getValue(DistanceGrabbable, 'detachOnGrab'));
252
+ const targetPosOffset = entity.getVectorView(DistanceGrabbable, 'targetPositionOffset');
253
+ const targetQuatOffset = entity.getVectorView(DistanceGrabbable, 'targetQuaternionOffset');
203
254
  const opts = () => ({
204
255
  rotate: entity.getValue(DistanceGrabbable, 'rotate')
205
256
  ? {
@@ -228,7 +279,7 @@ class GrabSystem extends createSystem({
228
279
  : false,
229
280
  projectRays: false,
230
281
  });
231
- const handle = new DistanceGrabHandle(obj, opts, movementMode, returnToOrigin, (_a = entity.getValue(DistanceGrabbable, 'moveSpeed')) !== null && _a !== void 0 ? _a : 0.1);
282
+ const handle = new DistanceGrabHandle(obj, rootEntity.object3D, opts, movementMode, returnToOrigin, (_a = entity.getValue(DistanceGrabbable, 'moveSpeedFactor')) !== null && _a !== void 0 ? _a : 0.1, new Vector3(targetPosOffset[0], targetPosOffset[1], targetPosOffset[2]), new Quaternion(targetQuatOffset[0], targetQuatOffset[1], targetQuatOffset[2], targetQuatOffset[3]), detachOnGrab);
232
283
  handle.bind(obj);
233
284
  obj.pointerEventsType = { deny: 'grab' };
234
285
  entity.addComponent(Handle, { instance: handle });
@@ -1 +1 @@
1
- {"version":3,"file":"grab-system.js","sources":["../../src/grab/grab-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grab-system.js","sources":["../../src/grab/grab-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}