@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.
- package/README.md +94 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
- package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js +4 -4
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/audio/audio-system.d.ts +6 -2
- package/dist/audio/audio-system.d.ts.map +1 -1
- package/dist/audio/audio-system.js +1 -0
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/audio/audio.d.ts +3 -1
- package/dist/audio/audio.d.ts.map +1 -1
- package/dist/audio/audio.js +8 -2
- package/dist/audio/audio.js.map +1 -1
- package/dist/camera/camera-source.js +1 -0
- package/dist/camera/camera-source.js.map +1 -1
- package/dist/camera/camera-system.d.ts.map +1 -1
- package/dist/camera/camera-system.js +1 -0
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/camera/camera-utils.d.ts.map +1 -1
- package/dist/camera/camera-utils.js.map +1 -1
- package/dist/depth/depth-occludable.d.ts +48 -0
- package/dist/depth/depth-occludable.d.ts.map +1 -0
- package/dist/depth/depth-occludable.js +48 -0
- package/dist/depth/depth-occludable.js.map +1 -0
- package/dist/depth/depth-sensing-system.d.ts +164 -0
- package/dist/depth/depth-sensing-system.d.ts.map +1 -0
- package/dist/depth/depth-sensing-system.js +453 -0
- package/dist/depth/depth-sensing-system.js.map +1 -0
- package/dist/depth/depth-textures.d.ts +53 -0
- package/dist/depth/depth-textures.d.ts.map +1 -0
- package/dist/depth/depth-textures.js +114 -0
- package/dist/depth/depth-textures.js.map +1 -0
- package/dist/depth/index.d.ts +10 -0
- package/dist/depth/index.d.ts.map +1 -0
- package/dist/depth/occlusion/preprocessing-pass.d.ts +52 -0
- package/dist/depth/occlusion/preprocessing-pass.d.ts.map +1 -0
- package/dist/depth/occlusion/preprocessing-pass.js +105 -0
- package/dist/depth/occlusion/preprocessing-pass.js.map +1 -0
- package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts +22 -0
- package/dist/depth/occlusion/preprocessing-shader.glsl.d.ts.map +1 -0
- package/dist/depth/occlusion/preprocessing-shader.glsl.js +115 -0
- package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -0
- package/dist/ecs/entity.d.ts +17 -1
- package/dist/ecs/entity.d.ts.map +1 -1
- package/dist/ecs/entity.js +7 -1
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/world.d.ts +12 -0
- package/dist/ecs/world.d.ts.map +1 -1
- package/dist/ecs/world.js +47 -3
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.js +1 -0
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/dome-texture.d.ts +3 -1
- package/dist/environment/dome-texture.d.ts.map +1 -1
- package/dist/environment/dome-texture.js +7 -1
- package/dist/environment/dome-texture.js.map +1 -1
- package/dist/environment/environment-system.d.ts +8 -0
- package/dist/environment/environment-system.d.ts.map +1 -1
- package/dist/environment/environment-system.js +78 -2
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/ibl-gradient.js +1 -0
- package/dist/environment/ibl-gradient.js.map +1 -1
- package/dist/environment/ibl-texture.d.ts +3 -1
- package/dist/environment/ibl-texture.d.ts.map +1 -1
- package/dist/environment/ibl-texture.js +7 -1
- package/dist/environment/ibl-texture.js.map +1 -1
- package/dist/environment-raycast/environment-raycast.d.ts +136 -0
- package/dist/environment-raycast/environment-raycast.d.ts.map +1 -0
- package/dist/environment-raycast/environment-raycast.js +333 -0
- package/dist/environment-raycast/environment-raycast.js.map +1 -0
- package/dist/environment-raycast/index.d.ts +9 -0
- package/dist/environment-raycast/index.d.ts.map +1 -0
- package/dist/environment-raycast/raycast-target.d.ts +114 -0
- package/dist/environment-raycast/raycast-target.d.ts.map +1 -0
- package/dist/environment-raycast/raycast-target.js +84 -0
- package/dist/environment-raycast/raycast-target.js.map +1 -0
- package/dist/grab/distance-grabbable.d.ts +27 -2
- package/dist/grab/distance-grabbable.d.ts.map +1 -1
- package/dist/grab/distance-grabbable.js +25 -2
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-system.d.ts +106 -61
- package/dist/grab/grab-system.d.ts.map +1 -1
- package/dist/grab/grab-system.js +61 -10
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/handles.d.ts +14 -4
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +45 -18
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/index.d.ts +0 -1
- package/dist/grab/index.d.ts.map +1 -1
- package/dist/grab/index.js +0 -2
- package/dist/grab/index.js.map +1 -1
- package/dist/grab/one-hand-grabbable.js +1 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -1
- package/dist/grab/two-hands-grabbable.js +1 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/init/world-initializer.d.ts +17 -3
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +86 -19
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +1 -0
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +6 -0
- package/dist/init/xr.js.map +1 -1
- package/dist/input/input-system.d.ts +408 -5
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +146 -23
- package/dist/input/input-system.js.map +1 -1
- package/dist/input/state-tags.d.ts +32 -15
- package/dist/input/state-tags.d.ts.map +1 -1
- package/dist/input/state-tags.js +34 -16
- package/dist/input/state-tags.js.map +1 -1
- package/dist/level/level-entity-creator.js +1 -0
- package/dist/level/level-entity-creator.js.map +1 -1
- package/dist/level/level-root.js +1 -0
- package/dist/level/level-root.js.map +1 -1
- package/dist/level/level-system.js +1 -0
- package/dist/level/level-system.js.map +1 -1
- package/dist/level/level-tag.js +1 -0
- package/dist/level/level-tag.js.map +1 -1
- package/dist/locomotion/locomotion.d.ts +10 -0
- package/dist/locomotion/locomotion.d.ts.map +1 -1
- package/dist/locomotion/locomotion.js +17 -1
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/slide.d.ts +10 -0
- package/dist/locomotion/slide.d.ts.map +1 -1
- package/dist/locomotion/slide.js +6 -2
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/locomotion/teleport.js +1 -0
- package/dist/locomotion/teleport.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.d.ts +167 -0
- package/dist/mcp/ecs-debug-tools.d.ts.map +1 -0
- package/dist/mcp/ecs-debug-tools.js +602 -0
- package/dist/mcp/ecs-debug-tools.js.map +1 -0
- package/dist/mcp/index.d.ts +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/mcp-runtime.d.ts +31 -0
- package/dist/mcp/mcp-runtime.d.ts.map +1 -0
- package/dist/mcp/mcp-runtime.js +85 -0
- package/dist/mcp/mcp-runtime.js.map +1 -0
- package/dist/mcp/scene-tools.d.ts +41 -0
- package/dist/mcp/scene-tools.d.ts.map +1 -0
- package/dist/mcp/scene-tools.js +95 -0
- package/dist/mcp/scene-tools.js.map +1 -0
- package/dist/physics/physics-system.d.ts +1 -1
- package/dist/physics/physics-system.d.ts.map +1 -1
- package/dist/physics/physics-system.js +9 -4
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/utils.d.ts.map +1 -1
- package/dist/physics/utils.js +1 -1
- package/dist/scene-understanding/anchor.js +1 -0
- package/dist/scene-understanding/anchor.js.map +1 -1
- package/dist/scene-understanding/mesh.js +1 -0
- package/dist/scene-understanding/mesh.js.map +1 -1
- package/dist/scene-understanding/plane.js +1 -0
- package/dist/scene-understanding/plane.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.d.ts +29 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +118 -18
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/transform/index.d.ts +2 -0
- package/dist/transform/index.d.ts.map +1 -1
- package/dist/transform/synced-euler.d.ts +62 -0
- package/dist/transform/synced-euler.d.ts.map +1 -0
- package/dist/transform/synced-euler.js +212 -0
- package/dist/transform/synced-euler.js.map +1 -0
- package/dist/transform/synced-quaternion.d.ts +11 -0
- package/dist/transform/synced-quaternion.d.ts.map +1 -1
- package/dist/transform/synced-quaternion.js +29 -0
- package/dist/transform/synced-quaternion.js.map +1 -1
- package/dist/transform/transform-utils.d.ts +24 -0
- package/dist/transform/transform-utils.d.ts.map +1 -0
- package/dist/transform/transform-utils.js +53 -0
- package/dist/transform/transform-utils.js.map +1 -0
- package/dist/transform/transform.d.ts.map +1 -1
- package/dist/transform/transform.js +19 -2
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/follow.js +1 -0
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/screenspace.js +1 -0
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.d.ts.map +1 -1
- package/dist/ui/ui.js +2 -8
- package/dist/ui/ui.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/visibility/visibility.d.ts.map +1 -1
- package/dist/visibility/visibility.js +4 -1
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +16 -9
- 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
- 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
- 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
- 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
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +0 -66
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +0 -162
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +0 -519
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +0 -15
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +0 -32
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +0 -10
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +0 -41
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +0 -35
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +0 -24
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +0 -1
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +0 -92
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +0 -1
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +0 -382
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +0 -1
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +0 -2587
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +0 -1
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +0 -477
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +0 -1
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +0 -17
- 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
|
-
/**
|
|
104
|
-
|
|
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":"
|
|
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
|
-
|
|
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:
|
|
22
|
+
type: Types.Boolean;
|
|
12
23
|
default: true;
|
|
13
24
|
};
|
|
14
25
|
rotateMax: {
|
|
15
|
-
type:
|
|
26
|
+
type: Types.Vec3;
|
|
16
27
|
default: [number, number, number];
|
|
17
28
|
};
|
|
18
29
|
rotateMin: {
|
|
19
|
-
type:
|
|
30
|
+
type: Types.Vec3;
|
|
20
31
|
default: [number, number, number];
|
|
21
32
|
};
|
|
22
33
|
translate: {
|
|
23
|
-
type:
|
|
34
|
+
type: Types.Boolean;
|
|
24
35
|
default: true;
|
|
25
36
|
};
|
|
26
37
|
translateMax: {
|
|
27
|
-
type:
|
|
38
|
+
type: Types.Vec3;
|
|
28
39
|
default: [number, number, number];
|
|
29
40
|
};
|
|
30
41
|
translateMin: {
|
|
31
|
-
type:
|
|
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:
|
|
50
|
+
type: Types.Boolean;
|
|
40
51
|
default: true;
|
|
41
52
|
};
|
|
42
53
|
rotateMax: {
|
|
43
|
-
type:
|
|
54
|
+
type: Types.Vec3;
|
|
44
55
|
default: [number, number, number];
|
|
45
56
|
};
|
|
46
57
|
rotateMin: {
|
|
47
|
-
type:
|
|
58
|
+
type: Types.Vec3;
|
|
48
59
|
default: [number, number, number];
|
|
49
60
|
};
|
|
50
61
|
translate: {
|
|
51
|
-
type:
|
|
62
|
+
type: Types.Boolean;
|
|
52
63
|
default: true;
|
|
53
64
|
};
|
|
54
65
|
translateMax: {
|
|
55
|
-
type:
|
|
66
|
+
type: Types.Vec3;
|
|
56
67
|
default: [number, number, number];
|
|
57
68
|
};
|
|
58
69
|
translateMin: {
|
|
59
|
-
type:
|
|
70
|
+
type: Types.Vec3;
|
|
60
71
|
default: [number, number, number];
|
|
61
72
|
};
|
|
62
73
|
scale: {
|
|
63
|
-
type:
|
|
74
|
+
type: Types.Boolean;
|
|
64
75
|
default: true;
|
|
65
76
|
};
|
|
66
77
|
scaleMax: {
|
|
67
|
-
type:
|
|
78
|
+
type: Types.Vec3;
|
|
68
79
|
default: [number, number, number];
|
|
69
80
|
};
|
|
70
81
|
scaleMin: {
|
|
71
|
-
type:
|
|
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:
|
|
90
|
+
type: Types.Boolean;
|
|
80
91
|
default: true;
|
|
81
92
|
};
|
|
82
93
|
rotateMax: {
|
|
83
|
-
type:
|
|
94
|
+
type: Types.Vec3;
|
|
84
95
|
default: [number, number, number];
|
|
85
96
|
};
|
|
86
97
|
rotateMin: {
|
|
87
|
-
type:
|
|
98
|
+
type: Types.Vec3;
|
|
88
99
|
default: [number, number, number];
|
|
89
100
|
};
|
|
90
101
|
translate: {
|
|
91
|
-
type:
|
|
102
|
+
type: Types.Boolean;
|
|
92
103
|
default: true;
|
|
93
104
|
};
|
|
94
105
|
translateMax: {
|
|
95
|
-
type:
|
|
106
|
+
type: Types.Vec3;
|
|
96
107
|
default: [number, number, number];
|
|
97
108
|
};
|
|
98
109
|
translateMin: {
|
|
99
|
-
type:
|
|
110
|
+
type: Types.Vec3;
|
|
100
111
|
default: [number, number, number];
|
|
101
112
|
};
|
|
102
113
|
scale: {
|
|
103
|
-
type:
|
|
114
|
+
type: Types.Boolean;
|
|
104
115
|
default: true;
|
|
105
116
|
};
|
|
106
117
|
scaleMax: {
|
|
107
|
-
type:
|
|
118
|
+
type: Types.Vec3;
|
|
108
119
|
default: [number, number, number];
|
|
109
120
|
};
|
|
110
121
|
scaleMin: {
|
|
111
|
-
type:
|
|
122
|
+
type: Types.Vec3;
|
|
112
123
|
default: [number, number, number];
|
|
113
124
|
};
|
|
114
125
|
movementMode: {
|
|
115
|
-
type:
|
|
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:
|
|
136
|
+
type: Types.Boolean;
|
|
137
|
+
default: false;
|
|
138
|
+
};
|
|
139
|
+
detachOnGrab: {
|
|
140
|
+
type: Types.Boolean;
|
|
126
141
|
default: false;
|
|
127
142
|
};
|
|
128
|
-
|
|
129
|
-
type:
|
|
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:
|
|
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<
|
|
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:
|
|
179
|
+
type: Types.Boolean;
|
|
147
180
|
default: true;
|
|
148
181
|
};
|
|
149
182
|
rotateMax: {
|
|
150
|
-
type:
|
|
183
|
+
type: Types.Vec3;
|
|
151
184
|
default: [number, number, number];
|
|
152
185
|
};
|
|
153
186
|
rotateMin: {
|
|
154
|
-
type:
|
|
187
|
+
type: Types.Vec3;
|
|
155
188
|
default: [number, number, number];
|
|
156
189
|
};
|
|
157
190
|
translate: {
|
|
158
|
-
type:
|
|
191
|
+
type: Types.Boolean;
|
|
159
192
|
default: true;
|
|
160
193
|
};
|
|
161
194
|
translateMax: {
|
|
162
|
-
type:
|
|
195
|
+
type: Types.Vec3;
|
|
163
196
|
default: [number, number, number];
|
|
164
197
|
};
|
|
165
198
|
translateMin: {
|
|
166
|
-
type:
|
|
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:
|
|
207
|
+
type: Types.Boolean;
|
|
175
208
|
default: true;
|
|
176
209
|
};
|
|
177
210
|
rotateMax: {
|
|
178
|
-
type:
|
|
211
|
+
type: Types.Vec3;
|
|
179
212
|
default: [number, number, number];
|
|
180
213
|
};
|
|
181
214
|
rotateMin: {
|
|
182
|
-
type:
|
|
215
|
+
type: Types.Vec3;
|
|
183
216
|
default: [number, number, number];
|
|
184
217
|
};
|
|
185
218
|
translate: {
|
|
186
|
-
type:
|
|
219
|
+
type: Types.Boolean;
|
|
187
220
|
default: true;
|
|
188
221
|
};
|
|
189
222
|
translateMax: {
|
|
190
|
-
type:
|
|
223
|
+
type: Types.Vec3;
|
|
191
224
|
default: [number, number, number];
|
|
192
225
|
};
|
|
193
226
|
translateMin: {
|
|
194
|
-
type:
|
|
227
|
+
type: Types.Vec3;
|
|
195
228
|
default: [number, number, number];
|
|
196
229
|
};
|
|
197
230
|
scale: {
|
|
198
|
-
type:
|
|
231
|
+
type: Types.Boolean;
|
|
199
232
|
default: true;
|
|
200
233
|
};
|
|
201
234
|
scaleMax: {
|
|
202
|
-
type:
|
|
235
|
+
type: Types.Vec3;
|
|
203
236
|
default: [number, number, number];
|
|
204
237
|
};
|
|
205
238
|
scaleMin: {
|
|
206
|
-
type:
|
|
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:
|
|
247
|
+
type: Types.Boolean;
|
|
215
248
|
default: true;
|
|
216
249
|
};
|
|
217
250
|
rotateMax: {
|
|
218
|
-
type:
|
|
251
|
+
type: Types.Vec3;
|
|
219
252
|
default: [number, number, number];
|
|
220
253
|
};
|
|
221
254
|
rotateMin: {
|
|
222
|
-
type:
|
|
255
|
+
type: Types.Vec3;
|
|
223
256
|
default: [number, number, number];
|
|
224
257
|
};
|
|
225
258
|
translate: {
|
|
226
|
-
type:
|
|
259
|
+
type: Types.Boolean;
|
|
227
260
|
default: true;
|
|
228
261
|
};
|
|
229
262
|
translateMax: {
|
|
230
|
-
type:
|
|
263
|
+
type: Types.Vec3;
|
|
231
264
|
default: [number, number, number];
|
|
232
265
|
};
|
|
233
266
|
translateMin: {
|
|
234
|
-
type:
|
|
267
|
+
type: Types.Vec3;
|
|
235
268
|
default: [number, number, number];
|
|
236
269
|
};
|
|
237
270
|
scale: {
|
|
238
|
-
type:
|
|
271
|
+
type: Types.Boolean;
|
|
239
272
|
default: true;
|
|
240
273
|
};
|
|
241
274
|
scaleMax: {
|
|
242
|
-
type:
|
|
275
|
+
type: Types.Vec3;
|
|
243
276
|
default: [number, number, number];
|
|
244
277
|
};
|
|
245
278
|
scaleMin: {
|
|
246
|
-
type:
|
|
279
|
+
type: Types.Vec3;
|
|
247
280
|
default: [number, number, number];
|
|
248
281
|
};
|
|
249
282
|
movementMode: {
|
|
250
|
-
type:
|
|
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:
|
|
293
|
+
type: Types.Boolean;
|
|
294
|
+
default: false;
|
|
295
|
+
};
|
|
296
|
+
detachOnGrab: {
|
|
297
|
+
type: Types.Boolean;
|
|
261
298
|
default: false;
|
|
262
299
|
};
|
|
263
|
-
|
|
264
|
-
type:
|
|
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:
|
|
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
|
|
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"}
|
package/dist/grab/grab-system.js
CHANGED
|
@@ -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, '
|
|
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":"
|
|
1
|
+
{"version":3,"file":"grab-system.js","sources":["../../src/grab/grab-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|