@iwsdk/core 0.2.2 → 0.3.1
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 +13 -1
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +78 -18
- 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 +409 -5
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +166 -32
- 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 +0 -39
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +10 -2
- 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,10 +1,15 @@
|
|
|
1
1
|
import { createSystem } from '../ecs/system.js';
|
|
2
2
|
import { VisibilityState } from '../ecs/world.js';
|
|
3
3
|
import 'elics';
|
|
4
|
+
import '../ecs/entity.js';
|
|
4
5
|
import '../ecs/component-registry.js';
|
|
6
|
+
import { DistanceGrabbable } from '../grab/distance-grabbable.js';
|
|
7
|
+
import { OneHandGrabbable } from '../grab/one-hand-grabbable.js';
|
|
8
|
+
import { TwoHandsGrabbable } from '../grab/two-hands-grabbable.js';
|
|
5
9
|
import { Transform } from '../transform/transform.js';
|
|
10
|
+
import '../transform/transform-utils.js';
|
|
6
11
|
import '../runtime/three.js';
|
|
7
|
-
import {
|
|
12
|
+
import { PokeInteractable, RayInteractable, Hovered, Pressed } from './state-tags.js';
|
|
8
13
|
|
|
9
14
|
/**
|
|
10
15
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
@@ -18,14 +23,14 @@ import { Interactable, Hovered, Pressed } from './state-tags.js';
|
|
|
18
23
|
*
|
|
19
24
|
* @remarks
|
|
20
25
|
* - Scheduled after player movement so pointers reflect updated transforms.
|
|
21
|
-
* -
|
|
26
|
+
* - Maintains type-specific descendant arrays for optimized pointer intersection.
|
|
22
27
|
* - Adds transient `Hovered` / `Pressed` tags so other systems can react declaratively.
|
|
23
28
|
*
|
|
24
29
|
* @category Input
|
|
25
30
|
* @example React to Hovered / Pressed
|
|
26
31
|
* ```ts
|
|
27
32
|
* export class HighlightSystem extends createSystem({
|
|
28
|
-
* items: { required: [
|
|
33
|
+
* items: { required: [RayInteractable] }
|
|
29
34
|
* }) {
|
|
30
35
|
* update() {
|
|
31
36
|
* this.queries.items.entities.forEach(e => {
|
|
@@ -36,51 +41,175 @@ import { Interactable, Hovered, Pressed } from './state-tags.js';
|
|
|
36
41
|
* ```
|
|
37
42
|
*/
|
|
38
43
|
class InputSystem extends createSystem({
|
|
39
|
-
interactable
|
|
44
|
+
/** Entities interactable via ray pointer */
|
|
45
|
+
rayInteractables: { required: [RayInteractable, Transform] },
|
|
46
|
+
/** Entities interactable via touch/poke pointer */
|
|
47
|
+
pokeInteractables: { required: [PokeInteractable, Transform] },
|
|
48
|
+
/** One-hand grabbable entities */
|
|
49
|
+
oneHandGrabbables: { required: [OneHandGrabbable, Transform] },
|
|
50
|
+
/** Two-hands grabbable entities */
|
|
51
|
+
twoHandsGrabbables: { required: [TwoHandsGrabbable, Transform] },
|
|
52
|
+
/** Distance grabbable entities */
|
|
53
|
+
distanceGrabbables: { required: [DistanceGrabbable, Transform] },
|
|
40
54
|
}, {}) {
|
|
41
55
|
constructor() {
|
|
42
56
|
super(...arguments);
|
|
43
|
-
|
|
57
|
+
/** Descendants for ray pointer intersection */
|
|
58
|
+
this.rayDescendants = [];
|
|
59
|
+
/** Descendants for touch/poke pointer intersection */
|
|
60
|
+
this.touchDescendants = [];
|
|
61
|
+
/** Descendants for grab pointer intersection */
|
|
62
|
+
this.grabDescendants = [];
|
|
44
63
|
this.shouldSetIntersectables = false;
|
|
64
|
+
this.dirty = true;
|
|
45
65
|
this.listeners = new WeakMap();
|
|
46
66
|
this.lastBVHUpdate = new WeakMap();
|
|
47
67
|
}
|
|
48
68
|
init() {
|
|
49
|
-
//
|
|
69
|
+
// React to XR visibility for enabling scoped intersections
|
|
50
70
|
this.cleanupFuncs.push(this.visibilityState.subscribe((value) => {
|
|
51
|
-
|
|
71
|
+
const nextVisible = value === VisibilityState.Visible;
|
|
72
|
+
if (this.shouldSetIntersectables !== nextVisible) {
|
|
73
|
+
this.shouldSetIntersectables = nextVisible;
|
|
74
|
+
this.dirty = true;
|
|
75
|
+
}
|
|
52
76
|
}));
|
|
53
|
-
//
|
|
54
|
-
this.queries.
|
|
77
|
+
// Handle additions/removals for ray interactables
|
|
78
|
+
this.queries.rayInteractables.subscribe('qualify', (entity) => {
|
|
79
|
+
this.setupEventListeners(entity);
|
|
80
|
+
this.dirty = true;
|
|
81
|
+
});
|
|
82
|
+
this.queries.rayInteractables.subscribe('disqualify', (entity) => {
|
|
83
|
+
this.cleanupEventListeners(entity);
|
|
84
|
+
this.dirty = true;
|
|
85
|
+
});
|
|
86
|
+
// Handle additions/removals for poke interactables
|
|
87
|
+
this.queries.pokeInteractables.subscribe('qualify', (entity) => {
|
|
55
88
|
this.setupEventListeners(entity);
|
|
89
|
+
this.dirty = true;
|
|
90
|
+
// Enable touch pointers when first poke interactable appears
|
|
91
|
+
this.input.multiPointers.left.toggleSubPointer('touch', true);
|
|
92
|
+
this.input.multiPointers.right.toggleSubPointer('touch', true);
|
|
56
93
|
});
|
|
57
|
-
this.queries.
|
|
94
|
+
this.queries.pokeInteractables.subscribe('disqualify', (entity) => {
|
|
58
95
|
this.cleanupEventListeners(entity);
|
|
96
|
+
this.dirty = true;
|
|
97
|
+
// Disable touch pointers when no poke interactables remain
|
|
98
|
+
if (this.queries.pokeInteractables.entities.size === 0) {
|
|
99
|
+
this.input.multiPointers.left.toggleSubPointer('touch', false);
|
|
100
|
+
this.input.multiPointers.right.toggleSubPointer('touch', false);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
// Handle additions/removals for grabbables (all types)
|
|
104
|
+
this.queries.oneHandGrabbables.subscribe('qualify', () => {
|
|
105
|
+
this.dirty = true;
|
|
106
|
+
});
|
|
107
|
+
this.queries.oneHandGrabbables.subscribe('disqualify', () => {
|
|
108
|
+
this.dirty = true;
|
|
109
|
+
});
|
|
110
|
+
this.queries.twoHandsGrabbables.subscribe('qualify', () => {
|
|
111
|
+
this.dirty = true;
|
|
59
112
|
});
|
|
113
|
+
this.queries.twoHandsGrabbables.subscribe('disqualify', () => {
|
|
114
|
+
this.dirty = true;
|
|
115
|
+
});
|
|
116
|
+
this.queries.distanceGrabbables.subscribe('qualify', () => {
|
|
117
|
+
this.dirty = true;
|
|
118
|
+
});
|
|
119
|
+
this.queries.distanceGrabbables.subscribe('disqualify', () => {
|
|
120
|
+
this.dirty = true;
|
|
121
|
+
});
|
|
122
|
+
// Enable touch pointer if there are already poke interactables
|
|
123
|
+
if (this.queries.pokeInteractables.entities.size > 0) {
|
|
124
|
+
this.input.multiPointers.left.toggleSubPointer('touch', true);
|
|
125
|
+
this.input.multiPointers.right.toggleSubPointer('touch', true);
|
|
126
|
+
}
|
|
60
127
|
}
|
|
61
128
|
update(delta, time) {
|
|
62
129
|
// Update input sampling first
|
|
63
130
|
this.input.update(this.xrManager, delta, time);
|
|
64
|
-
//
|
|
65
|
-
if (this.
|
|
66
|
-
this.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
131
|
+
// Maintain the filtered lists of interactables for pointer raycasting
|
|
132
|
+
if (this.dirty) {
|
|
133
|
+
this.dirty = false;
|
|
134
|
+
this.updateDescendantArrays();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Update per-type descendant arrays for optimized pointer intersection
|
|
139
|
+
*/
|
|
140
|
+
updateDescendantArrays() {
|
|
141
|
+
// Clear arrays
|
|
142
|
+
this.rayDescendants.length = 0;
|
|
143
|
+
this.touchDescendants.length = 0;
|
|
144
|
+
this.grabDescendants.length = 0;
|
|
145
|
+
if (!this.shouldSetIntersectables) {
|
|
146
|
+
// Clear all descendant arrays on scene
|
|
147
|
+
this.scene.interactableDescendants = undefined;
|
|
148
|
+
this.scene.rayDescendants = undefined;
|
|
149
|
+
this.scene.touchDescendants = undefined;
|
|
150
|
+
this.scene.grabDescendants = undefined;
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Collect ray interactables + distance grabbables (both use ray)
|
|
154
|
+
for (const entity of this.queries.rayInteractables.entities) {
|
|
155
|
+
const obj = entity.object3D;
|
|
156
|
+
if (isDescendantOf(obj, this.scene)) {
|
|
157
|
+
this.rayDescendants.push(obj);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
for (const entity of this.queries.distanceGrabbables.entities) {
|
|
161
|
+
const obj = entity.object3D;
|
|
162
|
+
if (isDescendantOf(obj, this.scene)) {
|
|
163
|
+
// Only add if not already in ray descendants
|
|
164
|
+
if (!this.rayDescendants.includes(obj)) {
|
|
165
|
+
this.rayDescendants.push(obj);
|
|
70
166
|
}
|
|
71
167
|
}
|
|
72
|
-
this.scene.interactableDescendants = this.intersectables;
|
|
73
168
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
169
|
+
// Collect poke/touch interactables
|
|
170
|
+
for (const entity of this.queries.pokeInteractables.entities) {
|
|
171
|
+
const obj = entity.object3D;
|
|
172
|
+
if (isDescendantOf(obj, this.scene)) {
|
|
173
|
+
this.touchDescendants.push(obj);
|
|
174
|
+
}
|
|
77
175
|
}
|
|
176
|
+
// Collect grab interactables (oneHand + twoHands)
|
|
177
|
+
for (const entity of this.queries.oneHandGrabbables.entities) {
|
|
178
|
+
const obj = entity.object3D;
|
|
179
|
+
if (isDescendantOf(obj, this.scene)) {
|
|
180
|
+
this.grabDescendants.push(obj);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
for (const entity of this.queries.twoHandsGrabbables.entities) {
|
|
184
|
+
const obj = entity.object3D;
|
|
185
|
+
if (isDescendantOf(obj, this.scene)) {
|
|
186
|
+
// Only add if not already in grab descendants
|
|
187
|
+
if (!this.grabDescendants.includes(obj)) {
|
|
188
|
+
this.grabDescendants.push(obj);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Set type-specific arrays on scene
|
|
193
|
+
this.scene.rayDescendants = this.rayDescendants;
|
|
194
|
+
this.scene.touchDescendants = this.touchDescendants;
|
|
195
|
+
this.scene.grabDescendants = this.grabDescendants;
|
|
196
|
+
// Also set legacy interactableDescendants as union for backwards compatibility
|
|
197
|
+
const allDescendants = new Set([
|
|
198
|
+
...this.rayDescendants,
|
|
199
|
+
...this.touchDescendants,
|
|
200
|
+
...this.grabDescendants,
|
|
201
|
+
]);
|
|
202
|
+
this.scene.interactableDescendants = Array.from(allDescendants);
|
|
78
203
|
}
|
|
79
204
|
setupEventListeners(entity) {
|
|
80
205
|
const object3D = entity.object3D;
|
|
81
206
|
if (!object3D) {
|
|
82
207
|
return;
|
|
83
208
|
}
|
|
209
|
+
// Skip if already has listeners
|
|
210
|
+
if (this.listeners.has(object3D)) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
84
213
|
// Compute BVH for all meshes in the entity hierarchy for fast raycasting
|
|
85
214
|
this.computeBoundsTreeForEntity(object3D);
|
|
86
215
|
// Enable pointer events for raycasting
|
|
@@ -97,22 +226,26 @@ class InputSystem extends createSystem({
|
|
|
97
226
|
this.lastBVHUpdate.set(object3D, now);
|
|
98
227
|
}
|
|
99
228
|
};
|
|
100
|
-
const enter = () => {
|
|
229
|
+
const enter = (event) => {
|
|
230
|
+
event.stopPropagation();
|
|
101
231
|
maybeRefreshBVH();
|
|
102
232
|
if (!entity.hasComponent(Hovered)) {
|
|
103
233
|
entity.addComponent(Hovered);
|
|
104
234
|
}
|
|
105
235
|
};
|
|
106
|
-
const leave = () => {
|
|
236
|
+
const leave = (event) => {
|
|
237
|
+
event.stopPropagation();
|
|
107
238
|
entity.removeComponent(Hovered);
|
|
108
239
|
};
|
|
109
|
-
const down = () => {
|
|
240
|
+
const down = (event) => {
|
|
241
|
+
event.stopPropagation();
|
|
110
242
|
maybeRefreshBVH();
|
|
111
243
|
if (!entity.hasComponent(Pressed)) {
|
|
112
244
|
entity.addComponent(Pressed);
|
|
113
245
|
}
|
|
114
246
|
};
|
|
115
|
-
const up = () => {
|
|
247
|
+
const up = (event) => {
|
|
248
|
+
event.stopPropagation();
|
|
116
249
|
entity.removeComponent(Pressed);
|
|
117
250
|
};
|
|
118
251
|
this.listeners.set(object3D, { enter, leave, down, up });
|
|
@@ -149,16 +282,17 @@ class InputSystem extends createSystem({
|
|
|
149
282
|
object3D.removeEventListener('pointerup', fns.up);
|
|
150
283
|
this.listeners.delete(object3D);
|
|
151
284
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
entity.removeComponent(Pressed);
|
|
285
|
+
entity.removeComponent(Hovered).removeComponent(Pressed);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function isDescendantOf(object, parent) {
|
|
289
|
+
while (object) {
|
|
290
|
+
if (object === parent) {
|
|
291
|
+
return true;
|
|
160
292
|
}
|
|
293
|
+
object = object.parent;
|
|
161
294
|
}
|
|
295
|
+
return false;
|
|
162
296
|
}
|
|
163
297
|
|
|
164
298
|
export { InputSystem };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-system.js","sources":["../../src/input/input-system.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input-system.js","sources":["../../src/input/input-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -5,52 +5,69 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* Marks an entity as eligible for
|
|
8
|
+
* Marks an entity as eligible for ray-based pointer interaction.
|
|
9
9
|
*
|
|
10
10
|
* @remarks
|
|
11
|
-
* - The {@link InputSystem} discovers all entities with `
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* - The {@link InputSystem} discovers all entities with `RayInteractable` and
|
|
12
|
+
* registers their Object3D roots as raycast targets.
|
|
13
|
+
* - Used for UI elements, buttons, and clickable objects interacted via ray pointer.
|
|
14
14
|
* - When a pointer enters/leaves or presses/releases on the entity, the system
|
|
15
|
-
* adds/removes the transient tags {@link Hovered} and {@link Pressed}
|
|
16
|
-
* systems can react declaratively without manual event wiring.
|
|
17
|
-
* - Add this tag to the root Object3D of your UI/interactive object. Children
|
|
18
|
-
* are implicitly covered because the InputSystem registers the whole subtree.
|
|
15
|
+
* adds/removes the transient tags {@link Hovered} and {@link Pressed}.
|
|
19
16
|
*
|
|
20
17
|
* @category Input
|
|
21
18
|
* @example Highlight on hover
|
|
22
19
|
* ```ts
|
|
23
|
-
* export class HighlightSystem extends createSystem({ items: { required: [
|
|
20
|
+
* export class HighlightSystem extends createSystem({ items: { required: [RayInteractable] } }) {
|
|
24
21
|
* update() {
|
|
25
22
|
* this.queries.items.entities.forEach(e => {
|
|
26
|
-
* e.object3D.visible = !e.hasComponent(Pressed);
|
|
27
23
|
* e.object3D.material.emissiveIntensity = e.hasComponent(Hovered) ? 1.0 : 0.0;
|
|
28
24
|
* });
|
|
29
25
|
* }
|
|
30
26
|
* }
|
|
31
27
|
* ```
|
|
32
28
|
*/
|
|
33
|
-
export declare const
|
|
29
|
+
export declare const RayInteractable: import("elics").Component<{}>;
|
|
30
|
+
/**
|
|
31
|
+
* Marks an entity as eligible for poke/touch interaction.
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* - Used for UI elements that can be poked/touched with finger or controller.
|
|
35
|
+
* - Auto-selects when finger crosses the surface (distance <= 0).
|
|
36
|
+
* - Uses hysteresis (separate enter/exit thresholds) to prevent flickering.
|
|
37
|
+
*
|
|
38
|
+
* @category Input
|
|
39
|
+
* @example Create a pokeable button
|
|
40
|
+
* ```ts
|
|
41
|
+
* entity.addComponent(PokeInteractable);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare const PokeInteractable: import("elics").Component<{}>;
|
|
34
45
|
/**
|
|
35
|
-
* A transient tag set while a pointer
|
|
46
|
+
* A transient tag set while a pointer is intersecting an interactable.
|
|
36
47
|
*
|
|
37
48
|
* @remarks
|
|
38
|
-
* - Managed by {@link InputSystem}; do not add/remove this component manually
|
|
49
|
+
* - Managed by {@link InputSystem}; do not add/remove this component manually.
|
|
39
50
|
* - Use as a declarative condition for hover effects, tooltips, or affordances.
|
|
51
|
+
* - Works with both RayInteractable and PokeInteractable entities.
|
|
40
52
|
*
|
|
41
53
|
* @category Input
|
|
42
54
|
* @hideineditor
|
|
43
55
|
*/
|
|
44
56
|
export declare const Hovered: import("elics").Component<{}>;
|
|
45
57
|
/**
|
|
46
|
-
* A transient tag set while a pointer is actively pressing an
|
|
58
|
+
* A transient tag set while a pointer is actively pressing an interactable.
|
|
47
59
|
*
|
|
48
60
|
* @remarks
|
|
49
|
-
* - Managed by {@link InputSystem}; do not add/remove this component manually
|
|
61
|
+
* - Managed by {@link InputSystem}; do not add/remove this component manually.
|
|
50
62
|
* - Often used to gate activation logic or pressed-state visuals.
|
|
63
|
+
* - Works with both RayInteractable and PokeInteractable entities.
|
|
51
64
|
*
|
|
52
65
|
* @category Input
|
|
53
66
|
* @hideineditor
|
|
54
67
|
*/
|
|
55
68
|
export declare const Pressed: import("elics").Component<{}>;
|
|
69
|
+
/**
|
|
70
|
+
* @deprecated Use `RayInteractable` instead. This will be removed in a future version.
|
|
71
|
+
*/
|
|
72
|
+
export declare const Interactable: import("elics").Component<{}>;
|
|
56
73
|
//# sourceMappingURL=state-tags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-tags.d.ts","sourceRoot":"","sources":["../../src/input/state-tags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH
|
|
1
|
+
{"version":3,"file":"state-tags.d.ts","sourceRoot":"","sources":["../../src/input/state-tags.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,eAAe,+BAI3B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,+BAI5B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,+BAInB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,+BAInB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,+BAAkB,CAAC"}
|
package/dist/input/state-tags.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import '@preact/signals-core';
|
|
2
2
|
import '../ecs/world.js';
|
|
3
3
|
import { createComponent } from 'elics';
|
|
4
|
+
import '../ecs/entity.js';
|
|
4
5
|
import '../ecs/component-registry.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
@@ -10,54 +11,71 @@ import '../ecs/component-registry.js';
|
|
|
10
11
|
* LICENSE file in the root directory of this source tree.
|
|
11
12
|
*/
|
|
12
13
|
/**
|
|
13
|
-
* Marks an entity as eligible for
|
|
14
|
+
* Marks an entity as eligible for ray-based pointer interaction.
|
|
14
15
|
*
|
|
15
16
|
* @remarks
|
|
16
|
-
* - The {@link InputSystem} discovers all entities with `
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* - The {@link InputSystem} discovers all entities with `RayInteractable` and
|
|
18
|
+
* registers their Object3D roots as raycast targets.
|
|
19
|
+
* - Used for UI elements, buttons, and clickable objects interacted via ray pointer.
|
|
19
20
|
* - When a pointer enters/leaves or presses/releases on the entity, the system
|
|
20
|
-
* adds/removes the transient tags {@link Hovered} and {@link Pressed}
|
|
21
|
-
* systems can react declaratively without manual event wiring.
|
|
22
|
-
* - Add this tag to the root Object3D of your UI/interactive object. Children
|
|
23
|
-
* are implicitly covered because the InputSystem registers the whole subtree.
|
|
21
|
+
* adds/removes the transient tags {@link Hovered} and {@link Pressed}.
|
|
24
22
|
*
|
|
25
23
|
* @category Input
|
|
26
24
|
* @example Highlight on hover
|
|
27
25
|
* ```ts
|
|
28
|
-
* export class HighlightSystem extends createSystem({ items: { required: [
|
|
26
|
+
* export class HighlightSystem extends createSystem({ items: { required: [RayInteractable] } }) {
|
|
29
27
|
* update() {
|
|
30
28
|
* this.queries.items.entities.forEach(e => {
|
|
31
|
-
* e.object3D.visible = !e.hasComponent(Pressed);
|
|
32
29
|
* e.object3D.material.emissiveIntensity = e.hasComponent(Hovered) ? 1.0 : 0.0;
|
|
33
30
|
* });
|
|
34
31
|
* }
|
|
35
32
|
* }
|
|
36
33
|
* ```
|
|
37
34
|
*/
|
|
38
|
-
const
|
|
35
|
+
const RayInteractable = createComponent('RayInteractable', {}, 'Marks an entity as eligible for ray-based pointer interaction.');
|
|
39
36
|
/**
|
|
40
|
-
*
|
|
37
|
+
* Marks an entity as eligible for poke/touch interaction.
|
|
41
38
|
*
|
|
42
39
|
* @remarks
|
|
43
|
-
* -
|
|
40
|
+
* - Used for UI elements that can be poked/touched with finger or controller.
|
|
41
|
+
* - Auto-selects when finger crosses the surface (distance <= 0).
|
|
42
|
+
* - Uses hysteresis (separate enter/exit thresholds) to prevent flickering.
|
|
43
|
+
*
|
|
44
|
+
* @category Input
|
|
45
|
+
* @example Create a pokeable button
|
|
46
|
+
* ```ts
|
|
47
|
+
* entity.addComponent(PokeInteractable);
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
const PokeInteractable = createComponent('PokeInteractable', {}, 'Marks an entity as eligible for poke/touch interaction.');
|
|
51
|
+
/**
|
|
52
|
+
* A transient tag set while a pointer is intersecting an interactable.
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* - Managed by {@link InputSystem}; do not add/remove this component manually.
|
|
44
56
|
* - Use as a declarative condition for hover effects, tooltips, or affordances.
|
|
57
|
+
* - Works with both RayInteractable and PokeInteractable entities.
|
|
45
58
|
*
|
|
46
59
|
* @category Input
|
|
47
60
|
* @hideineditor
|
|
48
61
|
*/
|
|
49
62
|
const Hovered = createComponent('Hovered', {}, 'A tag added by InputSystem while a pointer is hovering over the entity.');
|
|
50
63
|
/**
|
|
51
|
-
* A transient tag set while a pointer is actively pressing an
|
|
64
|
+
* A transient tag set while a pointer is actively pressing an interactable.
|
|
52
65
|
*
|
|
53
66
|
* @remarks
|
|
54
|
-
* - Managed by {@link InputSystem}; do not add/remove this component manually
|
|
67
|
+
* - Managed by {@link InputSystem}; do not add/remove this component manually.
|
|
55
68
|
* - Often used to gate activation logic or pressed-state visuals.
|
|
69
|
+
* - Works with both RayInteractable and PokeInteractable entities.
|
|
56
70
|
*
|
|
57
71
|
* @category Input
|
|
58
72
|
* @hideineditor
|
|
59
73
|
*/
|
|
60
74
|
const Pressed = createComponent('Pressed', {}, 'A tag added by InputSystem while the entity is actively pressed.');
|
|
75
|
+
/**
|
|
76
|
+
* @deprecated Use `RayInteractable` instead. This will be removed in a future version.
|
|
77
|
+
*/
|
|
78
|
+
const Interactable = RayInteractable;
|
|
61
79
|
|
|
62
|
-
export { Hovered, Interactable, Pressed };
|
|
80
|
+
export { Hovered, Interactable, PokeInteractable, Pressed, RayInteractable };
|
|
63
81
|
//# sourceMappingURL=state-tags.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-tags.js","sources":["../../src/input/state-tags.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state-tags.js","sources":["../../src/input/state-tags.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,MAAM,eAAe,GAAG,eAAe,CAC5C,iBAAiB,EACjB,EAAE,EACF,gEAAgE;AAGlE;;;;;;;;;;;;;AAaG;AACI,MAAM,gBAAgB,GAAG,eAAe,CAC7C,kBAAkB,EAClB,EAAE,EACF,yDAAyD;AAG3D;;;;;;;;;;AAUG;AACI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT,EAAE,EACF,yEAAyE;AAG3E;;;;;;;;;;AAUG;AACI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT,EAAE,EACF,kEAAkE;AAGpE;;AAEG;AACI,MAAM,YAAY,GAAG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-entity-creator.js","sources":["../../src/level/level-entity-creator.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"level-entity-creator.js","sources":["../../src/level/level-entity-creator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/level/level-root.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-root.js","sources":["../../src/level/level-root.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"level-root.js","sources":["../../src/level/level-root.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;AASG;AACI,MAAM,SAAS,GAAG,eAAe,CACtC,WAAW,EACX,EAAE,EACF,kDAAkD;;;;"}
|
|
@@ -2,6 +2,7 @@ import { signal } from '@preact/signals-core';
|
|
|
2
2
|
import { createSystem } from '../ecs/system.js';
|
|
3
3
|
import '../ecs/world.js';
|
|
4
4
|
import { Types } from 'elics';
|
|
5
|
+
import '../ecs/entity.js';
|
|
5
6
|
import '../ecs/component-registry.js';
|
|
6
7
|
import { DomeTexture } from '../environment/dome-texture.js';
|
|
7
8
|
import { DomeGradient } from '../environment/dome-gradient.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-system.js","sources":["../../src/level/level-system.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"level-system.js","sources":["../../src/level/level-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/level/level-tag.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"level-tag.js","sources":["../../src/level/level-tag.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"level-tag.js","sources":["../../src/level/level-tag.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;AAUG;AACI,MAAM,QAAQ,GAAG,eAAe,CACrC,UAAU,EACV;AACE,IAAA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;CACxC,EACD,uCAAuC;;;;"}
|
|
@@ -101,6 +101,11 @@ declare const LocomotionSystem_base: import("elics").SystemConstructor<{
|
|
|
101
101
|
type: Types.String;
|
|
102
102
|
default: InputComponent;
|
|
103
103
|
};
|
|
104
|
+
/** Whether jumping is enabled. */
|
|
105
|
+
enableJumping: {
|
|
106
|
+
type: Types.Boolean;
|
|
107
|
+
default: true;
|
|
108
|
+
};
|
|
104
109
|
}, {
|
|
105
110
|
envs: {
|
|
106
111
|
required: import("elics").Component<{
|
|
@@ -183,6 +188,11 @@ declare const LocomotionSystem_base: import("elics").SystemConstructor<{
|
|
|
183
188
|
type: Types.String;
|
|
184
189
|
default: InputComponent;
|
|
185
190
|
};
|
|
191
|
+
/** Whether jumping is enabled. */
|
|
192
|
+
enableJumping: {
|
|
193
|
+
type: Types.Boolean;
|
|
194
|
+
default: true;
|
|
195
|
+
};
|
|
186
196
|
}, {
|
|
187
197
|
envs: {
|
|
188
198
|
required: import("elics").Component<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locomotion.d.ts","sourceRoot":"","sources":["../../src/locomotion/locomotion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAmB,MAAM,qBAAqB,CAAC;AAM7D,OAAO,EAAc,aAAa,EAAE,MAAM,WAAW,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;EAYjC,CAAC;;IAwBE,wDAAwD;;;;;IAExD,4EAA4E;;;;;IAE5E,0DAA0D;;;;;IAE1D,mCAAmC;;;;;IAEnC,oCAAoC;;;;;IAEpC,6BAA6B;;;;;IAE7B,6CAA6C;;;;;IAE7C,2DAA2D;;;;;IAE3D,0EAA0E;;;;;IAE1E,kCAAkC;;;;;IAElC,qCAAqC;;;;;IAErC,0CAA0C;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"locomotion.d.ts","sourceRoot":"","sources":["../../src/locomotion/locomotion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAmB,MAAM,qBAAqB,CAAC;AAM7D,OAAO,EAAc,aAAa,EAAE,MAAM,WAAW,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;EAYjC,CAAC;;IAwBE,wDAAwD;;;;;IAExD,4EAA4E;;;;;IAE5E,0DAA0D;;;;;IAE1D,mCAAmC;;;;;IAEnC,oCAAoC;;;;;IAEpC,6BAA6B;;;;;IAE7B,6CAA6C;;;;;IAE7C,2DAA2D;;;;;IAE3D,0EAA0E;;;;;IAE1E,kCAAkC;;;;;IAElC,qCAAqC;;;;;IAErC,0CAA0C;;;;;IAE1C,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;IAxBlC,wDAAwD;;;;;IAExD,4EAA4E;;;;;IAE5E,0DAA0D;;;;;IAE1D,mCAAmC;;;;;IAEnC,oCAAoC;;;;;IAEpC,6BAA6B;;;;;IAE7B,6CAA6C;;;;;IAE7C,2DAA2D;;;;;IAE3D,0EAA0E;;;;;IAE1E,kCAAkC;;;;;IAElC,qCAAqC;;;;;IAErC,0CAA0C;;;;;IAE1C,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA9CtC;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,qBAgCrC;IACC,OAAO,CAAC,SAAS,CAAa;IAE9B,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAC,CAAc;IAClC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,2BAA2B,CAAS;IAE5C,IAAI;YAmEU,aAAa;IA2C3B,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,2BAA2B;IAYnC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAsC3B,OAAO,IAAI,IAAI;CAahB"}
|