@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.2
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/dist/asset/asset-manager.js.map +1 -1
- package/dist/asset/cache-manager.js.map +1 -1
- package/dist/asset/loaders/audio-loader.js.map +1 -1
- package/dist/asset/loaders/cached-asset-load.js.map +1 -1
- package/dist/asset/loaders/gltf-loader.js.map +1 -1
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
- package/dist/asset/loaders/texture-loader.js.map +1 -1
- package/dist/asset/loaders/uikitml-loader.js.map +1 -1
- package/dist/audio/audio-pool.js.map +1 -1
- package/dist/audio/audio-system.js.map +1 -1
- package/dist/audio/audio-utils.js.map +1 -1
- package/dist/audio/audio.js.map +1 -1
- package/dist/camera/camera-source.js.map +1 -1
- package/dist/camera/camera-system.js.map +1 -1
- package/dist/camera/camera-utils.js.map +1 -1
- package/dist/camera/types.js.map +1 -1
- package/dist/depth/depth-occludable.js.map +1 -1
- package/dist/depth/depth-sensing-system.js.map +1 -1
- package/dist/depth/depth-textures.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
- package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
- package/dist/ecs/builtin-components.js.map +1 -1
- package/dist/ecs/component-editor-metadata.js.map +1 -1
- package/dist/ecs/component-manifest.js.map +1 -1
- package/dist/ecs/entity.js.map +1 -1
- package/dist/ecs/system.js.map +1 -1
- package/dist/ecs/world.js.map +1 -1
- package/dist/environment/dome-gradient.js.map +1 -1
- package/dist/environment/dome-texture.js.map +1 -1
- package/dist/environment/environment-system.js.map +1 -1
- package/dist/environment/gradient-environment.js.map +1 -1
- package/dist/environment/ibl-gradient.js.map +1 -1
- package/dist/environment/ibl-texture.js.map +1 -1
- package/dist/environment/scene-ar-environment.js.map +1 -1
- package/dist/environment-raycast/environment-raycast.js.map +1 -1
- package/dist/environment-raycast/raycast-target.js.map +1 -1
- package/dist/gaze/gaze-system.d.ts +207 -0
- package/dist/gaze/gaze-system.d.ts.map +1 -0
- package/dist/gaze/gaze-system.js +168 -0
- package/dist/gaze/gaze-system.js.map +1 -0
- package/dist/gaze/index.d.ts +8 -0
- package/dist/gaze/index.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.d.ts +7 -6
- package/dist/grab/grab-helpers.d.ts.map +1 -1
- package/dist/grab/grab-helpers.js +12 -7
- package/dist/grab/grab-helpers.js.map +1 -1
- package/dist/grab/grab-system.d.ts.map +1 -1
- package/dist/grab/grab-system.js +2 -1
- package/dist/grab/grab-system.js.map +1 -1
- package/dist/grab/grab-warnings.js.map +1 -1
- package/dist/grab/grabbed.js.map +1 -1
- package/dist/grab/handles.d.ts +10 -1
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +29 -6
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/index.js.map +1 -1
- package/dist/grab/one-hand-grabbable.js.map +1 -1
- package/dist/grab/pointer-events-patch.js.map +1 -1
- package/dist/grab/two-hands-grabbable.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/init/browser-camera.js.map +1 -1
- package/dist/init/player-camera.js.map +1 -1
- package/dist/init/session-grant.js.map +1 -1
- package/dist/init/world-initializer.d.ts +49 -0
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +23 -11
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/init/xr.d.ts +14 -0
- package/dist/init/xr.d.ts.map +1 -1
- package/dist/init/xr.js +19 -0
- package/dist/init/xr.js.map +1 -1
- package/dist/input/canvas-pointer-system.js.map +1 -1
- package/dist/input/input-actions.js.map +1 -1
- package/dist/input/input-manager.js.map +1 -1
- package/dist/input/input-system.d.ts +3 -0
- package/dist/input/input-system.d.ts.map +1 -1
- package/dist/input/input-system.js +72 -6
- package/dist/input/input-system.js.map +1 -1
- package/dist/input/state-tags.d.ts.map +1 -1
- package/dist/input/state-tags.js +2 -0
- package/dist/input/state-tags.js.map +1 -1
- package/dist/input/stateful-browser-gamepad.js.map +1 -1
- package/dist/input/stateful-keyboard.js.map +1 -1
- package/dist/layers/xr-cylinder-layer.js.map +1 -1
- package/dist/layers/xr-layer-init.js.map +1 -1
- package/dist/layers/xr-layer-state.js.map +1 -1
- package/dist/layers/xr-layer-system.js.map +1 -1
- package/dist/layers/xr-layer-transform.js.map +1 -1
- package/dist/layers/xr-quad-layer.js.map +1 -1
- package/dist/level/level-component-applier.js.map +1 -1
- package/dist/level/level-player-rig.js.map +1 -1
- package/dist/level/level-root.js.map +1 -1
- package/dist/level/level-scene-environment.js.map +1 -1
- package/dist/level/level-scene-json-importer.js.map +1 -1
- package/dist/level/level-scene-material.js.map +1 -1
- package/dist/level/level-scene-object.js.map +1 -1
- package/dist/level/level-scene-primitive.js.map +1 -1
- package/dist/level/level-system.js.map +1 -1
- package/dist/level/level-tag.js.map +1 -1
- package/dist/lighting/light-binding.js.map +1 -1
- package/dist/lighting/light-components.js.map +1 -1
- package/dist/lighting/light-system.js.map +1 -1
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
- package/dist/locomotion/locomotion-environment.js.map +1 -1
- package/dist/locomotion/locomotion-input-provider.js.map +1 -1
- package/dist/locomotion/locomotion.js.map +1 -1
- package/dist/locomotion/materials/line.js.map +1 -1
- package/dist/locomotion/slide.js.map +1 -1
- package/dist/locomotion/teleport.js.map +1 -1
- package/dist/locomotion/turn.js.map +1 -1
- package/dist/mcp/ecs-debug-tools.js.map +1 -1
- package/dist/mcp/mcp-runtime.js.map +1 -1
- package/dist/mcp/scene-tools.js.map +1 -1
- package/dist/mcp/ui-debug-tools.js.map +1 -1
- package/dist/physics/physics-runtime.js.map +1 -1
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physics-transport.js.map +1 -1
- package/dist/physics/physics-worker-protocol.js.map +1 -1
- package/dist/physics/physics-worker-utils.js.map +1 -1
- package/dist/physics/physics-worker.js.map +1 -1
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/physics/physicsManipulation.js.map +1 -1
- package/dist/physics/physicsShape.js.map +1 -1
- package/dist/physics/utils.js.map +1 -1
- package/dist/project/normalize.d.ts.map +1 -1
- package/dist/project/normalize.js +11 -0
- package/dist/project/normalize.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.d.ts +32 -2
- package/dist/project/types.d.ts.map +1 -1
- package/dist/project/types.js.map +1 -1
- package/dist/project/validation.d.ts.map +1 -1
- package/dist/project/validation.js +65 -1
- package/dist/project/validation.js.map +1 -1
- package/dist/runtime/three.js.map +1 -1
- package/dist/scene-understanding/anchor.js.map +1 -1
- package/dist/scene-understanding/mesh.js.map +1 -1
- package/dist/scene-understanding/plane.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/schemas/iwsdk-project.v1.schema.json +45 -3
- package/dist/transform/synced-euler.js.map +1 -1
- package/dist/transform/synced-quaternion.js.map +1 -1
- package/dist/transform/synced-vector3.js.map +1 -1
- package/dist/transform/transform-component.js.map +1 -1
- package/dist/transform/transform-utils.js.map +1 -1
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/document.js.map +1 -1
- package/dist/ui/follow-component.js.map +1 -1
- package/dist/ui/follow.js.map +1 -1
- package/dist/ui/panel-components.js.map +1 -1
- package/dist/ui/screenspace-component.js.map +1 -1
- package/dist/ui/screenspace.js.map +1 -1
- package/dist/ui/ui.js.map +1 -1
- package/dist/ui/uikitml-asset.js.map +1 -1
- package/dist/ui/uikitml.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/visibility/visibility-component.js.map +1 -1
- package/dist/visibility/visibility.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-debug-tools.js","sources":["../../src/mcp/ui-debug-tools.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-debug-tools.js","sources":["../../src/mcp/ui-debug-tools.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Component } from '@pmndrs/uikit';\nimport type { Entity } from '../ecs/entity.js';\nimport type { World } from '../ecs/world.js';\nimport type { Object3D } from '../runtime/index.js';\nimport { UIKitDocument } from '../ui/document.js';\nimport { PanelDocument } from '../ui/panel-components.js';\nimport { UIKitMLAsset } from '../ui/uikitml-asset.js';\n\nconst DEFAULT_LIMIT = 50;\nconst MAX_LIMIT = 50;\nconst MAX_PROPERTY_COUNT = 20;\nconst MAX_PROPERTY_NAME_LENGTH = 64;\nconst MAX_SELECTOR_LENGTH = 512;\nconst MAX_SELECTOR_PARTS = 16;\nconst MAX_TRAVERSED_OBJECTS = 10_000;\nconst MAX_STRING_LENGTH = 200;\nconst MAX_SERIALIZED_DEPTH = 3;\nconst MAX_COLLECTION_ITEMS = 20;\nconst PROPERTY_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9]*$/u;\n\nconst DEFAULT_PROPERTIES = [\n 'text',\n 'value',\n 'disabled',\n 'checked',\n 'selected',\n 'display',\n 'visibility',\n 'pointerEvents',\n] as const;\n\nexport interface UiInspectParams {\n entityIndex: number;\n selector?: string;\n properties?: string[];\n limit?: number;\n}\n\nexport interface UiElementInspection {\n id?: string;\n classes: string[];\n componentType: string;\n uuid: string;\n text?: string;\n state: {\n active: boolean;\n clipped: boolean;\n disabled: boolean;\n displayed: boolean;\n hovered: boolean;\n visible: boolean;\n };\n layout: {\n relativeCenter: [number, number] | null;\n size: [number, number] | null;\n };\n properties: Record<string, unknown>;\n missingProperties?: string[];\n}\n\nexport interface UiInspectResult {\n panel: {\n entityIndex: number;\n name?: string;\n assetId?: string;\n computedSize: { width: number; height: number } | null;\n targetSize: { width: number; height: number };\n };\n selector?: string;\n elements: UiElementInspection[];\n total: number;\n limited: boolean;\n}\n\ninterface SelectorPart {\n kind: 'class' | 'id';\n value: string;\n}\n\n/** Inspect stable, live UIKitML elements owned by one ECS panel entity. */\nexport function uiInspect(\n world: World,\n params: Record<string, unknown>,\n): UiInspectResult {\n const { entityIndex, selector, properties, limit } =\n params as unknown as Partial<UiInspectParams>;\n\n if (!Number.isInteger(entityIndex) || (entityIndex as number) < 0) {\n throw new Error(\n 'entityIndex must be a non-negative integer. Use ecs_find_entities to discover the panel entity.',\n );\n }\n\n const normalizedSelector = normalizeSelector(selector);\n const requestedProperties = normalizeProperties(properties);\n const normalizedLimit = normalizeLimit(limit);\n\n const entity = world.entityManager.getEntityByIndex(entityIndex as number);\n if (!entity || !entity.active) {\n throw new Error(\n `Entity ${entityIndex} not found or has been destroyed. Use ecs_find_entities to find active panel entities.`,\n );\n }\n\n const document = findEntityUIKitDocument(entity);\n if (!document) {\n throw new Error(\n `Entity ${entityIndex} does not own a live UIKitML document. Choose an entity whose Object3D contains a UIKitMLAsset or PanelUI document.`,\n );\n }\n\n const candidates = findLiveCandidates(document, normalizedSelector?.parts);\n const elements = candidates\n .slice(0, normalizedLimit)\n .map((component) =>\n inspectElement(component, requestedProperties, properties !== undefined),\n );\n const asset = findUIKitMLAsset(entity.object3D, entity.index);\n\n return {\n panel: {\n entityIndex: entity.index,\n name: entity.object3D?.name || undefined,\n assetId: asset?.assetId,\n computedSize: document.computedSize,\n targetSize: document.targetSize,\n },\n selector: normalizedSelector?.value,\n elements,\n total: candidates.length,\n limited: candidates.length > normalizedLimit,\n };\n}\n\nfunction normalizeSelector(\n value: unknown,\n): { value: string; parts: SelectorPart[] } | undefined {\n if (value == null) {\n return undefined;\n }\n if (typeof value !== 'string') {\n throw new Error('selector must be a string');\n }\n const selector = value.trim();\n if (selector.length === 0) {\n throw new Error('selector must not be empty');\n }\n if (selector.length > MAX_SELECTOR_LENGTH) {\n throw new Error(\n `selector allows at most ${MAX_SELECTOR_LENGTH} characters`,\n );\n }\n const parts = selector.split(/\\s+/u);\n if (parts.length > MAX_SELECTOR_PARTS) {\n throw new Error(\n `selector allows at most ${MAX_SELECTOR_PARTS} descendant parts`,\n );\n }\n if (parts.some((part) => !/^[#.][A-Za-z0-9_-]+$/u.test(part))) {\n throw new Error(\n 'selector supports only #id, .class, and descendant combinations of those selectors',\n );\n }\n return {\n value: selector,\n parts: parts.map((part) => ({\n kind: part[0] === '#' ? 'id' : 'class',\n value: part.slice(1),\n })),\n };\n}\n\n/**\n * Traverse the current UIKit tree once and match descendant selectors without\n * materializing overlapping subtree results. The object cap bounds both the\n * unfiltered inventory and selector work on an unexpectedly large document.\n */\nfunction findLiveCandidates(\n document: UIKitDocument,\n selectorParts?: SelectorPart[],\n): Component<any>[] {\n const candidates: Component<any>[] = [];\n const emptyPrefixes = selectorParts?.map(() => false) ?? [];\n const stack: Array<{\n object: Object3D;\n matchedPrefixes: readonly boolean[];\n }> = [{ object: document.rootElement, matchedPrefixes: emptyPrefixes }];\n let scheduledObjects = 1;\n\n while (stack.length > 0) {\n const { object, matchedPrefixes } = stack.pop()!;\n let childPrefixes = matchedPrefixes;\n\n if (object instanceof Component) {\n if (selectorParts == null) {\n if (getElementId(object) != null) {\n candidates.push(object);\n }\n } else {\n const id = getElementId(object);\n const classes = new Set(getClassNames(object));\n const nextPrefixes = [...matchedPrefixes];\n let matchesFullSelector = false;\n\n for (let index = 0; index < selectorParts.length; index += 1) {\n const part = selectorParts[index];\n const matchesPart =\n part.kind === 'id' ? id === part.value : classes.has(part.value);\n const completesPrefix =\n matchesPart && (index === 0 || matchedPrefixes[index - 1]);\n nextPrefixes[index] ||= completesPrefix;\n if (index === selectorParts.length - 1) {\n matchesFullSelector = completesPrefix;\n }\n }\n\n if (matchesFullSelector) {\n candidates.push(object);\n }\n childPrefixes = nextPrefixes;\n }\n }\n\n for (let index = object.children.length - 1; index >= 0; index -= 1) {\n scheduledObjects += 1;\n if (scheduledObjects > MAX_TRAVERSED_OBJECTS) {\n throw new Error(\n `UIKitML inspection allows at most ${MAX_TRAVERSED_OBJECTS} objects per document`,\n );\n }\n stack.push({\n object: object.children[index],\n matchedPrefixes: childPrefixes,\n });\n }\n }\n\n return candidates;\n}\n\nfunction normalizeProperties(value: unknown): string[] {\n if (value == null) {\n return [...DEFAULT_PROPERTIES];\n }\n if (!Array.isArray(value) || value.length === 0) {\n throw new Error('properties must be a non-empty string array');\n }\n if (value.length > MAX_PROPERTY_COUNT) {\n throw new Error(`properties allows at most ${MAX_PROPERTY_COUNT} items`);\n }\n const result: string[] = [];\n for (const property of value) {\n if (\n typeof property !== 'string' ||\n property.length > MAX_PROPERTY_NAME_LENGTH ||\n !PROPERTY_NAME_PATTERN.test(property)\n ) {\n throw new Error(\n `each property must be a camelCase name of at most ${MAX_PROPERTY_NAME_LENGTH} characters`,\n );\n }\n if (!result.includes(property)) {\n result.push(property);\n }\n }\n return result;\n}\n\nfunction normalizeLimit(value: unknown): number {\n if (value == null) {\n return DEFAULT_LIMIT;\n }\n if (\n !Number.isInteger(value) ||\n (value as number) < 1 ||\n (value as number) > MAX_LIMIT\n ) {\n throw new Error(`limit must be an integer from 1 to ${MAX_LIMIT}`);\n }\n return value as number;\n}\n\nfunction inspectElement(\n component: Component<any>,\n requestedProperties: string[],\n includeMissingProperties: boolean,\n): UiElementInspection {\n const properties: Record<string, unknown> = {};\n const missingProperties: string[] = [];\n for (const property of requestedProperties) {\n const inspected = readComputedProperty(component, property);\n if (!inspected.found) {\n missingProperties.push(property);\n continue;\n }\n properties[property] = serializeValue(inspected.value);\n }\n\n const id = getElementId(component);\n const text = collectText(component);\n const clipped = component.isClipped?.value === true;\n const disabled = readComputedProperty(component, 'disabled');\n const displayed = component.displayed?.value !== false;\n const semanticVisible = component.isVisible?.value !== false;\n\n return {\n id: typeof id === 'string' && id.length > 0 ? id : undefined,\n classes: getClassNames(component),\n componentType:\n component.constructor.name || component.type || 'UIKitComponent',\n uuid: component.uuid,\n text: text.length > 0 ? text : undefined,\n state: {\n active: (component.activeList?.value?.length ?? 0) > 0,\n clipped,\n disabled: disabled.found && disabled.value === true,\n displayed,\n hovered: (component.hoveredList?.value?.length ?? 0) > 0,\n visible:\n isObjectHierarchyVisible(component) &&\n semanticVisible &&\n displayed &&\n !clipped,\n },\n layout: {\n relativeCenter: numberPair(component.relativeCenter?.value),\n size: numberPair(component.size?.value),\n },\n properties,\n ...(includeMissingProperties && missingProperties.length > 0\n ? { missingProperties }\n : {}),\n };\n}\n\nfunction readComputedProperty(\n component: Component<any>,\n property: string,\n): { found: true; value: unknown } | { found: false } {\n if (Object.prototype.hasOwnProperty.call(Object.prototype, property)) {\n return { found: false };\n }\n const value = (\n component.properties?.peek() as Record<string, unknown> | undefined\n )?.[property];\n if (value !== undefined) {\n return { found: true, value };\n }\n\n return { found: false };\n}\n\nfunction collectText(component: Component<any>): string {\n const values: string[] = [];\n const seen = new Set<string>();\n const stack: Object3D[] = [component];\n let collectedLength = 0;\n let traversedObjects = 0;\n\n while (\n stack.length > 0 &&\n collectedLength < MAX_STRING_LENGTH &&\n traversedObjects < MAX_TRAVERSED_OBJECTS\n ) {\n const object = stack.pop()!;\n traversedObjects += 1;\n if (object instanceof Component) {\n const text = (\n object.properties?.peek() as Record<string, unknown> | undefined\n )?.text;\n if (typeof text === 'string') {\n const normalized = text.replace(/\\s+/gu, ' ').trim();\n if (normalized.length > 0 && !seen.has(normalized)) {\n seen.add(normalized);\n values.push(normalized);\n collectedLength += normalized.length + (values.length > 1 ? 1 : 0);\n }\n }\n }\n\n for (let index = object.children.length - 1; index >= 0; index -= 1) {\n stack.push(object.children[index]);\n }\n }\n\n return values.join(' ').slice(0, MAX_STRING_LENGTH);\n}\n\nfunction getElementId(component: Component<any>): string | undefined {\n const id = (\n component.properties?.peek() as Record<string, unknown> | undefined\n )?.id;\n return typeof id === 'string' && id.length > 0 ? id : undefined;\n}\n\nfunction isObjectHierarchyVisible(component: Component<any>): boolean {\n // UIKit uses Object3D.visible internally to suppress renderless layout\n // components. isVisible/displayed carry UIKit semantics; only inspect the\n // document and ordinary Three.js ancestors here.\n let object: Object3D | null = component.parent;\n while (object != null) {\n if (!(object instanceof Component) && object.visible === false) {\n return false;\n }\n object = object.parent;\n }\n return true;\n}\n\nfunction getClassNames(component: Component<any>): string[] {\n const list = (component.classList as unknown as { list?: unknown[] }).list;\n return Array.isArray(list)\n ? list.filter(\n (entry): entry is string =>\n typeof entry === 'string' && !entry.startsWith('__id__'),\n )\n : [];\n}\n\nfunction numberPair(value: unknown): [number, number] | null {\n if (\n !Array.isArray(value) ||\n value.length < 2 ||\n typeof value[0] !== 'number' ||\n typeof value[1] !== 'number' ||\n !Number.isFinite(value[0]) ||\n !Number.isFinite(value[1])\n ) {\n return null;\n }\n return [value[0], value[1]];\n}\n\nfunction findEntityUIKitDocument(entity: Entity): UIKitDocument | null {\n const hasPanelDocument = entity\n .getComponents()\n .some(\n (component) =>\n component === PanelDocument || component.id === PanelDocument.id,\n );\n if (hasPanelDocument) {\n const componentDocument = entity.getValue(\n PanelDocument,\n 'document',\n ) as UIKitDocument | null;\n if (\n componentDocument instanceof UIKitDocument &&\n !componentDocument.disposed\n ) {\n return componentDocument;\n }\n }\n\n return findOwnedObject(entity.object3D, entity.index, (object) => {\n if (object instanceof UIKitDocument) {\n return object.disposed ? null : object;\n }\n if (object instanceof UIKitMLAsset) {\n return object.document.disposed ? null : object.document;\n }\n return null;\n });\n}\n\nfunction findUIKitMLAsset(\n object: Object3D | null | undefined,\n entityIndex: number,\n): UIKitMLAsset | null {\n return findOwnedObject(object, entityIndex, (candidate) =>\n candidate instanceof UIKitMLAsset ? candidate : null,\n );\n}\n\nfunction findOwnedObject<T>(\n root: Object3D | null | undefined,\n entityIndex: number,\n match: (object: Object3D) => T | null,\n): T | null {\n if (!root) {\n return null;\n }\n const stack = [root];\n while (stack.length > 0) {\n const object = stack.pop()!;\n if (\n object !== root &&\n typeof object.entityIdx === 'number' &&\n object.entityIdx !== entityIndex\n ) {\n continue;\n }\n const result = match(object);\n if (result != null) {\n return result;\n }\n for (let index = object.children.length - 1; index >= 0; index -= 1) {\n stack.push(object.children[index]);\n }\n }\n return null;\n}\n\nfunction serializeValue(\n value: unknown,\n depth = 0,\n seen: WeakSet<object> = new WeakSet(),\n): unknown {\n if (\n value == null ||\n typeof value === 'boolean' ||\n typeof value === 'string'\n ) {\n return typeof value === 'string' && value.length > MAX_STRING_LENGTH\n ? `${value.slice(0, MAX_STRING_LENGTH)}...`\n : value;\n }\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : String(value);\n }\n if (typeof value === 'function') {\n return '<function>';\n }\n if (typeof value !== 'object') {\n return String(value);\n }\n if ((value as { isObject3D?: boolean }).isObject3D) {\n const object = value as { name?: string; type?: string };\n return `<Object3D:${object.name || object.type || 'unnamed'}>`;\n }\n if (seen.has(value)) {\n return '<circular>';\n }\n if (depth >= MAX_SERIALIZED_DEPTH) {\n return '<object>';\n }\n seen.add(value);\n if (ArrayBuffer.isView(value) && 'length' in value) {\n const array = value as unknown as ArrayLike<number>;\n const values = Array.from(\n { length: Math.min(array.length, MAX_COLLECTION_ITEMS) },\n (_, index) => array[index],\n );\n const result =\n array.length > MAX_COLLECTION_ITEMS\n ? { values, truncated: true, totalLength: array.length }\n : values;\n seen.delete(value);\n return result;\n }\n if (Array.isArray(value)) {\n const values = value\n .slice(0, MAX_COLLECTION_ITEMS)\n .map((entry) => serializeValue(entry, depth + 1, seen));\n const result =\n value.length > MAX_COLLECTION_ITEMS\n ? { values, truncated: true, totalLength: value.length }\n : values;\n seen.delete(value);\n return result;\n }\n const result: Record<string, unknown> = {};\n const keys = Object.keys(value);\n for (const key of keys.slice(0, MAX_COLLECTION_ITEMS)) {\n result[key] = serializeValue(\n (value as Record<string, unknown>)[key],\n depth + 1,\n seen,\n );\n }\n if (keys.length > MAX_COLLECTION_ITEMS) {\n result['...'] = `${keys.length - MAX_COLLECTION_ITEMS} more keys`;\n }\n seen.delete(value);\n return result;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics-runtime.js","sources":["../../src/physics/physics-runtime.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"physics-runtime.js","sources":["../../src/physics/physics-runtime.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport HavokPhysics, {\n type HavokPhysicsWithBindings,\n type HP_BodyId,\n type HP_ShapeId,\n type HP_WorldId,\n type MassProperties,\n type MotionType,\n} from '@babylonjs/havok';\nimport {\n getCapsuleAxisEndpoints,\n PHYSICS_HEADER_BYTES,\n PHYSICS_HEADER_WORDS,\n PHYSICS_INPUT_RECORD_FLOATS,\n PHYSICS_OUTPUT_RECORD_FLOATS,\n PHYSICS_PROTOCOL_VERSION,\n PhysicsCommandFlag,\n PhysicsExchangeStatus,\n PhysicsHeaderIndex,\n PhysicsInputOffset,\n PhysicsOutputOffset,\n type PhysicsWorkerAddBodyMessage,\n type PhysicsWorkerBodyState,\n type PhysicsWorkerShapeDescriptor,\n} from './physics-worker-protocol.js';\nimport { reusableFloat32View } from './physics-worker-utils.js';\n\ninterface WorkerBody {\n body: HP_BodyId;\n shape: HP_ShapeId;\n transformOffset: number;\n state: PhysicsWorkerBodyState;\n}\n\ninterface PhysicsRuntimeState {\n havok?: HavokPhysicsWithBindings;\n havokWorld?: HP_WorldId;\n heapFloatView?: Float32Array;\n initializePromise?: Promise<void>;\n bodies: Map<number, WorkerBody>;\n destroyed: boolean;\n}\n\nasync function initialize(\n state: PhysicsRuntimeState,\n gravity: [number, number, number],\n): Promise<void> {\n if (state.destroyed) {\n throw new Error('Physics runtime has been destroyed');\n }\n if (!state.initializePromise) {\n state.initializePromise = (async () => {\n const engine = await HavokPhysics();\n if (state.destroyed) {\n throw new Error('Physics runtime was destroyed during initialization');\n }\n const world = engine.HP_World_Create()[1];\n try {\n engine.HP_World_SetGravity(world, gravity);\n } catch (error) {\n engine.HP_World_Release(world);\n throw error;\n }\n state.havok = engine;\n state.havokWorld = world;\n })();\n }\n await state.initializePromise;\n}\n\nfunction requireHavok(\n state: PhysicsRuntimeState,\n): [HavokPhysicsWithBindings, HP_WorldId] {\n if (!state.havok || !state.havokWorld) {\n throw new Error('Physics runtime received a message before initialization');\n }\n return [state.havok, state.havokWorld];\n}\n\nfunction getHeapFloatView(\n state: PhysicsRuntimeState,\n engine: HavokPhysicsWithBindings,\n): Float32Array {\n state.heapFloatView = reusableFloat32View(\n state.heapFloatView,\n engine.HEAPU8.buffer,\n );\n return state.heapFloatView;\n}\n\nfunction copyFloat32ToHeap(\n engine: HavokPhysicsWithBindings,\n source: Float32Array,\n): number {\n const offset = engine._malloc(source.byteLength);\n new Float32Array(engine.HEAPU8.buffer, offset, source.length).set(source);\n return offset;\n}\n\nfunction copyInt32ToHeap(\n engine: HavokPhysicsWithBindings,\n source: Uint32Array,\n): number {\n const offset = engine._malloc(source.byteLength);\n new Int32Array(engine.HEAPU8.buffer, offset, source.length).set(source);\n return offset;\n}\n\nfunction configureShapeMaterial(\n engine: HavokPhysicsWithBindings,\n shape: HP_ShapeId,\n descriptor: PhysicsWorkerShapeDescriptor,\n): HP_ShapeId {\n engine.HP_Shape_SetDensity(shape, descriptor.density);\n engine.HP_Shape_SetMaterial(shape, [\n descriptor.friction,\n descriptor.friction,\n descriptor.restitution,\n engine.MaterialCombine.MINIMUM,\n engine.MaterialCombine.MAXIMUM,\n ]);\n return shape;\n}\n\nfunction createShape(\n engine: HavokPhysicsWithBindings,\n descriptor: PhysicsWorkerShapeDescriptor,\n): HP_ShapeId {\n const dimensions = descriptor.dimensions;\n let shape: HP_ShapeId | undefined;\n\n try {\n switch (descriptor.type) {\n case 'Sphere':\n shape = engine.HP_Shape_CreateSphere([0, 0, 0], dimensions[0])[1];\n break;\n case 'Box':\n shape = engine.HP_Shape_CreateBox(\n [0, 0, 0],\n [0, 0, 0, 1],\n dimensions,\n )[1];\n break;\n case 'Cylinder':\n shape = engine.HP_Shape_CreateCylinder(\n [0, -dimensions[1] / 2, 0],\n [0, dimensions[1] / 2, 0],\n dimensions[0],\n )[1];\n break;\n case 'Capsules': {\n const endpoints = getCapsuleAxisEndpoints(dimensions[0], dimensions[1]);\n if (!endpoints) {\n throw new Error(\n 'Capsule dimensions require a positive radius and a total height greater than or equal to twice the radius',\n );\n }\n shape = engine.HP_Shape_CreateCapsule(\n endpoints[0],\n endpoints[1],\n dimensions[0],\n )[1];\n break;\n }\n case 'ConvexHull': {\n if (!descriptor.vertices) {\n throw new Error('Convex hull body is missing its vertex buffer');\n }\n const vertices = new Float32Array(descriptor.vertices);\n const vertexOffset = copyFloat32ToHeap(engine, vertices);\n try {\n shape = engine.HP_Shape_CreateConvexHull(\n vertexOffset,\n vertices.length / 3,\n )[1];\n } finally {\n engine._free(vertexOffset);\n }\n break;\n }\n case 'TriMesh': {\n if (!descriptor.vertices || !descriptor.indices) {\n throw new Error('Tri-mesh body is missing vertex or index data');\n }\n const vertices = new Float32Array(descriptor.vertices);\n const indices = new Uint32Array(descriptor.indices);\n const vertexOffset = copyFloat32ToHeap(engine, vertices);\n const indexOffset = copyInt32ToHeap(engine, indices);\n try {\n shape = engine.HP_Shape_CreateMesh(\n vertexOffset,\n vertices.length / 3,\n indexOffset,\n indices.length / 3,\n )[1];\n } finally {\n engine._free(vertexOffset);\n engine._free(indexOffset);\n }\n break;\n }\n }\n\n return configureShapeMaterial(engine, shape, descriptor);\n } catch (error) {\n if (shape) {\n engine.HP_Shape_Release(shape);\n }\n throw error;\n }\n}\n\nfunction motionTypeForState(\n engine: HavokPhysicsWithBindings,\n state: PhysicsWorkerBodyState,\n): MotionType {\n switch (state) {\n case 'STATIC':\n return engine.MotionType.STATIC;\n case 'KINEMATIC':\n return engine.MotionType.KINEMATIC;\n case 'DYNAMIC':\n default:\n return engine.MotionType.DYNAMIC;\n }\n}\n\nfunction removeBody(state: PhysicsRuntimeState, handle: number): void {\n const entry = state.bodies.get(handle);\n if (!entry) {\n return;\n }\n const [engine, world] = requireHavok(state);\n engine.HP_World_RemoveBody(world, entry.body);\n engine.HP_Body_Release(entry.body);\n engine.HP_Shape_Release(entry.shape);\n state.bodies.delete(handle);\n}\n\nfunction addBody(\n state: PhysicsRuntimeState,\n message: PhysicsWorkerAddBodyMessage,\n): [number, number, number] {\n const [engine, world] = requireHavok(state);\n removeBody(state, message.handle);\n\n const shape = createShape(engine, message.shape);\n let body: HP_BodyId | undefined;\n let addedToWorld = false;\n try {\n body = engine.HP_Body_Create()[1];\n engine.HP_Body_SetShape(body, shape);\n engine.HP_Body_SetQTransform(body, [message.position, message.quaternion]);\n engine.HP_Body_SetLinearDamping(body, message.linearDamping);\n engine.HP_Body_SetAngularDamping(body, message.angularDamping);\n engine.HP_Body_SetGravityFactor(body, message.gravityFactor);\n\n const shapeMass = engine.HP_Shape_BuildMassProperties(shape);\n const massProperties: MassProperties =\n shapeMass[0] === engine.Result.RESULT_OK\n ? shapeMass[1]\n : [[0, 0, 0], 1, [1, 1, 1], [0, 0, 0, 1]];\n\n if (message.centerOfMass.every((value) => value === Infinity)) {\n message.centerOfMass = [...massProperties[0]];\n } else {\n massProperties[0] = [...message.centerOfMass];\n }\n\n engine.HP_Body_SetMassProperties(body, massProperties);\n engine.HP_Body_SetMotionType(\n body,\n motionTypeForState(engine, message.state),\n );\n engine.HP_World_AddBody(world, body, false);\n addedToWorld = true;\n\n state.bodies.set(message.handle, {\n body,\n shape,\n state: message.state,\n transformOffset: engine.HP_Body_GetWorldTransformOffset(body)[1],\n });\n } catch (error) {\n if (body) {\n if (addedToWorld) {\n engine.HP_World_RemoveBody(world, body);\n }\n engine.HP_Body_Release(body);\n }\n engine.HP_Shape_Release(shape);\n throw error;\n }\n\n return message.centerOfMass;\n}\n\nfunction applyCommands(state: PhysicsRuntimeState, buffer: ArrayBuffer): void {\n const [engine] = requireHavok(state);\n const ints = new Int32Array(buffer);\n const floats = new Float32Array(buffer);\n const commandCount = ints[PhysicsHeaderIndex.CommandCount];\n\n for (let index = 0; index < commandCount; index++) {\n const base = PHYSICS_HEADER_WORDS + index * PHYSICS_INPUT_RECORD_FLOATS;\n const handle = floats[base + PhysicsInputOffset.Handle];\n const flags = floats[base + PhysicsInputOffset.Flags];\n const entry = state.bodies.get(handle);\n if (!entry) {\n continue;\n }\n\n if (\n flags &\n (PhysicsCommandFlag.SetTransform | PhysicsCommandFlag.SetTargetTransform)\n ) {\n const position: [number, number, number] = [\n floats[base + PhysicsInputOffset.PositionX],\n floats[base + PhysicsInputOffset.PositionY],\n floats[base + PhysicsInputOffset.PositionZ],\n ];\n const quaternion: [number, number, number, number] = [\n floats[base + PhysicsInputOffset.QuaternionX],\n floats[base + PhysicsInputOffset.QuaternionY],\n floats[base + PhysicsInputOffset.QuaternionZ],\n floats[base + PhysicsInputOffset.QuaternionW],\n ];\n if (flags & PhysicsCommandFlag.SetTransform) {\n engine.HP_Body_SetQTransform(entry.body, [position, quaternion]);\n }\n if (flags & PhysicsCommandFlag.SetTargetTransform) {\n engine.HP_Body_SetTargetQTransform(entry.body, [position, quaternion]);\n }\n }\n if (flags & PhysicsCommandFlag.ResetLinearVelocity) {\n engine.HP_Body_SetLinearVelocity(entry.body, [0, 0, 0]);\n }\n if (flags & PhysicsCommandFlag.ResetAngularVelocity) {\n engine.HP_Body_SetAngularVelocity(entry.body, [0, 0, 0]);\n }\n if (flags & PhysicsCommandFlag.ApplyImpulse) {\n engine.HP_Body_ApplyImpulse(\n entry.body,\n [\n floats[base + PhysicsInputOffset.ImpulsePointX],\n floats[base + PhysicsInputOffset.ImpulsePointY],\n floats[base + PhysicsInputOffset.ImpulsePointZ],\n ],\n [\n floats[base + PhysicsInputOffset.ImpulseX],\n floats[base + PhysicsInputOffset.ImpulseY],\n floats[base + PhysicsInputOffset.ImpulseZ],\n ],\n );\n }\n if (flags & PhysicsCommandFlag.SetLinearVelocity) {\n engine.HP_Body_SetLinearVelocity(entry.body, [\n floats[base + PhysicsInputOffset.LinearVelocityX],\n floats[base + PhysicsInputOffset.LinearVelocityY],\n floats[base + PhysicsInputOffset.LinearVelocityZ],\n ]);\n }\n if (flags & PhysicsCommandFlag.SetAngularVelocity) {\n engine.HP_Body_SetAngularVelocity(entry.body, [\n floats[base + PhysicsInputOffset.AngularVelocityX],\n floats[base + PhysicsInputOffset.AngularVelocityY],\n floats[base + PhysicsInputOffset.AngularVelocityZ],\n ]);\n }\n if (flags & PhysicsCommandFlag.SetGravityFactor) {\n engine.HP_Body_SetGravityFactor(\n entry.body,\n floats[base + PhysicsInputOffset.GravityFactor],\n );\n }\n if (flags & PhysicsCommandFlag.SetLinearDamping) {\n engine.HP_Body_SetLinearDamping(\n entry.body,\n floats[base + PhysicsInputOffset.LinearDamping],\n );\n }\n if (flags & PhysicsCommandFlag.SetAngularDamping) {\n engine.HP_Body_SetAngularDamping(\n entry.body,\n floats[base + PhysicsInputOffset.AngularDamping],\n );\n }\n }\n}\n\nfunction writeQuaternionFromMatrix(\n heap: Float32Array,\n matrixBase: number,\n output: Float32Array,\n outputBase: number,\n): void {\n const m11 = heap[matrixBase];\n const m12 = heap[matrixBase + 4];\n const m13 = heap[matrixBase + 8];\n const m21 = heap[matrixBase + 1];\n const m22 = heap[matrixBase + 5];\n const m23 = heap[matrixBase + 9];\n const m31 = heap[matrixBase + 2];\n const m32 = heap[matrixBase + 6];\n const m33 = heap[matrixBase + 10];\n const trace = m11 + m22 + m33;\n\n let x: number;\n let y: number;\n let z: number;\n let w: number;\n\n if (trace > 0) {\n const scale = 0.5 / Math.sqrt(trace + 1);\n w = 0.25 / scale;\n x = (m32 - m23) * scale;\n y = (m13 - m31) * scale;\n z = (m21 - m12) * scale;\n } else if (m11 > m22 && m11 > m33) {\n const scale = 2 * Math.sqrt(1 + m11 - m22 - m33);\n w = (m32 - m23) / scale;\n x = 0.25 * scale;\n y = (m12 + m21) / scale;\n z = (m13 + m31) / scale;\n } else if (m22 > m33) {\n const scale = 2 * Math.sqrt(1 + m22 - m11 - m33);\n w = (m13 - m31) / scale;\n x = (m12 + m21) / scale;\n y = 0.25 * scale;\n z = (m23 + m32) / scale;\n } else {\n const scale = 2 * Math.sqrt(1 + m33 - m11 - m22);\n w = (m21 - m12) / scale;\n x = (m13 + m31) / scale;\n y = (m23 + m32) / scale;\n z = 0.25 * scale;\n }\n\n output[outputBase + PhysicsOutputOffset.QuaternionX] = x;\n output[outputBase + PhysicsOutputOffset.QuaternionY] = y;\n output[outputBase + PhysicsOutputOffset.QuaternionZ] = z;\n output[outputBase + PhysicsOutputOffset.QuaternionW] = w;\n}\n\nfunction writeResults(state: PhysicsRuntimeState, buffer: ArrayBuffer): void {\n const [engine, world] = requireHavok(state);\n const ints = new Int32Array(buffer);\n const floats = new Float32Array(buffer);\n const bodyBuffer = engine.HP_World_GetBodyBuffer(world)[1];\n const maxResults = Math.floor(\n (buffer.byteLength - PHYSICS_HEADER_BYTES) /\n (PHYSICS_OUTPUT_RECORD_FLOATS * 4),\n );\n let resultCount = 0;\n\n for (const [handle, entry] of state.bodies) {\n if (entry.state === 'STATIC') {\n continue;\n }\n if (resultCount === maxResults) {\n ints[PhysicsHeaderIndex.Status] |= PhysicsExchangeStatus.ResultsTruncated;\n break;\n }\n\n const base =\n PHYSICS_HEADER_WORDS + resultCount * PHYSICS_OUTPUT_RECORD_FLOATS;\n const matrixBase = (bodyBuffer + entry.transformOffset) >> 2;\n const linearVelocity = engine.HP_Body_GetLinearVelocity(entry.body)[1];\n const angularVelocity = engine.HP_Body_GetAngularVelocity(entry.body)[1];\n const heap = getHeapFloatView(state, engine);\n\n floats[base + PhysicsOutputOffset.Handle] = handle;\n floats[base + PhysicsOutputOffset.PositionX] = heap[matrixBase + 12];\n floats[base + PhysicsOutputOffset.PositionY] = heap[matrixBase + 13];\n floats[base + PhysicsOutputOffset.PositionZ] = heap[matrixBase + 14];\n writeQuaternionFromMatrix(heap, matrixBase, floats, base);\n floats[base + PhysicsOutputOffset.LinearVelocityX] = linearVelocity[0];\n floats[base + PhysicsOutputOffset.LinearVelocityY] = linearVelocity[1];\n floats[base + PhysicsOutputOffset.LinearVelocityZ] = linearVelocity[2];\n floats[base + PhysicsOutputOffset.AngularVelocityX] = angularVelocity[0];\n floats[base + PhysicsOutputOffset.AngularVelocityY] = angularVelocity[1];\n floats[base + PhysicsOutputOffset.AngularVelocityZ] = angularVelocity[2];\n resultCount++;\n }\n\n ints[PhysicsHeaderIndex.ResultCount] = resultCount;\n}\n\nexport interface PhysicsRuntimeStepResult {\n buffer: ArrayBuffer;\n error?: string;\n}\n\n/** Shared Havok runtime used by both main-thread and worker transports. */\nexport class PhysicsRuntime {\n private readonly state: PhysicsRuntimeState = {\n bodies: new Map<number, WorkerBody>(),\n destroyed: false,\n };\n\n initialize(gravity: [number, number, number]): Promise<void> {\n return initialize(this.state, gravity);\n }\n\n setGravity(gravity: [number, number, number]): void {\n const [engine, world] = requireHavok(this.state);\n engine.HP_World_SetGravity(world, gravity);\n }\n\n addBody(message: PhysicsWorkerAddBodyMessage): [number, number, number] {\n return addBody(this.state, message);\n }\n\n removeBody(handle: number): void {\n removeBody(this.state, handle);\n }\n\n step(buffer: ArrayBuffer): PhysicsRuntimeStepResult {\n const ints = new Int32Array(buffer);\n try {\n if (ints[PhysicsHeaderIndex.Version] !== PHYSICS_PROTOCOL_VERSION) {\n throw new Error('Physics exchange buffer protocol version mismatch');\n }\n const [engine, world] = requireHavok(this.state);\n applyCommands(this.state, buffer);\n const floats = new Float32Array(buffer);\n const delta = floats[PhysicsHeaderIndex.Delta];\n const stepCount = Math.max(0, ints[PhysicsHeaderIndex.StepCount]);\n for (let index = 0; index < stepCount; index++) {\n engine.HP_World_SetIdealStepTime(world, delta);\n engine.HP_World_Step(world, delta);\n }\n writeResults(this.state, buffer);\n return { buffer };\n } catch (error) {\n ints[PhysicsHeaderIndex.Status] |= PhysicsExchangeStatus.StepFailed;\n ints[PhysicsHeaderIndex.ResultCount] = 0;\n return {\n buffer,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n destroy(): void {\n if (this.state.destroyed) {\n return;\n }\n this.state.destroyed = true;\n for (const handle of [...this.state.bodies.keys()]) {\n removeBody(this.state, handle);\n }\n if (this.state.havok && this.state.havokWorld) {\n this.state.havok.HP_World_Release(this.state.havokWorld);\n }\n this.state.havok = undefined;\n this.state.havokWorld = undefined;\n this.state.heapFloatView = undefined;\n this.state.initializePromise = undefined;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics-system.js","sources":["../../src/physics/physics-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"physics-system.js","sources":["../../src/physics/physics-system.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { effect } from '@preact/signals-core';\nimport { createSystem, Entity, Grabbed, ne, Types } from '.././index.js';\nimport { Mesh, Object3D, Quaternion, Vector3 } from '../runtime/three.js';\nimport {\n createPhysicsTransport,\n type PhysicsTransport,\n} from './physics-transport.js';\nimport {\n getCapsuleAxisEndpoints,\n PHYSICS_HEADER_WORDS,\n PHYSICS_INPUT_RECORD_FLOATS,\n PHYSICS_OUTPUT_RECORD_FLOATS,\n PHYSICS_PROTOCOL_VERSION,\n PhysicsCommandFlag,\n PhysicsExchangeStatus,\n PhysicsHeaderIndex,\n PhysicsInputOffset,\n PhysicsOutputOffset,\n physicsExchangeByteLength,\n type PhysicsWorkerAddBodyMessage,\n type PhysicsWorkerBodyState,\n type PhysicsWorkerOutputMessage,\n type PhysicsWorkerShapeDescriptor,\n} from './physics-worker-protocol.js';\nimport {\n DEFAULT_ANGULAR_DAMPING,\n DEFAULT_GRAVITY_FACTOR,\n DEFAULT_LINEAR_DAMPING,\n PhysicsBody,\n PhysicsState,\n} from './physicsBody.js';\nimport { PhysicsManipulation } from './physicsManipulation.js';\nimport { PhysicsShape, PhysicsShapeType } from './physicsShape.js';\nimport {\n detectShapeFromGeometry,\n generateMergedGeometry,\n sequentialIndices,\n} from './utils.js';\n\nexport { getCapsuleAxisEndpoints } from './physics-worker-protocol.js';\n\ntype Vector3Input = Vector3 | readonly [number, number, number];\ntype QuaternionInput = Quaternion | readonly [number, number, number, number];\n\n/** Pose passed to {@link PhysicsSystem.setBodyTransform}. */\nexport interface PhysicsBodyTransformPose {\n position: Vector3Input;\n quaternion: QuaternionInput;\n}\n\n/** Options for {@link PhysicsSystem.setBodyTransform}. */\nexport interface PhysicsBodyTransformOptions {\n /**\n * Clear linear and angular velocity after teleporting the body.\n *\n * @default true\n */\n resetVelocity?: boolean;\n}\n\ninterface PendingBodyCommand {\n handle: number;\n flags: number;\n position: [number, number, number];\n quaternion: [number, number, number, number];\n impulsePoint: [number, number, number];\n impulse: [number, number, number];\n linearVelocity: [number, number, number];\n angularVelocity: [number, number, number];\n gravityFactor: number;\n linearDamping: number;\n angularDamping: number;\n}\n\ninterface SerializedShape {\n descriptor: PhysicsWorkerShapeDescriptor;\n transfer: ArrayBuffer[];\n}\n\ninterface BodyPoseSnapshot {\n previousPosition: Vector3;\n currentPosition: Vector3;\n previousQuaternion: Quaternion;\n currentQuaternion: Quaternion;\n}\n\ninterface CompletedExchange {\n buffer: ArrayBuffer;\n ints: Int32Array;\n floats: Float32Array;\n sequence: number;\n}\n\nconst ZERO_VECTOR = [0, 0, 0] as const;\nconst EXCHANGE_BUFFER_COUNT = 2;\nconst INITIAL_RESULT_CAPACITY = 64;\nconst DEFAULT_UPDATE_FREQUENCY = 60;\nconst MAX_UPDATE_FREQUENCY = 240;\nconst MAX_ACCUMULATED_STEPS = 4;\n\nfunction vector3ToArray(value: Vector3Input): [number, number, number] {\n return 'x' in value\n ? [value.x, value.y, value.z]\n : [value[0], value[1], value[2]];\n}\n\nfunction quaternionToArray(\n value: QuaternionInput,\n): [number, number, number, number] {\n return 'w' in value\n ? [value.x, value.y, value.z, value.w]\n : [value[0], value[1], value[2], value[3]];\n}\n\nfunction createPendingCommand(handle: number): PendingBodyCommand {\n return {\n handle,\n flags: 0,\n position: [0, 0, 0],\n quaternion: [0, 0, 0, 1],\n impulsePoint: [0, 0, 0],\n impulse: [0, 0, 0],\n linearVelocity: [0, 0, 0],\n angularVelocity: [0, 0, 0],\n gravityFactor: DEFAULT_GRAVITY_FACTOR,\n linearDamping: DEFAULT_LINEAR_DAMPING,\n angularDamping: DEFAULT_ANGULAR_DAMPING,\n };\n}\n\nfunction isZeroVector(value: ArrayLike<number>): boolean {\n return value[0] === 0 && value[1] === 0 && value[2] === 0;\n}\n\n/**\n * Manages a Havok simulation on either a dedicated worker or the main thread.\n *\n * Per-frame commands and poses travel through a pair of transferable\n * ArrayBuffers.\n * Both execution modes use the same binary protocol and shared Havok runtime.\n * Worker mode alternates ownership of transferable ArrayBuffers, avoiding both\n * structured-clone copies and SharedArrayBuffer's cross-origin-isolation\n * requirement. Shape creation/removal uses infrequent control messages.\n *\n * @remarks\n * - Supports Sphere, Box, Cylinder, Capsule, ConvexHull, TriMesh, and Auto shapes.\n * - Synchronizes dynamic body poses and velocities back to ECS entities.\n * - Sends grab targets, impulses, velocity edits, damping, and gravity changes through one transport contract.\n * - Automatically releases bodies and shapes when entities are removed.\n *\n * @category Physics\n */\nexport class PhysicsSystem extends createSystem(\n {\n physicsEntities: {\n required: [PhysicsBody, PhysicsShape],\n },\n manipluatedEntities: {\n required: [PhysicsBody, PhysicsManipulation],\n where: [ne(PhysicsBody, '_engineBody', 0)],\n },\n gravityOverrides: {\n required: [PhysicsBody, PhysicsShape],\n where: [ne(PhysicsBody, 'gravityFactor', DEFAULT_GRAVITY_FACTOR)],\n },\n linearDampingOverrides: {\n required: [PhysicsBody, PhysicsShape],\n where: [ne(PhysicsBody, 'linearDamping', DEFAULT_LINEAR_DAMPING)],\n },\n angularDampingOverrides: {\n required: [PhysicsBody, PhysicsShape],\n where: [ne(PhysicsBody, 'angularDamping', DEFAULT_ANGULAR_DAMPING)],\n },\n },\n {\n gravity: { type: Types.Vec3, default: [0, -9.81, 0] },\n useWorker: { type: Types.Boolean, default: true },\n updateFrequency: { type: Types.Float32, default: DEFAULT_UPDATE_FREQUENCY },\n interpolation: { type: Types.Boolean, default: true },\n },\n) {\n private transport?: PhysicsTransport;\n private transportReady = false;\n private nextBodyHandle = 1;\n private nextSequence = 1;\n private bodyEntities = new Map<number, Entity>();\n private bodySnapshots = new Map<number, BodyPoseSnapshot>();\n private bodyResultSequenceFloors = new Map<number, number>();\n private failedBodyEntities = new WeakSet<Entity>();\n private pendingCommands = new Map<number, PendingBodyCommand>();\n private commandPool: PendingBodyCommand[] = [];\n private freeExchangeBuffers: ArrayBuffer[] = [];\n private completedExchanges: CompletedExchange[] = [];\n\n private inFlightExchangeCount = 0;\n private stepAccumulator = 0;\n private pendingDebugStepDelta?: number;\n private debugFlushWaiters = new Set<() => void>();\n\n init(): void {\n const initialByteLength = physicsExchangeByteLength(\n 0,\n INITIAL_RESULT_CAPACITY,\n );\n for (let index = 0; index < EXCHANGE_BUFFER_COUNT; index++) {\n this.freeExchangeBuffers.push(new ArrayBuffer(initialByteLength));\n }\n\n try {\n const transport = createPhysicsTransport(\n this.config.useWorker.value as boolean,\n );\n transport.onmessage = (event: MessageEvent<PhysicsWorkerOutputMessage>) =>\n this.handleTransportMessage(event.data);\n transport.onerror = (event) => {\n this.handleTransportFailure(\n `Physics transport error: ${event.message}`,\n );\n };\n transport.onmessageerror = () => {\n this.handleTransportFailure(\n 'Physics transport message could not be decoded',\n );\n };\n this.transport = transport;\n transport.postMessage({\n type: 'init',\n gravity: [...this.config.gravity.value],\n });\n this.cleanupFuncs.push(\n effect(() => {\n const gravity = this.config.gravity.value;\n this.transport?.postMessage({\n type: 'set-gravity',\n gravity: [gravity[0], gravity[1], gravity[2]],\n });\n }),\n );\n } catch (error) {\n this.transport?.terminate();\n this.transport = undefined;\n console.error(\n this.config.useWorker.value\n ? 'Failed to start physics worker. Set features.physics.useWorker to false to run physics on the main thread:'\n : 'Failed to start main-thread physics:',\n error,\n );\n }\n\n this.cleanupFuncs.push(\n this.queries.physicsEntities.subscribe('disqualify', (entity) => {\n this.removeBody(entity);\n }),\n );\n this.subscribeReactiveOverrides();\n\n this.cleanupFuncs.push(() => {\n this.transport?.terminate();\n this.transport = undefined;\n this.transportReady = false;\n this.bodyEntities.clear();\n this.bodySnapshots.clear();\n this.bodyResultSequenceFloors.clear();\n this.failedBodyEntities = new WeakSet<Entity>();\n this.pendingCommands.clear();\n this.freeExchangeBuffers.length = 0;\n this.completedExchanges.length = 0;\n this.stepAccumulator = 0;\n this.pendingDebugStepDelta = undefined;\n this.resolveDebugFlushWaiters(true);\n });\n }\n\n /**\n * Teleport an existing physics body and mirror the pose immediately on its\n * Object3D. The runtime consumes the command on the next available exchange.\n */\n setBodyTransform(\n entity: Entity,\n pose: PhysicsBodyTransformPose,\n options: PhysicsBodyTransformOptions = {},\n ): void {\n if (!entity.hasComponent(PhysicsBody)) {\n return;\n }\n\n const handle = entity.getValue(PhysicsBody, '_engineBody');\n if (!handle) {\n return;\n }\n\n const position = vector3ToArray(pose.position);\n const quaternion = quaternionToArray(pose.quaternion);\n const command = this.getPendingCommand(handle);\n command.flags |= PhysicsCommandFlag.SetTransform;\n command.position = position;\n command.quaternion = quaternion;\n if (this.bodySnapshots.has(handle)) {\n this.bodyResultSequenceFloors.set(handle, this.nextSequence);\n }\n\n if (entity.object3D) {\n entity.object3D.position.set(position[0], position[1], position[2]);\n entity.object3D.quaternion.set(\n quaternion[0],\n quaternion[1],\n quaternion[2],\n quaternion[3],\n );\n entity.object3D.updateMatrixWorld(true);\n this.syncSnapshotToObject(handle, entity.object3D);\n }\n\n if (options.resetVelocity === false) {\n return;\n }\n\n command.flags |=\n PhysicsCommandFlag.ResetLinearVelocity |\n PhysicsCommandFlag.ResetAngularVelocity;\n entity.getVectorView(PhysicsBody, '_linearVelocity').set(ZERO_VECTOR);\n entity.getVectorView(PhysicsBody, '_angularVelocity').set(ZERO_VECTOR);\n }\n\n update(delta: number): void {\n this.applyCompletedExchange();\n\n if (!this.transport) {\n return;\n }\n\n this.queries.physicsEntities.entities.forEach((entity) => {\n this.ensureBody(entity);\n const handle = entity.getValue(PhysicsBody, '_engineBody');\n if (\n handle &&\n entity.object3D &&\n Grabbed.bitmask &&\n entity.hasComponent(Grabbed)\n ) {\n const command = this.getPendingCommand(handle);\n command.flags |= PhysicsCommandFlag.SetTargetTransform;\n command.position[0] = entity.object3D.position.x;\n command.position[1] = entity.object3D.position.y;\n command.position[2] = entity.object3D.position.z;\n command.quaternion[0] = entity.object3D.quaternion.x;\n command.quaternion[1] = entity.object3D.quaternion.y;\n command.quaternion[2] = entity.object3D.quaternion.z;\n command.quaternion[3] = entity.object3D.quaternion.w;\n this.syncSnapshotToObject(handle, entity.object3D);\n }\n });\n\n this.syncReactiveOverrides();\n this.queueManipulations();\n\n if (this.pendingDebugStepDelta !== undefined) {\n this.stepAccumulator = 0;\n this.trySendPendingDebugStep();\n this.renderInterpolatedTransforms(1);\n return;\n }\n\n const stepInterval = this.getStepInterval();\n this.stepAccumulator = Math.min(\n this.stepAccumulator + Math.max(0, delta),\n stepInterval * MAX_ACCUMULATED_STEPS,\n );\n\n if (this.transportReady) {\n const stepCount = Math.min(\n Math.floor(this.stepAccumulator / stepInterval + 1e-9),\n MAX_ACCUMULATED_STEPS,\n );\n if (stepCount > 0 && this.sendExchange(stepInterval, stepCount)) {\n this.stepAccumulator = Math.max(\n 0,\n this.stepAccumulator - stepInterval * stepCount,\n );\n }\n }\n\n const interpolationAlpha = this.config.interpolation.value\n ? Math.min(this.stepAccumulator / stepInterval, 1)\n : 1;\n this.renderInterpolatedTransforms(interpolationAlpha);\n }\n\n /** Prepare one exact-delta physics tick for an ECS debugger step. */\n prepareDebugFrame(delta: number): void {\n this.pendingDebugStepDelta =\n Number.isFinite(delta) && delta > 0 ? delta : this.getStepInterval();\n this.stepAccumulator = 0;\n }\n\n /**\n * Wait until all submitted physics work is reflected in ECS transforms.\n * Used by debugger pause/step so worker and inline execution expose the same\n * settled state at command boundaries.\n */\n async flushDebugFrame(): Promise<void> {\n this.applyCompletedExchange();\n this.trySendPendingDebugStep();\n await this.waitForDebugWork();\n this.applyCompletedExchange();\n\n // Pausing between fixed ticks must commit queued commands without moving\n // simulation time; a zero-step exchange preserves the old inline behavior.\n if (\n this.pendingDebugStepDelta === undefined &&\n this.pendingCommands.size > 0 &&\n this.transportReady &&\n this.sendExchange(0, 0)\n ) {\n await this.waitForDebugWork();\n this.applyCompletedExchange();\n }\n\n this.renderInterpolatedTransforms(1);\n for (const snapshot of this.bodySnapshots.values()) {\n snapshot.previousPosition.copy(snapshot.currentPosition);\n snapshot.previousQuaternion.copy(snapshot.currentQuaternion);\n }\n }\n\n private handleTransportMessage(message: PhysicsWorkerOutputMessage): void {\n switch (message.type) {\n case 'ready':\n this.transportReady = true;\n this.trySendPendingDebugStep();\n break;\n case 'body-created': {\n const entity = this.bodyEntities.get(message.handle);\n if (entity?.hasComponent(PhysicsBody)) {\n entity\n .getVectorView(PhysicsBody, 'centerOfMass')\n .set(message.centerOfMass);\n }\n break;\n }\n case 'step-result':\n this.inFlightExchangeCount = Math.max(\n 0,\n this.inFlightExchangeCount - 1,\n );\n const ints = new Int32Array(message.buffer);\n this.completedExchanges.push({\n buffer: message.buffer,\n ints,\n floats: new Float32Array(message.buffer),\n sequence: ints[PhysicsHeaderIndex.Sequence],\n });\n if (this.pendingDebugStepDelta !== undefined) {\n this.applyCompletedExchange();\n this.trySendPendingDebugStep();\n }\n if (this.inFlightExchangeCount === 0) {\n this.resolveDebugFlushWaiters();\n }\n break;\n case 'error':\n if (message.handle !== undefined) {\n console.error(`Physics runtime: ${message.message}`);\n const entity = this.bodyEntities.get(message.handle);\n if (entity) {\n this.failedBodyEntities.add(entity);\n this.setEngineHandles(entity, 0);\n }\n this.bodyEntities.delete(message.handle);\n this.bodySnapshots.delete(message.handle);\n this.bodyResultSequenceFloors.delete(message.handle);\n this.discardPendingCommand(message.handle);\n } else {\n this.handleTransportFailure(`Physics runtime: ${message.message}`);\n }\n break;\n }\n }\n\n private handleTransportFailure(message: string): void {\n console.error(\n this.config.useWorker.value\n ? `${message}. Set features.physics.useWorker to false to run physics on the main thread.`\n : message,\n );\n this.transportReady = false;\n this.transport?.terminate();\n this.transport = undefined;\n this.inFlightExchangeCount = 0;\n this.pendingDebugStepDelta = undefined;\n this.resolveDebugFlushWaiters();\n }\n\n private async waitForDebugWork(): Promise<void> {\n if (\n this.pendingDebugStepDelta === undefined &&\n this.inFlightExchangeCount === 0\n ) {\n return;\n }\n await new Promise<void>((resolve) => {\n this.debugFlushWaiters.add(resolve);\n });\n }\n\n private resolveDebugFlushWaiters(force = false): void {\n if (\n !force &&\n (this.pendingDebugStepDelta !== undefined ||\n this.inFlightExchangeCount > 0)\n ) {\n return;\n }\n for (const resolve of this.debugFlushWaiters) {\n resolve();\n }\n this.debugFlushWaiters.clear();\n }\n\n private applyCompletedExchange(): void {\n if (this.completedExchanges.length === 0) {\n return;\n }\n\n this.completedExchanges.sort(\n (left, right) => left.sequence - right.sequence,\n );\n for (const exchange of this.completedExchanges) {\n this.applyExchangeBuffer(exchange);\n this.freeExchangeBuffers.push(exchange.buffer);\n }\n this.completedExchanges.length = 0;\n }\n\n private applyExchangeBuffer({ ints, floats }: CompletedExchange): void {\n const status = ints[PhysicsHeaderIndex.Status];\n if (status & PhysicsExchangeStatus.ResultsTruncated) {\n console.warn('Physics result buffer was unexpectedly truncated');\n }\n const resultCount = ints[PhysicsHeaderIndex.ResultCount];\n const sequence = ints[PhysicsHeaderIndex.Sequence];\n const stepCount = Math.max(1, ints[PhysicsHeaderIndex.StepCount]);\n\n for (let index = 0; index < resultCount; index++) {\n const base = PHYSICS_HEADER_WORDS + index * PHYSICS_OUTPUT_RECORD_FLOATS;\n const handle = floats[base + PhysicsOutputOffset.Handle];\n const entity = this.bodyEntities.get(handle);\n if (!entity?.object3D || !entity.hasComponent(PhysicsBody)) {\n continue;\n }\n const sequenceFloor = this.bodyResultSequenceFloors.get(handle);\n if (sequenceFloor !== undefined) {\n if (sequence < sequenceFloor) {\n continue;\n }\n this.bodyResultSequenceFloors.delete(handle);\n }\n\n const linearVelocity = entity.getVectorView(\n PhysicsBody,\n '_linearVelocity',\n );\n linearVelocity[0] = floats[base + PhysicsOutputOffset.LinearVelocityX];\n linearVelocity[1] = floats[base + PhysicsOutputOffset.LinearVelocityY];\n linearVelocity[2] = floats[base + PhysicsOutputOffset.LinearVelocityZ];\n const angularVelocity = entity.getVectorView(\n PhysicsBody,\n '_angularVelocity',\n );\n angularVelocity[0] = floats[base + PhysicsOutputOffset.AngularVelocityX];\n angularVelocity[1] = floats[base + PhysicsOutputOffset.AngularVelocityY];\n angularVelocity[2] = floats[base + PhysicsOutputOffset.AngularVelocityZ];\n\n if (Grabbed.bitmask && entity.hasComponent(Grabbed)) {\n continue;\n }\n\n const snapshot = this.bodySnapshots.get(handle);\n if (!snapshot) {\n continue;\n }\n if (stepCount === 1) {\n snapshot.previousPosition.copy(snapshot.currentPosition);\n snapshot.previousQuaternion.copy(snapshot.currentQuaternion);\n }\n snapshot.currentPosition.set(\n floats[base + PhysicsOutputOffset.PositionX],\n floats[base + PhysicsOutputOffset.PositionY],\n floats[base + PhysicsOutputOffset.PositionZ],\n );\n snapshot.currentQuaternion.set(\n floats[base + PhysicsOutputOffset.QuaternionX],\n floats[base + PhysicsOutputOffset.QuaternionY],\n floats[base + PhysicsOutputOffset.QuaternionZ],\n floats[base + PhysicsOutputOffset.QuaternionW],\n );\n if (stepCount > 1) {\n snapshot.previousPosition.copy(snapshot.currentPosition);\n snapshot.previousQuaternion.copy(snapshot.currentQuaternion);\n }\n }\n }\n\n private renderInterpolatedTransforms(alpha: number): void {\n for (const [handle, snapshot] of this.bodySnapshots) {\n const entity = this.bodyEntities.get(handle);\n if (\n !entity?.object3D ||\n (Grabbed.bitmask && entity.hasComponent(Grabbed))\n ) {\n continue;\n }\n entity.object3D.position.lerpVectors(\n snapshot.previousPosition,\n snapshot.currentPosition,\n alpha,\n );\n entity.object3D.quaternion.slerpQuaternions(\n snapshot.previousQuaternion,\n snapshot.currentQuaternion,\n alpha,\n );\n }\n }\n\n private syncSnapshotToObject(handle: number, object3D: Object3D): void {\n const snapshot = this.bodySnapshots.get(handle);\n if (!snapshot) {\n return;\n }\n snapshot.previousPosition.copy(object3D.position);\n snapshot.currentPosition.copy(object3D.position);\n snapshot.previousQuaternion.copy(object3D.quaternion);\n snapshot.currentQuaternion.copy(object3D.quaternion);\n }\n\n private getStepInterval(): number {\n const configuredFrequency = this.config.updateFrequency.value;\n const frequency =\n Number.isFinite(configuredFrequency) && configuredFrequency > 0\n ? Math.min(configuredFrequency, MAX_UPDATE_FREQUENCY)\n : DEFAULT_UPDATE_FREQUENCY;\n return 1 / frequency;\n }\n\n private sendExchange(delta: number, stepCount = 1): boolean {\n const transport = this.transport;\n const buffer = this.freeExchangeBuffers.pop();\n if (!transport || !buffer) {\n return false;\n }\n\n const resultCapacity = this.bodySnapshots.size;\n\n const requiredByteLength = physicsExchangeByteLength(\n this.pendingCommands.size,\n resultCapacity,\n );\n const exchangeBuffer =\n buffer.byteLength >= requiredByteLength\n ? buffer\n : new ArrayBuffer(requiredByteLength);\n const ints = new Int32Array(exchangeBuffer);\n const floats = new Float32Array(exchangeBuffer);\n ints.fill(0, 0, PHYSICS_HEADER_WORDS);\n ints[PhysicsHeaderIndex.Version] = PHYSICS_PROTOCOL_VERSION;\n const sequence = this.nextSequence++;\n ints[PhysicsHeaderIndex.Sequence] = sequence;\n ints[PhysicsHeaderIndex.CommandCount] = this.pendingCommands.size;\n ints[PhysicsHeaderIndex.StepCount] = stepCount;\n floats[PhysicsHeaderIndex.Delta] = delta;\n\n let commandIndex = 0;\n for (const command of this.pendingCommands.values()) {\n this.writeCommand(floats, commandIndex++, command);\n if (command.flags & PhysicsCommandFlag.SetTransform) {\n this.bodyResultSequenceFloors.set(command.handle, sequence);\n }\n }\n\n try {\n transport.postMessage({ type: 'step', buffer: exchangeBuffer }, [\n exchangeBuffer,\n ]);\n this.inFlightExchangeCount++;\n this.releasePendingCommands();\n return true;\n } catch (error) {\n this.freeExchangeBuffers.push(exchangeBuffer);\n console.error('Failed to post physics exchange buffer:', error);\n return false;\n }\n }\n\n private trySendPendingDebugStep(): void {\n if (this.pendingDebugStepDelta === undefined) {\n return;\n }\n if (!this.transport) {\n this.pendingDebugStepDelta = undefined;\n this.resolveDebugFlushWaiters();\n return;\n }\n if (!this.transportReady) {\n return;\n }\n if (this.sendExchange(this.pendingDebugStepDelta, 1)) {\n this.pendingDebugStepDelta = undefined;\n }\n }\n\n private writeCommand(\n output: Float32Array,\n index: number,\n command: PendingBodyCommand,\n ): void {\n const base = PHYSICS_HEADER_WORDS + index * PHYSICS_INPUT_RECORD_FLOATS;\n output[base + PhysicsInputOffset.Handle] = command.handle;\n output[base + PhysicsInputOffset.Flags] = command.flags;\n output[base + PhysicsInputOffset.PositionX] = command.position[0];\n output[base + PhysicsInputOffset.PositionY] = command.position[1];\n output[base + PhysicsInputOffset.PositionZ] = command.position[2];\n output[base + PhysicsInputOffset.QuaternionX] = command.quaternion[0];\n output[base + PhysicsInputOffset.QuaternionY] = command.quaternion[1];\n output[base + PhysicsInputOffset.QuaternionZ] = command.quaternion[2];\n output[base + PhysicsInputOffset.QuaternionW] = command.quaternion[3];\n output[base + PhysicsInputOffset.ImpulsePointX] = command.impulsePoint[0];\n output[base + PhysicsInputOffset.ImpulsePointY] = command.impulsePoint[1];\n output[base + PhysicsInputOffset.ImpulsePointZ] = command.impulsePoint[2];\n output[base + PhysicsInputOffset.ImpulseX] = command.impulse[0];\n output[base + PhysicsInputOffset.ImpulseY] = command.impulse[1];\n output[base + PhysicsInputOffset.ImpulseZ] = command.impulse[2];\n output[base + PhysicsInputOffset.LinearVelocityX] =\n command.linearVelocity[0];\n output[base + PhysicsInputOffset.LinearVelocityY] =\n command.linearVelocity[1];\n output[base + PhysicsInputOffset.LinearVelocityZ] =\n command.linearVelocity[2];\n output[base + PhysicsInputOffset.AngularVelocityX] =\n command.angularVelocity[0];\n output[base + PhysicsInputOffset.AngularVelocityY] =\n command.angularVelocity[1];\n output[base + PhysicsInputOffset.AngularVelocityZ] =\n command.angularVelocity[2];\n output[base + PhysicsInputOffset.GravityFactor] = command.gravityFactor;\n output[base + PhysicsInputOffset.LinearDamping] = command.linearDamping;\n output[base + PhysicsInputOffset.AngularDamping] = command.angularDamping;\n }\n\n private getPendingCommand(handle: number): PendingBodyCommand {\n let command = this.pendingCommands.get(handle);\n if (!command) {\n command = this.commandPool.pop() ?? createPendingCommand(handle);\n command.handle = handle;\n command.flags = 0;\n command.impulse[0] = 0;\n command.impulse[1] = 0;\n command.impulse[2] = 0;\n this.pendingCommands.set(handle, command);\n }\n return command;\n }\n\n private releasePendingCommands(): void {\n for (const command of this.pendingCommands.values()) {\n command.flags = 0;\n this.commandPool.push(command);\n }\n this.pendingCommands.clear();\n }\n\n private discardPendingCommand(handle: number): void {\n const command = this.pendingCommands.get(handle);\n if (command) {\n command.flags = 0;\n this.commandPool.push(command);\n this.pendingCommands.delete(handle);\n }\n }\n\n private ensureBody(entity: Entity): void {\n if (!this.transport || !entity.object3D) {\n return;\n }\n if (this.failedBodyEntities.has(entity)) {\n return;\n }\n if (entity.getValue(PhysicsBody, '_engineBody')) {\n return;\n }\n\n const serialized = this.serializeShape(entity, entity.object3D);\n if (!serialized) {\n return;\n }\n\n const handle = this.nextBodyHandle++;\n const linearDamping =\n entity.getValue(PhysicsBody, 'linearDamping') ?? DEFAULT_LINEAR_DAMPING;\n const angularDamping =\n entity.getValue(PhysicsBody, 'angularDamping') ?? DEFAULT_ANGULAR_DAMPING;\n const gravityFactor =\n entity.getValue(PhysicsBody, 'gravityFactor') ?? DEFAULT_GRAVITY_FACTOR;\n const centerOfMass = entity.getVectorView(PhysicsBody, 'centerOfMass');\n const message: PhysicsWorkerAddBodyMessage = {\n type: 'add-body',\n handle,\n shape: serialized.descriptor,\n state: entity.getValue(PhysicsBody, 'state') as PhysicsWorkerBodyState,\n position: [\n entity.object3D.position.x,\n entity.object3D.position.y,\n entity.object3D.position.z,\n ],\n quaternion: [\n entity.object3D.quaternion.x,\n entity.object3D.quaternion.y,\n entity.object3D.quaternion.z,\n entity.object3D.quaternion.w,\n ],\n linearDamping,\n angularDamping,\n gravityFactor,\n centerOfMass: [centerOfMass[0], centerOfMass[1], centerOfMass[2]],\n };\n\n this.setEngineHandles(entity, handle);\n PhysicsBody.data._engineGravityFactor[entity.index] = gravityFactor;\n PhysicsBody.data._engineLinearDamping[entity.index] = linearDamping;\n PhysicsBody.data._engineAngularDamping[entity.index] = angularDamping;\n this.bodyEntities.set(handle, entity);\n if (message.state !== PhysicsState.Static) {\n this.bodySnapshots.set(handle, {\n previousPosition: entity.object3D.position.clone(),\n currentPosition: entity.object3D.position.clone(),\n previousQuaternion: entity.object3D.quaternion.clone(),\n currentQuaternion: entity.object3D.quaternion.clone(),\n });\n }\n\n try {\n this.transport.postMessage(message, serialized.transfer);\n } catch (error) {\n this.failedBodyEntities.add(entity);\n this.setEngineHandles(entity, 0);\n this.bodyEntities.delete(handle);\n this.bodySnapshots.delete(handle);\n this.bodyResultSequenceFloors.delete(handle);\n console.error('Failed to create physics body:', error);\n }\n }\n\n private serializeShape(\n entity: Entity,\n object3D: Object3D,\n ): SerializedShape | undefined {\n const dimensionsView = entity.getVectorView(PhysicsShape, 'dimensions');\n let shapeType = entity.getValue(PhysicsShape, 'shape');\n\n if (shapeType === PhysicsShapeType.Auto) {\n const detection = detectShapeFromGeometry(object3D);\n entity.setValue(PhysicsShape, 'shape', detection.shapeType);\n shapeType = detection.shapeType;\n if (detection.dimensions) {\n dimensionsView.set(detection.dimensions);\n }\n }\n\n if (\n shapeType === PhysicsShapeType.Capsules &&\n !getCapsuleAxisEndpoints(dimensionsView[0], dimensionsView[1])\n ) {\n console.warn(\n 'PhysicsSystem: Capsule dimensions require a positive radius and a total height greater than or equal to twice the radius',\n );\n return;\n }\n\n const descriptor: PhysicsWorkerShapeDescriptor = {\n type: shapeType as PhysicsWorkerShapeDescriptor['type'],\n dimensions: [dimensionsView[0], dimensionsView[1], dimensionsView[2]],\n density: entity.getValue(PhysicsShape, 'density') ?? 1,\n restitution: entity.getValue(PhysicsShape, 'restitution') ?? 0,\n friction: entity.getValue(PhysicsShape, 'friction') ?? 0.5,\n };\n const transfer: ArrayBuffer[] = [];\n\n if (\n shapeType === PhysicsShapeType.ConvexHull ||\n shapeType === PhysicsShapeType.TriMesh\n ) {\n const ownsGeometry = !(object3D instanceof Mesh);\n const geometry =\n object3D instanceof Mesh\n ? object3D.geometry\n : generateMergedGeometry(object3D);\n try {\n const positionAttribute = geometry.attributes.position;\n if (!positionAttribute) {\n console.warn(\n `PhysicsSystem: Failed to get vertices for ${shapeType} shape with object3D name ${object3D.name} &id ${object3D.id}`,\n );\n return;\n }\n\n const vertices = Float32Array.from(\n positionAttribute.array as ArrayLike<number>,\n );\n descriptor.vertices = vertices.buffer as ArrayBuffer;\n transfer.push(descriptor.vertices);\n\n if (shapeType === PhysicsShapeType.TriMesh) {\n const sourceIndices =\n geometry.index?.array ?? sequentialIndices(positionAttribute.count);\n const indices = Uint32Array.from(sourceIndices as ArrayLike<number>);\n descriptor.indices = indices.buffer as ArrayBuffer;\n transfer.push(descriptor.indices);\n }\n } finally {\n if (ownsGeometry) {\n geometry.dispose();\n }\n }\n }\n\n return { descriptor, transfer };\n }\n\n private removeBody(entity: Entity): void {\n this.failedBodyEntities.delete(entity);\n const handle = PhysicsBody.data._engineBody[entity.index];\n if (!handle) {\n return;\n }\n\n this.transport?.postMessage({ type: 'remove-body', handle });\n this.bodyEntities.delete(handle);\n this.bodySnapshots.delete(handle);\n this.bodyResultSequenceFloors.delete(handle);\n this.discardPendingCommand(handle);\n this.setEngineHandles(entity, 0);\n }\n\n private setEngineHandles(entity: Entity, handle: number): void {\n if (entity.hasComponent(PhysicsBody)) {\n entity.setValue(PhysicsBody, '_engineBody', handle);\n entity.setValue(PhysicsBody, '_engineOffset', 0);\n } else {\n PhysicsBody.data._engineBody[entity.index] = handle;\n PhysicsBody.data._engineOffset[entity.index] = 0;\n }\n if (entity.hasComponent(PhysicsShape)) {\n entity.setValue(PhysicsShape, '_engineShape', handle);\n } else {\n PhysicsShape.data._engineShape[entity.index] = handle;\n }\n }\n\n private subscribeReactiveOverrides(): void {\n this.cleanupFuncs.push(\n this.queries.gravityOverrides.subscribe('disqualify', (entity) => {\n if (\n entity.hasComponent(PhysicsBody) &&\n entity.hasComponent(PhysicsShape)\n ) {\n this.syncGravityFactor(entity);\n }\n }),\n this.queries.linearDampingOverrides.subscribe('disqualify', (entity) => {\n if (\n entity.hasComponent(PhysicsBody) &&\n entity.hasComponent(PhysicsShape)\n ) {\n this.syncLinearDamping(entity);\n }\n }),\n this.queries.angularDampingOverrides.subscribe('disqualify', (entity) => {\n if (\n entity.hasComponent(PhysicsBody) &&\n entity.hasComponent(PhysicsShape)\n ) {\n this.syncAngularDamping(entity);\n }\n }),\n );\n }\n\n private syncReactiveOverrides(): void {\n this.queries.gravityOverrides.entities.forEach((entity) => {\n this.syncGravityFactor(entity);\n });\n this.queries.linearDampingOverrides.entities.forEach((entity) => {\n this.syncLinearDamping(entity);\n });\n this.queries.angularDampingOverrides.entities.forEach((entity) => {\n this.syncAngularDamping(entity);\n });\n }\n\n private syncGravityFactor(entity: Entity): void {\n const index = entity.index;\n const handle = PhysicsBody.data._engineBody[index];\n if (!handle) {\n return;\n }\n const target = PhysicsBody.data.gravityFactor[index];\n if (PhysicsBody.data._engineGravityFactor[index] === target) {\n return;\n }\n const command = this.getPendingCommand(handle);\n command.flags |= PhysicsCommandFlag.SetGravityFactor;\n command.gravityFactor = target;\n PhysicsBody.data._engineGravityFactor[index] = target;\n }\n\n private syncLinearDamping(entity: Entity): void {\n const index = entity.index;\n const handle = PhysicsBody.data._engineBody[index];\n if (!handle) {\n return;\n }\n const target = PhysicsBody.data.linearDamping[index];\n if (PhysicsBody.data._engineLinearDamping[index] === target) {\n return;\n }\n const command = this.getPendingCommand(handle);\n command.flags |= PhysicsCommandFlag.SetLinearDamping;\n command.linearDamping = target;\n PhysicsBody.data._engineLinearDamping[index] = target;\n }\n\n private syncAngularDamping(entity: Entity): void {\n const index = entity.index;\n const handle = PhysicsBody.data._engineBody[index];\n if (!handle) {\n return;\n }\n const target = PhysicsBody.data.angularDamping[index];\n if (PhysicsBody.data._engineAngularDamping[index] === target) {\n return;\n }\n const command = this.getPendingCommand(handle);\n command.flags |= PhysicsCommandFlag.SetAngularDamping;\n command.angularDamping = target;\n PhysicsBody.data._engineAngularDamping[index] = target;\n }\n\n private queueManipulations(): void {\n this.queries.manipluatedEntities.entities.forEach((entity) => {\n const handle = entity.getValue(PhysicsBody, '_engineBody');\n if (!handle || !entity.object3D) {\n return;\n }\n\n const force = entity.getVectorView(PhysicsManipulation, 'force');\n const linearVelocity = entity.getVectorView(\n PhysicsManipulation,\n 'linearVelocity',\n );\n const angularVelocity = entity.getVectorView(\n PhysicsManipulation,\n 'angularVelocity',\n );\n const hasForce = !isZeroVector(force);\n const hasLinearVelocity = !isZeroVector(linearVelocity);\n const hasAngularVelocity = !isZeroVector(angularVelocity);\n if (!hasForce && !hasLinearVelocity && !hasAngularVelocity) {\n entity.removeComponent(PhysicsManipulation);\n return;\n }\n const command = this.getPendingCommand(handle);\n\n if (hasForce) {\n command.flags |= PhysicsCommandFlag.ApplyImpulse;\n const impulsePosition =\n this.bodySnapshots.get(handle)?.currentPosition ??\n entity.object3D.position;\n command.impulsePoint[0] = impulsePosition.x;\n command.impulsePoint[1] = impulsePosition.y;\n command.impulsePoint[2] = impulsePosition.z;\n command.impulse[0] += force[0];\n command.impulse[1] += force[1];\n command.impulse[2] += force[2];\n }\n if (hasLinearVelocity) {\n command.flags |= PhysicsCommandFlag.SetLinearVelocity;\n command.linearVelocity[0] = linearVelocity[0];\n command.linearVelocity[1] = linearVelocity[1];\n command.linearVelocity[2] = linearVelocity[2];\n }\n if (hasAngularVelocity) {\n command.flags |= PhysicsCommandFlag.SetAngularVelocity;\n command.angularVelocity[0] = angularVelocity[0];\n command.angularVelocity[1] = angularVelocity[1];\n command.angularVelocity[2] = angularVelocity[2];\n }\n\n entity.removeComponent(PhysicsManipulation);\n });\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics-transport.js","sources":["../../src/physics/physics-transport.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"physics-transport.js","sources":["../../src/physics/physics-transport.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { PhysicsRuntime } from './physics-runtime.js';\nimport type {\n PhysicsWorkerInputMessage,\n PhysicsWorkerOutputMessage,\n} from './physics-worker-protocol.js';\n\nexport interface PhysicsTransportErrorEvent {\n message: string;\n}\n\n/** Message transport shared by worker and inline physics execution. */\nexport interface PhysicsTransport {\n onmessage: ((event: MessageEvent<PhysicsWorkerOutputMessage>) => void) | null;\n onerror: ((event: PhysicsTransportErrorEvent) => void) | null;\n onmessageerror: (() => void) | null;\n postMessage(\n message: PhysicsWorkerInputMessage,\n transfer?: Transferable[],\n ): void;\n terminate(): void;\n}\n\nclass MainThreadPhysicsTransport implements PhysicsTransport {\n onmessage:\n | ((event: MessageEvent<PhysicsWorkerOutputMessage>) => void)\n | null = null;\n onerror: ((event: PhysicsTransportErrorEvent) => void) | null = null;\n onmessageerror: (() => void) | null = null;\n\n private runtime?: PhysicsRuntime;\n private messageQueue = Promise.resolve();\n private terminated = false;\n\n postMessage(message: PhysicsWorkerInputMessage): void {\n if (this.terminated) {\n return;\n }\n this.messageQueue = this.messageQueue\n .then(() => this.handleMessage(message))\n .catch((error) => {\n if (!this.terminated) {\n this.onerror?.({\n message: error instanceof Error ? error.message : String(error),\n });\n }\n });\n }\n\n terminate(): void {\n if (this.terminated) {\n return;\n }\n this.terminated = true;\n this.runtime?.destroy();\n this.runtime = undefined;\n this.onmessage = null;\n this.onerror = null;\n this.onmessageerror = null;\n }\n\n private async getRuntime(): Promise<PhysicsRuntime> {\n if (!this.runtime) {\n const { PhysicsRuntime } = await import('./physics-runtime.js');\n if (this.terminated) {\n throw new Error('Physics transport was terminated during startup');\n }\n this.runtime = new PhysicsRuntime();\n }\n return this.runtime;\n }\n\n private emit(message: PhysicsWorkerOutputMessage): void {\n if (!this.terminated) {\n this.onmessage?.({\n data: message,\n } as MessageEvent<PhysicsWorkerOutputMessage>);\n }\n }\n\n private async handleMessage(\n message: PhysicsWorkerInputMessage,\n ): Promise<void> {\n const runtime = await this.getRuntime();\n switch (message.type) {\n case 'init':\n await runtime.initialize(message.gravity);\n this.emit({ type: 'ready' });\n break;\n case 'set-gravity':\n runtime.setGravity(message.gravity);\n break;\n case 'add-body':\n try {\n const centerOfMass = runtime.addBody(message);\n this.emit({\n type: 'body-created',\n handle: message.handle,\n centerOfMass,\n });\n } catch (error) {\n this.emit({\n type: 'error',\n handle: message.handle,\n message: error instanceof Error ? error.message : String(error),\n });\n }\n break;\n case 'remove-body':\n runtime.removeBody(message.handle);\n break;\n case 'step': {\n const result = runtime.step(message.buffer);\n if (result.error) {\n this.emit({ type: 'error', message: result.error });\n }\n this.emit({ type: 'step-result', buffer: result.buffer });\n break;\n }\n }\n }\n}\n\nexport function createPhysicsTransport(useWorker: boolean): PhysicsTransport {\n if (!useWorker) {\n return new MainThreadPhysicsTransport();\n }\n return new Worker(new URL('./physics-worker.js', import.meta.url), {\n type: 'module',\n }) as PhysicsTransport;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics-worker-protocol.js","sources":["../../src/physics/physics-worker-protocol.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAEI,MAAM,wBAAwB,GAAG;AAExC;;;AAGG;AACI,MAAM,oBAAoB,GAAG;AAC7B,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;AAEpD,MAAM,2BAA2B,GAAG;AACpC,MAAM,4BAA4B,GAAG;AAiKtC,SAAU,yBAAyB,CACvC,YAAoB,EACpB,cAAsB,EAAA;AAEtB,IAAA,QACE,oBAAoB;AACpB,QAAA,IAAI,CAAC,GAAG,CACN,YAAY,GAAG,2BAA2B,GAAG,CAAC,EAC9C,cAAc,GAAG,4BAA4B,GAAG,CAAC,CAClD;AAEL;AAEM,SAAU,uBAAuB,CACrC,MAAc,EACd,WAAmB,EAAA;AAEnB,IAAA,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxB,QAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC7B,QAAA,MAAM,IAAI,CAAC;AACX,QAAA,WAAW,GAAG,MAAM,GAAG,CAAC,EACxB;AACA,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,GAAG,MAAM;AAC5C,IAAA,IAAI,WAAW,KAAK,CAAC,EAAE;QACrB,OAAO;AACL,YAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT,YAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACV;IACH;IACA,OAAO;AACL,QAAA,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACpB,QAAA,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACpB;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"physics-worker-protocol.js","sources":["../../src/physics/physics-worker-protocol.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport const PHYSICS_PROTOCOL_VERSION = 1;\n\n/**\n * The header is deliberately one cache line. Integer fields use an Int32Array\n * view and the delta field uses a Float32Array view over the same buffer.\n */\nexport const PHYSICS_HEADER_WORDS = 16;\nexport const PHYSICS_HEADER_BYTES = PHYSICS_HEADER_WORDS * 4;\n\nexport const PHYSICS_INPUT_RECORD_FLOATS = 24;\nexport const PHYSICS_OUTPUT_RECORD_FLOATS = 14;\n\nexport const enum PhysicsHeaderIndex {\n Version = 0,\n Sequence = 1,\n CommandCount = 2,\n ResultCount = 3,\n Status = 4,\n StepCount = 5,\n Delta = 8,\n}\n\nexport const enum PhysicsExchangeStatus {\n Ok = 0,\n ResultsTruncated = 1 << 0,\n StepFailed = 1 << 1,\n}\n\nexport const enum PhysicsCommandFlag {\n SetTargetTransform = 1 << 0,\n SetTransform = 1 << 1,\n ResetLinearVelocity = 1 << 2,\n ResetAngularVelocity = 1 << 3,\n ApplyImpulse = 1 << 4,\n SetLinearVelocity = 1 << 5,\n SetAngularVelocity = 1 << 6,\n SetGravityFactor = 1 << 7,\n SetLinearDamping = 1 << 8,\n SetAngularDamping = 1 << 9,\n}\n\nexport const enum PhysicsInputOffset {\n Handle = 0,\n Flags = 1,\n PositionX = 2,\n PositionY = 3,\n PositionZ = 4,\n QuaternionX = 5,\n QuaternionY = 6,\n QuaternionZ = 7,\n QuaternionW = 8,\n ImpulsePointX = 9,\n ImpulsePointY = 10,\n ImpulsePointZ = 11,\n ImpulseX = 12,\n ImpulseY = 13,\n ImpulseZ = 14,\n LinearVelocityX = 15,\n LinearVelocityY = 16,\n LinearVelocityZ = 17,\n AngularVelocityX = 18,\n AngularVelocityY = 19,\n AngularVelocityZ = 20,\n GravityFactor = 21,\n LinearDamping = 22,\n AngularDamping = 23,\n}\n\nexport const enum PhysicsOutputOffset {\n Handle = 0,\n PositionX = 1,\n PositionY = 2,\n PositionZ = 3,\n QuaternionX = 4,\n QuaternionY = 5,\n QuaternionZ = 6,\n QuaternionW = 7,\n LinearVelocityX = 8,\n LinearVelocityY = 9,\n LinearVelocityZ = 10,\n AngularVelocityX = 11,\n AngularVelocityY = 12,\n AngularVelocityZ = 13,\n}\n\nexport type PhysicsWorkerBodyState = 'STATIC' | 'DYNAMIC' | 'KINEMATIC';\nexport type PhysicsWorkerShapeType =\n | 'Sphere'\n | 'Box'\n | 'Cylinder'\n | 'Capsules'\n | 'ConvexHull'\n | 'TriMesh';\n\nexport interface PhysicsWorkerShapeDescriptor {\n type: PhysicsWorkerShapeType;\n dimensions: [number, number, number];\n density: number;\n restitution: number;\n friction: number;\n vertices?: ArrayBuffer;\n indices?: ArrayBuffer;\n}\n\nexport interface PhysicsWorkerInitMessage {\n type: 'init';\n gravity: [number, number, number];\n}\n\nexport interface PhysicsWorkerSetGravityMessage {\n type: 'set-gravity';\n gravity: [number, number, number];\n}\n\nexport interface PhysicsWorkerAddBodyMessage {\n type: 'add-body';\n handle: number;\n shape: PhysicsWorkerShapeDescriptor;\n state: PhysicsWorkerBodyState;\n position: [number, number, number];\n quaternion: [number, number, number, number];\n linearDamping: number;\n angularDamping: number;\n gravityFactor: number;\n centerOfMass: [number, number, number];\n}\n\nexport interface PhysicsWorkerRemoveBodyMessage {\n type: 'remove-body';\n handle: number;\n}\n\nexport interface PhysicsWorkerStepMessage {\n type: 'step';\n buffer: ArrayBuffer;\n}\n\nexport type PhysicsWorkerInputMessage =\n | PhysicsWorkerInitMessage\n | PhysicsWorkerSetGravityMessage\n | PhysicsWorkerAddBodyMessage\n | PhysicsWorkerRemoveBodyMessage\n | PhysicsWorkerStepMessage;\n\nexport interface PhysicsWorkerReadyMessage {\n type: 'ready';\n}\n\nexport interface PhysicsWorkerBodyCreatedMessage {\n type: 'body-created';\n handle: number;\n centerOfMass: [number, number, number];\n}\n\nexport interface PhysicsWorkerStepResultMessage {\n type: 'step-result';\n buffer: ArrayBuffer;\n}\n\nexport interface PhysicsWorkerErrorMessage {\n type: 'error';\n message: string;\n handle?: number;\n}\n\nexport type PhysicsWorkerOutputMessage =\n | PhysicsWorkerReadyMessage\n | PhysicsWorkerBodyCreatedMessage\n | PhysicsWorkerStepResultMessage\n | PhysicsWorkerErrorMessage;\n\nexport function physicsExchangeByteLength(\n commandCount: number,\n resultCapacity: number,\n): number {\n return (\n PHYSICS_HEADER_BYTES +\n Math.max(\n commandCount * PHYSICS_INPUT_RECORD_FLOATS * 4,\n resultCapacity * PHYSICS_OUTPUT_RECORD_FLOATS * 4,\n )\n );\n}\n\nexport function getCapsuleAxisEndpoints(\n radius: number,\n totalHeight: number,\n): [[number, number, number], [number, number, number]] | null {\n if (\n !Number.isFinite(radius) ||\n !Number.isFinite(totalHeight) ||\n radius <= 0 ||\n totalHeight < radius * 2\n ) {\n return null;\n }\n const halfSegment = totalHeight / 2 - radius;\n if (halfSegment === 0) {\n return [\n [0, 0, 0],\n [0, 0, 0],\n ];\n }\n return [\n [0, -halfSegment, 0],\n [0, halfSegment, 0],\n ];\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAEI,MAAM,wBAAwB,GAAG;AAExC;;;AAGG;AACI,MAAM,oBAAoB,GAAG;AAC7B,MAAM,oBAAoB,GAAG,oBAAoB,GAAG;AAEpD,MAAM,2BAA2B,GAAG;AACpC,MAAM,4BAA4B,GAAG;AAiKtC,SAAU,yBAAyB,CACvC,YAAoB,EACpB,cAAsB,EAAA;AAEtB,IAAA,QACE,oBAAoB;AACpB,QAAA,IAAI,CAAC,GAAG,CACN,YAAY,GAAG,2BAA2B,GAAG,CAAC,EAC9C,cAAc,GAAG,4BAA4B,GAAG,CAAC,CAClD;AAEL;AAEM,SAAU,uBAAuB,CACrC,MAAc,EACd,WAAmB,EAAA;AAEnB,IAAA,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxB,QAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC7B,QAAA,MAAM,IAAI,CAAC;AACX,QAAA,WAAW,GAAG,MAAM,GAAG,CAAC,EACxB;AACA,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,GAAG,MAAM;AAC5C,IAAA,IAAI,WAAW,KAAK,CAAC,EAAE;QACrB,OAAO;AACL,YAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT,YAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACV;IACH;IACA,OAAO;AACL,QAAA,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACpB,QAAA,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;KACpB;AACH;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics-worker-utils.js","sources":["../../src/physics/physics-worker-utils.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"physics-worker-utils.js","sources":["../../src/physics/physics-worker-utils.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nexport function reusableFloat32View(\n current: Float32Array | undefined,\n buffer: ArrayBufferLike,\n): Float32Array {\n return current?.buffer === buffer ? current : new Float32Array(buffer);\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAEG,SAAU,mBAAmB,CACjC,OAAiC,EACjC,MAAuB,EAAA;IAEvB,OAAO,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,MAAM,GAAG,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC;AACxE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics-worker.js","sources":["../../src/physics/physics-worker.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;AAKG;AAQH,MAAM,WAAW,GAAG,IAMnB;AAED,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE;AAEpC,SAAS,WAAW,CAClB,OAAmC,EACnC,WAA2B,EAAE,EAAA;AAE7B,IAAA,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC5C;AAEA,eAAe,aAAa,CAC1B,OAAkC,EAAA;AAElC,IAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AACzC,YAAA,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC9B;AACF,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC;AACF,QAAA,KAAK,UAAU;AACb,YAAA,IAAI;gBACF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,gBAAA,WAAW,CAAC;AACV,oBAAA,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,YAAY;AACb,iBAAA,CAAC;YACJ;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,WAAW,CAAC;AACV,oBAAA,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,oBAAA,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAChE,iBAAA,CAAC;YACJ;YACA;AACF,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;YAClC;QACF,KAAK,MAAM,EAAE;YACX,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACvD;AACA,YAAA,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE;AAC1D,gBAAA,MAAM,CAAC,MAAM;AACd,aAAA,CAAC;YACF;QACF;;AAEJ;AAEA,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE;AACpC,WAAW,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;AAChC,IAAA,YAAY,GAAG;SACZ,IAAI,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;AACpC,SAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,QAAA,WAAW,CAAC;AACV,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAChE,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"physics-worker.js","sources":["../../src/physics/physics-worker.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { PhysicsRuntime } from './physics-runtime.js';\nimport type {\n PhysicsWorkerInputMessage,\n PhysicsWorkerOutputMessage,\n} from './physics-worker-protocol.js';\n\nconst workerScope = self as unknown as {\n onmessage: ((event: MessageEvent<PhysicsWorkerInputMessage>) => void) | null;\n postMessage(\n message: PhysicsWorkerOutputMessage,\n transfer?: Transferable[],\n ): void;\n};\n\nconst runtime = new PhysicsRuntime();\n\nfunction postMessage(\n message: PhysicsWorkerOutputMessage,\n transfer: Transferable[] = [],\n): void {\n workerScope.postMessage(message, transfer);\n}\n\nasync function handleMessage(\n message: PhysicsWorkerInputMessage,\n): Promise<void> {\n switch (message.type) {\n case 'init':\n await runtime.initialize(message.gravity);\n postMessage({ type: 'ready' });\n break;\n case 'set-gravity':\n runtime.setGravity(message.gravity);\n break;\n case 'add-body':\n try {\n const centerOfMass = runtime.addBody(message);\n postMessage({\n type: 'body-created',\n handle: message.handle,\n centerOfMass,\n });\n } catch (error) {\n postMessage({\n type: 'error',\n handle: message.handle,\n message: error instanceof Error ? error.message : String(error),\n });\n }\n break;\n case 'remove-body':\n runtime.removeBody(message.handle);\n break;\n case 'step': {\n const result = runtime.step(message.buffer);\n if (result.error) {\n postMessage({ type: 'error', message: result.error });\n }\n postMessage({ type: 'step-result', buffer: result.buffer }, [\n result.buffer,\n ]);\n break;\n }\n }\n}\n\nlet messageQueue = Promise.resolve();\nworkerScope.onmessage = (event) => {\n messageQueue = messageQueue\n .then(() => handleMessage(event.data))\n .catch((error) => {\n postMessage({\n type: 'error',\n message: error instanceof Error ? error.message : String(error),\n });\n });\n};\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAQH,MAAM,WAAW,GAAG,IAMnB;AAED,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE;AAEpC,SAAS,WAAW,CAClB,OAAmC,EACnC,WAA2B,EAAE,EAAA;AAE7B,IAAA,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC5C;AAEA,eAAe,aAAa,CAC1B,OAAkC,EAAA;AAElC,IAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,QAAA,KAAK,MAAM;YACT,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;AACzC,YAAA,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC9B;AACF,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC;AACF,QAAA,KAAK,UAAU;AACb,YAAA,IAAI;gBACF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AAC7C,gBAAA,WAAW,CAAC;AACV,oBAAA,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,YAAY;AACb,iBAAA,CAAC;YACJ;YAAE,OAAO,KAAK,EAAE;AACd,gBAAA,WAAW,CAAC;AACV,oBAAA,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,OAAO,CAAC,MAAM;AACtB,oBAAA,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAChE,iBAAA,CAAC;YACJ;YACA;AACF,QAAA,KAAK,aAAa;AAChB,YAAA,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;YAClC;QACF,KAAK,MAAM,EAAE;YACX,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACvD;AACA,YAAA,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE;AAC1D,gBAAA,MAAM,CAAC,MAAM;AACd,aAAA,CAAC;YACF;QACF;;AAEJ;AAEA,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE;AACpC,WAAW,CAAC,SAAS,GAAG,CAAC,KAAK,KAAI;AAChC,IAAA,YAAY,GAAG;SACZ,IAAI,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;AACpC,SAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,QAAA,WAAW,CAAC;AACV,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAChE,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physicsBody.js","sources":["../../src/physics/physicsBody.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"physicsBody.js","sources":["../../src/physics/physicsBody.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Types, createComponent } from '../ecs/component.js';\n\n/** Motion type for {@link PhysicsBody}. @category Physics */\nexport const PhysicsState = {\n /** Static bodies are bodies which never move. Use this motion type for your immovable objects like walls and floors.\n * It would still affect other bodies in the engine. */\n Static: 'STATIC',\n /** Bodies which can move and respond to forces, collisions, and gravity. */\n Dynamic: 'DYNAMIC',\n /** Kinematic bodies that can move just like dynamic bodies. The difference is that kinematic bodies won't be affected by any other bodies.\n * Kinematic bodies will still push dynamic bodies out of the way but the kinematic body won't be affected by those collisions. */\n Kinematic: 'KINEMATIC',\n} as const;\n\nexport const DEFAULT_LINEAR_DAMPING = 0.0;\nexport const DEFAULT_ANGULAR_DAMPING = 0.0;\nexport const DEFAULT_GRAVITY_FACTOR = 1.0;\n\n/**\n * Component for physics bodies. A physics body is a virtual object that represents a physical\n * object in a simulation.\n *\n * @remarks\n * - Static bodies are used for immovable objects like walls and floors.\n * - Dynamic bodies respond to forces, collisions, and gravity.\n * - Kinematic bodies can be moved programmatically but don't respond to physics forces.\n * - Internal properties like `_engineBody` are managed automatically by {@link PhysicsSystem}.\n *\n * @example Add a dynamic physics body to an entity\n * ```ts\n * entity.addComponent(PhysicsBody, {\n * state: PhysicsState.Dynamic\n * })\n * ```\n *\n * @category Physics\n * @see {@link PhysicsSystem}\n * @see {@link PhysicsShape}\n */\nexport const PhysicsBody = createComponent(\n 'PhysicsBody',\n {\n /** The body's motion type in Physics Engine. {@link PhysicsState} */\n state: {\n type: Types.Enum,\n enum: PhysicsState,\n default: PhysicsState.Dynamic,\n },\n /**\n * Linear velocity damping. Reactive: mutating it via\n * `setValue(PhysicsBody, 'linearDamping', ...)` after the body is created is\n * applied to the running simulation on the next frame.\n */\n linearDamping: { type: Types.Float32, default: 0.0 },\n /**\n * Angular velocity damping. Reactive: mutating it via\n * `setValue(PhysicsBody, 'angularDamping', ...)` after the body is created is\n * applied to the running simulation on the next frame.\n */\n angularDamping: { type: Types.Float32, default: 0.0 },\n /**\n * Per-body gravity multiplier (`0` floats, `1` is normal gravity). Reactive:\n * mutating it via `setValue(PhysicsBody, 'gravityFactor', ...)` after the body\n * is created is applied to the running simulation on the next frame.\n */\n gravityFactor: { type: Types.Float32, default: 1.0 },\n centerOfMass: { type: Types.Vec3, default: [Infinity, Infinity, Infinity] },\n _linearVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },\n _angularVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },\n _engineBody: { type: Types.Float64, default: 0 },\n _engineOffset: { type: Types.Float64, default: 0 },\n /**\n * Last `gravityFactor` value pushed to the engine. Internal shadow used by\n * the reactive sync to detect changes without reading back from Havok.\n */\n _engineGravityFactor: {\n type: Types.Float32,\n default: 1.0,\n },\n /**\n * Last `linearDamping` value pushed to the engine. Internal shadow used by\n * the reactive sync to detect changes without reading back from Havok.\n */\n _engineLinearDamping: {\n type: Types.Float32,\n default: 0.0,\n },\n /**\n * Last `angularDamping` value pushed to the engine. Internal shadow used by\n * the reactive sync to detect changes without reading back from Havok.\n */\n _engineAngularDamping: {\n type: Types.Float32,\n default: 0.0,\n },\n },\n 'Component to define physics behavior of an entity.',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACO,MAAM,YAAY,GAAG;AAC1B;AACwD;AACxD,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,OAAO,EAAE,SAAS;AAClB;AACoI;AACpI,IAAA,SAAS,EAAE,WAAW;;AAGjB,MAAM,sBAAsB,GAAG;AAC/B,MAAM,uBAAuB,GAAG;AAChC,MAAM,sBAAsB,GAAG;AAEtC;;;;;;;;;;;;;;;;;;;;AAoBG;AACI,MAAM,WAAW,GAAG,eAAe,CACxC,aAAa,EACb;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,OAAO;AAC9B,KAAA;AACD;;;;AAIG;IACH,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;AACpD;;;;AAIG;IACH,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;AACrD;;;;AAIG;IACH,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;AACpD,IAAA,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;AAC3E,IAAA,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AAC/D,IAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAChE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;IAChD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;AAClD;;;AAGG;AACH,IAAA,oBAAoB,EAAE;QACpB,IAAI,EAAE,KAAK,CAAC,OAAO;AACnB,QAAA,OAAO,EAAE,GAAG;AACb,KAAA;AACD;;;AAGG;AACH,IAAA,oBAAoB,EAAE;QACpB,IAAI,EAAE,KAAK,CAAC,OAAO;AACnB,QAAA,OAAO,EAAE,GAAG;AACb,KAAA;AACD;;;AAGG;AACH,IAAA,qBAAqB,EAAE;QACrB,IAAI,EAAE,KAAK,CAAC,OAAO;AACnB,QAAA,OAAO,EAAE,GAAG;AACb,KAAA;CACF,EACD,oDAAoD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physicsManipulation.js","sources":["../../src/physics/physicsManipulation.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"physicsManipulation.js","sources":["../../src/physics/physicsManipulation.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Types, createComponent } from '../ecs/component.js';\n\n/**\n * Component for applying one‑time physics manipulations to an entity.\n *\n * @remarks\n * - This component is automatically removed after the manipulations are applied.\n * - Force is applied as an impulse at the entity's center of mass.\n * - Setting linear or angular velocity overrides the current velocity.\n * - All manipulations are applied in a single frame, then the component is removed.\n * - Requires the entity to have {@link PhysicsBody}.\n *\n * @example Apply an upward force to make an object jump\n * ```ts\n * entity.addComponent(PhysicsManipulation, {\n * force: [0, 10, 0]\n * })\n * ```\n *\n * @example Set specific velocity for controlled movement\n * ```ts\n * entity.addComponent(PhysicsManipulation, {\n * linearVelocity: [5, 0, 0],\n * angularVelocity: [0, 2, 0]\n * })\n * ```\n *\n * @category Physics\n * @see {@link PhysicsSystem}\n * @see {@link PhysicsBody}\n */\n\nexport const PhysicsManipulation = createComponent(\n 'PhysicsManipulation',\n {\n force: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },\n linearVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },\n angularVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },\n },\n 'Component to apply physics manipulations to an entity.',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AAEI,MAAM,mBAAmB,GAAG,eAAe,CAChD,qBAAqB,EACrB;AACE,IAAA,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AACrD,IAAA,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AAC9D,IAAA,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;CAChE,EACD,wDAAwD;;;;"}
|