@iwsdk/core 0.5.2 → 1.0.0-rc.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 +22 -1
- package/dist/asset/asset-manager.d.ts.map +1 -1
- package/dist/asset/asset-manager.js +3 -2
- package/dist/asset/asset-manager.js.map +1 -1
- package/dist/camera/camera-system.d.ts +7 -3
- package/dist/camera/camera-system.d.ts.map +1 -1
- package/dist/camera/camera-system.js +81 -50
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/camera/camera-utils.d.ts +5 -0
- package/dist/camera/camera-utils.d.ts.map +1 -1
- package/dist/camera/camera-utils.js +8 -1
- package/dist/camera/camera-utils.js.map +1 -1
- package/dist/depth/depth-sensing-system.d.ts +3 -0
- package/dist/depth/depth-sensing-system.d.ts.map +1 -1
- package/dist/depth/depth-sensing-system.js +55 -1
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/ecs/world.d.ts +2 -0
- package/dist/ecs/world.d.ts.map +1 -1
- package/dist/ecs/world.js +4 -0
- package/dist/ecs/world.js.map +1 -1
- package/dist/grab/distance-grabbable.d.ts +5 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -1
- package/dist/grab/distance-grabbable.js +5 -0
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/handles.d.ts +6 -0
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +46 -12
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/one-hand-grabbable.d.ts +5 -0
- package/dist/grab/one-hand-grabbable.d.ts.map +1 -1
- package/dist/grab/one-hand-grabbable.js +5 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -1
- package/dist/grab/two-hands-grabbable.d.ts +5 -0
- package/dist/grab/two-hands-grabbable.d.ts.map +1 -1
- package/dist/grab/two-hands-grabbable.js +5 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/init/index.d.ts +2 -2
- package/dist/init/index.d.ts.map +1 -1
- package/dist/init/session-grant.d.ts +34 -0
- package/dist/init/session-grant.d.ts.map +1 -0
- package/dist/init/session-grant.js +89 -0
- package/dist/init/session-grant.js.map +1 -0
- package/dist/init/world-initializer.d.ts +87 -4
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +48 -43
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +19 -0
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +136 -41
- package/dist/init/xr.js.map +1 -1
- package/dist/input/canvas-pointer-system.d.ts +2 -0
- package/dist/input/canvas-pointer-system.d.ts.map +1 -1
- package/dist/input/canvas-pointer-system.js +33 -13
- package/dist/input/canvas-pointer-system.js.map +1 -1
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +5 -2
- package/dist/input/input-system.js.map +1 -1
- package/dist/layers/xr-cylinder-layer.d.ts +2 -1
- package/dist/layers/xr-cylinder-layer.d.ts.map +1 -1
- package/dist/layers/xr-cylinder-layer.js +2 -1
- package/dist/layers/xr-cylinder-layer.js.map +1 -1
- package/dist/layers/xr-layer-init.d.ts +19 -0
- package/dist/layers/xr-layer-init.d.ts.map +1 -0
- package/dist/layers/xr-layer-init.js +20 -0
- package/dist/layers/xr-layer-init.js.map +1 -0
- package/dist/layers/xr-layer-system.d.ts +41 -1
- package/dist/layers/xr-layer-system.d.ts.map +1 -1
- package/dist/layers/xr-layer-system.js +506 -132
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/layers/xr-layer-transform.d.ts +18 -0
- package/dist/layers/xr-layer-transform.d.ts.map +1 -0
- package/dist/layers/xr-layer-transform.js +115 -0
- package/dist/layers/xr-layer-transform.js.map +1 -0
- package/dist/layers/xr-quad-layer.d.ts +2 -1
- package/dist/layers/xr-quad-layer.d.ts.map +1 -1
- package/dist/layers/xr-quad-layer.js +2 -1
- package/dist/layers/xr-quad-layer.js.map +1 -1
- package/dist/level/level-component-applier.d.ts +2 -0
- package/dist/level/level-component-applier.d.ts.map +1 -1
- package/dist/level/level-component-applier.js +24 -5
- package/dist/level/level-component-applier.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.d.ts +4 -1
- package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
- package/dist/mcp/ecs-debug-tools.js +113 -10
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.d.ts +2 -0
- package/dist/mcp/mcp-runtime.d.ts.map +1 -1
- package/dist/mcp/mcp-runtime.js +41 -0
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/ui-debug-tools.d.ts +56 -0
- package/dist/mcp/ui-debug-tools.d.ts.map +1 -0
- package/dist/mcp/ui-debug-tools.js +412 -0
- package/dist/mcp/ui-debug-tools.js.map +1 -0
- package/dist/physics/index.js +1 -1
- package/dist/physics/physics-runtime.d.ts +22 -0
- package/dist/physics/physics-runtime.d.ts.map +1 -0
- package/dist/physics/physics-runtime.js +423 -0
- package/dist/physics/physics-runtime.js.map +1 -0
- package/dist/physics/physics-system.d.ts +84 -108
- package/dist/physics/physics-system.d.ts.map +1 -1
- package/dist/physics/physics-system.js +686 -555
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physics-transport.d.ts +20 -0
- package/dist/physics/physics-transport.d.ts.map +1 -0
- package/dist/physics/physics-transport.js +111 -0
- package/dist/physics/physics-transport.js.map +1 -0
- package/dist/physics/physics-worker-protocol.d.ts +144 -0
- package/dist/physics/physics-worker-protocol.d.ts.map +1 -0
- package/dist/physics/physics-worker-protocol.js +41 -0
- package/dist/physics/physics-worker-protocol.js.map +1 -0
- package/dist/physics/physics-worker-utils.d.ts +8 -0
- package/dist/physics/physics-worker-utils.d.ts.map +1 -0
- package/dist/physics/physics-worker-utils.js +12 -0
- package/dist/physics/physics-worker-utils.js.map +1 -0
- package/dist/physics/physics-worker.d.ts +8 -0
- package/dist/physics/physics-worker.d.ts.map +1 -0
- package/dist/physics/physics-worker.js +66 -0
- package/dist/physics/physics-worker.js.map +1 -0
- package/dist/project/normalize.js +7 -1
- package/dist/project/normalize.js.map +1 -1
- package/dist/project/types.d.ts +7 -1
- package/dist/project/types.d.ts.map +1 -1
- package/dist/project/validation.js +36 -2
- package/dist/project/validation.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.d.ts +42 -6
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +391 -106
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +20 -1
- package/dist/ui/follow.d.ts.map +1 -1
- package/dist/ui/follow.js +0 -1
- package/dist/ui/follow.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { Component } from '@pmndrs/uikit';
|
|
2
|
+
import { UIKitDocument } from '../ui/document.js';
|
|
3
|
+
import { PanelDocument } from '../ui/panel-components.js';
|
|
4
|
+
import { UIKitMLAsset } from '../ui/uikitml-asset.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the MIT license found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_LIMIT = 50;
|
|
13
|
+
const MAX_LIMIT = 50;
|
|
14
|
+
const MAX_PROPERTY_COUNT = 20;
|
|
15
|
+
const MAX_PROPERTY_NAME_LENGTH = 64;
|
|
16
|
+
const MAX_SELECTOR_LENGTH = 512;
|
|
17
|
+
const MAX_SELECTOR_PARTS = 16;
|
|
18
|
+
const MAX_TRAVERSED_OBJECTS = 10000;
|
|
19
|
+
const MAX_STRING_LENGTH = 200;
|
|
20
|
+
const MAX_SERIALIZED_DEPTH = 3;
|
|
21
|
+
const MAX_COLLECTION_ITEMS = 20;
|
|
22
|
+
const PROPERTY_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9]*$/u;
|
|
23
|
+
const DEFAULT_PROPERTIES = [
|
|
24
|
+
'text',
|
|
25
|
+
'value',
|
|
26
|
+
'disabled',
|
|
27
|
+
'checked',
|
|
28
|
+
'selected',
|
|
29
|
+
'display',
|
|
30
|
+
'visibility',
|
|
31
|
+
'pointerEvents',
|
|
32
|
+
];
|
|
33
|
+
/** Inspect stable, live UIKitML elements owned by one ECS panel entity. */
|
|
34
|
+
function uiInspect(world, params) {
|
|
35
|
+
var _a;
|
|
36
|
+
const { entityIndex, selector, properties, limit } = params;
|
|
37
|
+
if (!Number.isInteger(entityIndex) || entityIndex < 0) {
|
|
38
|
+
throw new Error('entityIndex must be a non-negative integer. Use ecs_find_entities to discover the panel entity.');
|
|
39
|
+
}
|
|
40
|
+
const normalizedSelector = normalizeSelector(selector);
|
|
41
|
+
const requestedProperties = normalizeProperties(properties);
|
|
42
|
+
const normalizedLimit = normalizeLimit(limit);
|
|
43
|
+
const entity = world.entityManager.getEntityByIndex(entityIndex);
|
|
44
|
+
if (!entity || !entity.active) {
|
|
45
|
+
throw new Error(`Entity ${entityIndex} not found or has been destroyed. Use ecs_find_entities to find active panel entities.`);
|
|
46
|
+
}
|
|
47
|
+
const document = findEntityUIKitDocument(entity);
|
|
48
|
+
if (!document) {
|
|
49
|
+
throw new Error(`Entity ${entityIndex} does not own a live UIKitML document. Choose an entity whose Object3D contains a UIKitMLAsset or PanelUI document.`);
|
|
50
|
+
}
|
|
51
|
+
const candidates = findLiveCandidates(document, normalizedSelector === null || normalizedSelector === void 0 ? void 0 : normalizedSelector.parts);
|
|
52
|
+
const elements = candidates
|
|
53
|
+
.slice(0, normalizedLimit)
|
|
54
|
+
.map((component) => inspectElement(component, requestedProperties, properties !== undefined));
|
|
55
|
+
const asset = findUIKitMLAsset(entity.object3D, entity.index);
|
|
56
|
+
return {
|
|
57
|
+
panel: {
|
|
58
|
+
entityIndex: entity.index,
|
|
59
|
+
name: ((_a = entity.object3D) === null || _a === void 0 ? void 0 : _a.name) || undefined,
|
|
60
|
+
assetId: asset === null || asset === void 0 ? void 0 : asset.assetId,
|
|
61
|
+
computedSize: document.computedSize,
|
|
62
|
+
targetSize: document.targetSize,
|
|
63
|
+
},
|
|
64
|
+
selector: normalizedSelector === null || normalizedSelector === void 0 ? void 0 : normalizedSelector.value,
|
|
65
|
+
elements,
|
|
66
|
+
total: candidates.length,
|
|
67
|
+
limited: candidates.length > normalizedLimit,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function normalizeSelector(value) {
|
|
71
|
+
if (value == null) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
if (typeof value !== 'string') {
|
|
75
|
+
throw new Error('selector must be a string');
|
|
76
|
+
}
|
|
77
|
+
const selector = value.trim();
|
|
78
|
+
if (selector.length === 0) {
|
|
79
|
+
throw new Error('selector must not be empty');
|
|
80
|
+
}
|
|
81
|
+
if (selector.length > MAX_SELECTOR_LENGTH) {
|
|
82
|
+
throw new Error(`selector allows at most ${MAX_SELECTOR_LENGTH} characters`);
|
|
83
|
+
}
|
|
84
|
+
const parts = selector.split(/\s+/u);
|
|
85
|
+
if (parts.length > MAX_SELECTOR_PARTS) {
|
|
86
|
+
throw new Error(`selector allows at most ${MAX_SELECTOR_PARTS} descendant parts`);
|
|
87
|
+
}
|
|
88
|
+
if (parts.some((part) => !/^[#.][A-Za-z0-9_-]+$/u.test(part))) {
|
|
89
|
+
throw new Error('selector supports only #id, .class, and descendant combinations of those selectors');
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
value: selector,
|
|
93
|
+
parts: parts.map((part) => ({
|
|
94
|
+
kind: part[0] === '#' ? 'id' : 'class',
|
|
95
|
+
value: part.slice(1),
|
|
96
|
+
})),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Traverse the current UIKit tree once and match descendant selectors without
|
|
101
|
+
* materializing overlapping subtree results. The object cap bounds both the
|
|
102
|
+
* unfiltered inventory and selector work on an unexpectedly large document.
|
|
103
|
+
*/
|
|
104
|
+
function findLiveCandidates(document, selectorParts) {
|
|
105
|
+
var _a;
|
|
106
|
+
const candidates = [];
|
|
107
|
+
const emptyPrefixes = (_a = selectorParts === null || selectorParts === void 0 ? void 0 : selectorParts.map(() => false)) !== null && _a !== void 0 ? _a : [];
|
|
108
|
+
const stack = [{ object: document.rootElement, matchedPrefixes: emptyPrefixes }];
|
|
109
|
+
let scheduledObjects = 1;
|
|
110
|
+
while (stack.length > 0) {
|
|
111
|
+
const { object, matchedPrefixes } = stack.pop();
|
|
112
|
+
let childPrefixes = matchedPrefixes;
|
|
113
|
+
if (object instanceof Component) {
|
|
114
|
+
if (selectorParts == null) {
|
|
115
|
+
if (getElementId(object) != null) {
|
|
116
|
+
candidates.push(object);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const id = getElementId(object);
|
|
121
|
+
const classes = new Set(getClassNames(object));
|
|
122
|
+
const nextPrefixes = [...matchedPrefixes];
|
|
123
|
+
let matchesFullSelector = false;
|
|
124
|
+
for (let index = 0; index < selectorParts.length; index += 1) {
|
|
125
|
+
const part = selectorParts[index];
|
|
126
|
+
const matchesPart = part.kind === 'id' ? id === part.value : classes.has(part.value);
|
|
127
|
+
const completesPrefix = matchesPart && (index === 0 || matchedPrefixes[index - 1]);
|
|
128
|
+
nextPrefixes[index] || (nextPrefixes[index] = completesPrefix);
|
|
129
|
+
if (index === selectorParts.length - 1) {
|
|
130
|
+
matchesFullSelector = completesPrefix;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (matchesFullSelector) {
|
|
134
|
+
candidates.push(object);
|
|
135
|
+
}
|
|
136
|
+
childPrefixes = nextPrefixes;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
for (let index = object.children.length - 1; index >= 0; index -= 1) {
|
|
140
|
+
scheduledObjects += 1;
|
|
141
|
+
if (scheduledObjects > MAX_TRAVERSED_OBJECTS) {
|
|
142
|
+
throw new Error(`UIKitML inspection allows at most ${MAX_TRAVERSED_OBJECTS} objects per document`);
|
|
143
|
+
}
|
|
144
|
+
stack.push({
|
|
145
|
+
object: object.children[index],
|
|
146
|
+
matchedPrefixes: childPrefixes,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return candidates;
|
|
151
|
+
}
|
|
152
|
+
function normalizeProperties(value) {
|
|
153
|
+
if (value == null) {
|
|
154
|
+
return [...DEFAULT_PROPERTIES];
|
|
155
|
+
}
|
|
156
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
157
|
+
throw new Error('properties must be a non-empty string array');
|
|
158
|
+
}
|
|
159
|
+
if (value.length > MAX_PROPERTY_COUNT) {
|
|
160
|
+
throw new Error(`properties allows at most ${MAX_PROPERTY_COUNT} items`);
|
|
161
|
+
}
|
|
162
|
+
const result = [];
|
|
163
|
+
for (const property of value) {
|
|
164
|
+
if (typeof property !== 'string' ||
|
|
165
|
+
property.length > MAX_PROPERTY_NAME_LENGTH ||
|
|
166
|
+
!PROPERTY_NAME_PATTERN.test(property)) {
|
|
167
|
+
throw new Error(`each property must be a camelCase name of at most ${MAX_PROPERTY_NAME_LENGTH} characters`);
|
|
168
|
+
}
|
|
169
|
+
if (!result.includes(property)) {
|
|
170
|
+
result.push(property);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
function normalizeLimit(value) {
|
|
176
|
+
if (value == null) {
|
|
177
|
+
return DEFAULT_LIMIT;
|
|
178
|
+
}
|
|
179
|
+
if (!Number.isInteger(value) ||
|
|
180
|
+
value < 1 ||
|
|
181
|
+
value > MAX_LIMIT) {
|
|
182
|
+
throw new Error(`limit must be an integer from 1 to ${MAX_LIMIT}`);
|
|
183
|
+
}
|
|
184
|
+
return value;
|
|
185
|
+
}
|
|
186
|
+
function inspectElement(component, requestedProperties, includeMissingProperties) {
|
|
187
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
188
|
+
const properties = {};
|
|
189
|
+
const missingProperties = [];
|
|
190
|
+
for (const property of requestedProperties) {
|
|
191
|
+
const inspected = readComputedProperty(component, property);
|
|
192
|
+
if (!inspected.found) {
|
|
193
|
+
missingProperties.push(property);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
properties[property] = serializeValue(inspected.value);
|
|
197
|
+
}
|
|
198
|
+
const id = getElementId(component);
|
|
199
|
+
const text = collectText(component);
|
|
200
|
+
const clipped = ((_a = component.isClipped) === null || _a === void 0 ? void 0 : _a.value) === true;
|
|
201
|
+
const disabled = readComputedProperty(component, 'disabled');
|
|
202
|
+
const displayed = ((_b = component.displayed) === null || _b === void 0 ? void 0 : _b.value) !== false;
|
|
203
|
+
const semanticVisible = ((_c = component.isVisible) === null || _c === void 0 ? void 0 : _c.value) !== false;
|
|
204
|
+
return {
|
|
205
|
+
id: typeof id === 'string' && id.length > 0 ? id : undefined,
|
|
206
|
+
classes: getClassNames(component),
|
|
207
|
+
componentType: component.constructor.name || component.type || 'UIKitComponent',
|
|
208
|
+
uuid: component.uuid,
|
|
209
|
+
text: text.length > 0 ? text : undefined,
|
|
210
|
+
state: {
|
|
211
|
+
active: ((_f = (_e = (_d = component.activeList) === null || _d === void 0 ? void 0 : _d.value) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0) > 0,
|
|
212
|
+
clipped,
|
|
213
|
+
disabled: disabled.found && disabled.value === true,
|
|
214
|
+
displayed,
|
|
215
|
+
hovered: ((_j = (_h = (_g = component.hoveredList) === null || _g === void 0 ? void 0 : _g.value) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0) > 0,
|
|
216
|
+
visible: isObjectHierarchyVisible(component) &&
|
|
217
|
+
semanticVisible &&
|
|
218
|
+
displayed &&
|
|
219
|
+
!clipped,
|
|
220
|
+
},
|
|
221
|
+
layout: {
|
|
222
|
+
relativeCenter: numberPair((_k = component.relativeCenter) === null || _k === void 0 ? void 0 : _k.value),
|
|
223
|
+
size: numberPair((_l = component.size) === null || _l === void 0 ? void 0 : _l.value),
|
|
224
|
+
},
|
|
225
|
+
properties,
|
|
226
|
+
...(includeMissingProperties && missingProperties.length > 0
|
|
227
|
+
? { missingProperties }
|
|
228
|
+
: {}),
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function readComputedProperty(component, property) {
|
|
232
|
+
var _a, _b;
|
|
233
|
+
if (Object.prototype.hasOwnProperty.call(Object.prototype, property)) {
|
|
234
|
+
return { found: false };
|
|
235
|
+
}
|
|
236
|
+
const value = (_b = (_a = component.properties) === null || _a === void 0 ? void 0 : _a.peek()) === null || _b === void 0 ? void 0 : _b[property];
|
|
237
|
+
if (value !== undefined) {
|
|
238
|
+
return { found: true, value };
|
|
239
|
+
}
|
|
240
|
+
return { found: false };
|
|
241
|
+
}
|
|
242
|
+
function collectText(component) {
|
|
243
|
+
var _a, _b;
|
|
244
|
+
const values = [];
|
|
245
|
+
const seen = new Set();
|
|
246
|
+
const stack = [component];
|
|
247
|
+
let collectedLength = 0;
|
|
248
|
+
let traversedObjects = 0;
|
|
249
|
+
while (stack.length > 0 &&
|
|
250
|
+
collectedLength < MAX_STRING_LENGTH &&
|
|
251
|
+
traversedObjects < MAX_TRAVERSED_OBJECTS) {
|
|
252
|
+
const object = stack.pop();
|
|
253
|
+
traversedObjects += 1;
|
|
254
|
+
if (object instanceof Component) {
|
|
255
|
+
const text = (_b = (_a = object.properties) === null || _a === void 0 ? void 0 : _a.peek()) === null || _b === void 0 ? void 0 : _b.text;
|
|
256
|
+
if (typeof text === 'string') {
|
|
257
|
+
const normalized = text.replace(/\s+/gu, ' ').trim();
|
|
258
|
+
if (normalized.length > 0 && !seen.has(normalized)) {
|
|
259
|
+
seen.add(normalized);
|
|
260
|
+
values.push(normalized);
|
|
261
|
+
collectedLength += normalized.length + (values.length > 1 ? 1 : 0);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
for (let index = object.children.length - 1; index >= 0; index -= 1) {
|
|
266
|
+
stack.push(object.children[index]);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return values.join(' ').slice(0, MAX_STRING_LENGTH);
|
|
270
|
+
}
|
|
271
|
+
function getElementId(component) {
|
|
272
|
+
var _a, _b;
|
|
273
|
+
const id = (_b = (_a = component.properties) === null || _a === void 0 ? void 0 : _a.peek()) === null || _b === void 0 ? void 0 : _b.id;
|
|
274
|
+
return typeof id === 'string' && id.length > 0 ? id : undefined;
|
|
275
|
+
}
|
|
276
|
+
function isObjectHierarchyVisible(component) {
|
|
277
|
+
// UIKit uses Object3D.visible internally to suppress renderless layout
|
|
278
|
+
// components. isVisible/displayed carry UIKit semantics; only inspect the
|
|
279
|
+
// document and ordinary Three.js ancestors here.
|
|
280
|
+
let object = component.parent;
|
|
281
|
+
while (object != null) {
|
|
282
|
+
if (!(object instanceof Component) && object.visible === false) {
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
object = object.parent;
|
|
286
|
+
}
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
function getClassNames(component) {
|
|
290
|
+
const list = component.classList.list;
|
|
291
|
+
return Array.isArray(list)
|
|
292
|
+
? list.filter((entry) => typeof entry === 'string' && !entry.startsWith('__id__'))
|
|
293
|
+
: [];
|
|
294
|
+
}
|
|
295
|
+
function numberPair(value) {
|
|
296
|
+
if (!Array.isArray(value) ||
|
|
297
|
+
value.length < 2 ||
|
|
298
|
+
typeof value[0] !== 'number' ||
|
|
299
|
+
typeof value[1] !== 'number' ||
|
|
300
|
+
!Number.isFinite(value[0]) ||
|
|
301
|
+
!Number.isFinite(value[1])) {
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
return [value[0], value[1]];
|
|
305
|
+
}
|
|
306
|
+
function findEntityUIKitDocument(entity) {
|
|
307
|
+
const hasPanelDocument = entity
|
|
308
|
+
.getComponents()
|
|
309
|
+
.some((component) => component === PanelDocument || component.id === PanelDocument.id);
|
|
310
|
+
if (hasPanelDocument) {
|
|
311
|
+
const componentDocument = entity.getValue(PanelDocument, 'document');
|
|
312
|
+
if (componentDocument instanceof UIKitDocument &&
|
|
313
|
+
!componentDocument.disposed) {
|
|
314
|
+
return componentDocument;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return findOwnedObject(entity.object3D, entity.index, (object) => {
|
|
318
|
+
if (object instanceof UIKitDocument) {
|
|
319
|
+
return object.disposed ? null : object;
|
|
320
|
+
}
|
|
321
|
+
if (object instanceof UIKitMLAsset) {
|
|
322
|
+
return object.document.disposed ? null : object.document;
|
|
323
|
+
}
|
|
324
|
+
return null;
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
function findUIKitMLAsset(object, entityIndex) {
|
|
328
|
+
return findOwnedObject(object, entityIndex, (candidate) => candidate instanceof UIKitMLAsset ? candidate : null);
|
|
329
|
+
}
|
|
330
|
+
function findOwnedObject(root, entityIndex, match) {
|
|
331
|
+
if (!root) {
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
const stack = [root];
|
|
335
|
+
while (stack.length > 0) {
|
|
336
|
+
const object = stack.pop();
|
|
337
|
+
if (object !== root &&
|
|
338
|
+
typeof object.entityIdx === 'number' &&
|
|
339
|
+
object.entityIdx !== entityIndex) {
|
|
340
|
+
continue;
|
|
341
|
+
}
|
|
342
|
+
const result = match(object);
|
|
343
|
+
if (result != null) {
|
|
344
|
+
return result;
|
|
345
|
+
}
|
|
346
|
+
for (let index = object.children.length - 1; index >= 0; index -= 1) {
|
|
347
|
+
stack.push(object.children[index]);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
function serializeValue(value, depth = 0, seen = new WeakSet()) {
|
|
353
|
+
if (value == null ||
|
|
354
|
+
typeof value === 'boolean' ||
|
|
355
|
+
typeof value === 'string') {
|
|
356
|
+
return typeof value === 'string' && value.length > MAX_STRING_LENGTH
|
|
357
|
+
? `${value.slice(0, MAX_STRING_LENGTH)}...`
|
|
358
|
+
: value;
|
|
359
|
+
}
|
|
360
|
+
if (typeof value === 'number') {
|
|
361
|
+
return Number.isFinite(value) ? value : String(value);
|
|
362
|
+
}
|
|
363
|
+
if (typeof value === 'function') {
|
|
364
|
+
return '<function>';
|
|
365
|
+
}
|
|
366
|
+
if (typeof value !== 'object') {
|
|
367
|
+
return String(value);
|
|
368
|
+
}
|
|
369
|
+
if (value.isObject3D) {
|
|
370
|
+
const object = value;
|
|
371
|
+
return `<Object3D:${object.name || object.type || 'unnamed'}>`;
|
|
372
|
+
}
|
|
373
|
+
if (seen.has(value)) {
|
|
374
|
+
return '<circular>';
|
|
375
|
+
}
|
|
376
|
+
if (depth >= MAX_SERIALIZED_DEPTH) {
|
|
377
|
+
return '<object>';
|
|
378
|
+
}
|
|
379
|
+
seen.add(value);
|
|
380
|
+
if (ArrayBuffer.isView(value) && 'length' in value) {
|
|
381
|
+
const array = value;
|
|
382
|
+
const values = Array.from({ length: Math.min(array.length, MAX_COLLECTION_ITEMS) }, (_, index) => array[index]);
|
|
383
|
+
const result = array.length > MAX_COLLECTION_ITEMS
|
|
384
|
+
? { values, truncated: true, totalLength: array.length }
|
|
385
|
+
: values;
|
|
386
|
+
seen.delete(value);
|
|
387
|
+
return result;
|
|
388
|
+
}
|
|
389
|
+
if (Array.isArray(value)) {
|
|
390
|
+
const values = value
|
|
391
|
+
.slice(0, MAX_COLLECTION_ITEMS)
|
|
392
|
+
.map((entry) => serializeValue(entry, depth + 1, seen));
|
|
393
|
+
const result = value.length > MAX_COLLECTION_ITEMS
|
|
394
|
+
? { values, truncated: true, totalLength: value.length }
|
|
395
|
+
: values;
|
|
396
|
+
seen.delete(value);
|
|
397
|
+
return result;
|
|
398
|
+
}
|
|
399
|
+
const result = {};
|
|
400
|
+
const keys = Object.keys(value);
|
|
401
|
+
for (const key of keys.slice(0, MAX_COLLECTION_ITEMS)) {
|
|
402
|
+
result[key] = serializeValue(value[key], depth + 1, seen);
|
|
403
|
+
}
|
|
404
|
+
if (keys.length > MAX_COLLECTION_ITEMS) {
|
|
405
|
+
result['...'] = `${keys.length - MAX_COLLECTION_ITEMS} more keys`;
|
|
406
|
+
}
|
|
407
|
+
seen.delete(value);
|
|
408
|
+
return result;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
export { uiInspect };
|
|
412
|
+
//# sourceMappingURL=ui-debug-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-debug-tools.js","sources":["../../src/mcp/ui-debug-tools.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/physics/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { PhysicsSystem } from './physics-system.js';
|
|
2
|
-
export { getCapsuleAxisEndpoints } from './physics-system.js';
|
|
3
2
|
import { PhysicsBody } from './physicsBody.js';
|
|
4
3
|
export { DEFAULT_ANGULAR_DAMPING, DEFAULT_GRAVITY_FACTOR, DEFAULT_LINEAR_DAMPING, PhysicsState } from './physicsBody.js';
|
|
5
4
|
import { PhysicsManipulation } from './physicsManipulation.js';
|
|
6
5
|
import { PhysicsShape } from './physicsShape.js';
|
|
7
6
|
export { DEFAULT_DENSITY, DEFAULT_FRICTION, DEFAULT_RESTITUTION, PhysicsShapeType } from './physicsShape.js';
|
|
7
|
+
export { getCapsuleAxisEndpoints } from './physics-worker-protocol.js';
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { type PhysicsWorkerAddBodyMessage } from './physics-worker-protocol.js';
|
|
8
|
+
export interface PhysicsRuntimeStepResult {
|
|
9
|
+
buffer: ArrayBuffer;
|
|
10
|
+
error?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Shared Havok runtime used by both main-thread and worker transports. */
|
|
13
|
+
export declare class PhysicsRuntime {
|
|
14
|
+
private readonly state;
|
|
15
|
+
initialize(gravity: [number, number, number]): Promise<void>;
|
|
16
|
+
setGravity(gravity: [number, number, number]): void;
|
|
17
|
+
addBody(message: PhysicsWorkerAddBodyMessage): [number, number, number];
|
|
18
|
+
removeBody(handle: number): void;
|
|
19
|
+
step(buffer: ArrayBuffer): PhysicsRuntimeStepResult;
|
|
20
|
+
destroy(): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=physics-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics-runtime.d.ts","sourceRoot":"","sources":["../../src/physics/physics-runtime.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAYL,KAAK,2BAA2B,EAGjC,MAAM,8BAA8B,CAAC;AAgdtC,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGpB;IAEF,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAKnD,OAAO,CAAC,OAAO,EAAE,2BAA2B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIvE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,wBAAwB;IA2BnD,OAAO,IAAI,IAAI;CAgBhB"}
|