@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/grab-helpers.js.map +1 -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.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.js +3 -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.js +2 -3
- package/dist/init/world-initializer.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- package/dist/project/paths.js.map +1 -1
- package/dist/project/types.js.map +1 -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/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":"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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physicsShape.js","sources":["../../src/physics/physicsShape.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"physicsShape.js","sources":["../../src/physics/physicsShape.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/** Available physics shape types for {@link PhysicsShape}. @category Physics */\nexport const PhysicsShapeType = {\n /** The sphere is described by just the radius in dimensions[0]. Efficient for round objects. */\n Sphere: 'Sphere',\n /** A box shape is described by the `dimensions` as [width, height, depth]. Good for rectangular objects. */\n Box: 'Box',\n /** A cylinder shape is defined by the radius in dimensions[0] and height in dimensions[1]. */\n Cylinder: 'Cylinder',\n /** Capsules are similar to cylinders, but have two half-spheres on each end.\n * A Capsules shape uses radius in dimensions[0] and total end-to-end height in dimensions[1],\n * which must be at least twice the radius. */\n Capsules: 'Capsules',\n /** A convex is a shape that, if two points are part of the shape, then the segment between these two points is\n * also part of the shape. The physics engine would creates a convex wrapper around the mesh. This is a great\n * approximation for most objects since it's more accurate than primitives and much more efficient than TriMesh. */\n ConvexHull: 'ConvexHull',\n /** Uses exact mesh geometry in the physics engine. This will give the closest match to your render geometry but\n * may cause expensive compute load when two complex mesh shapes collide with each other. Typically used for static objects. */\n TriMesh: 'TriMesh',\n /** Automatically detects the best shape from the entity's Three.js geometry. The shape type mapping is\n * SphereGeometry -> PhysicsShapeType.Sphere,\n * BoxGeometry | PlaneGeometry -> PhysicsShapeType.Box,\n * CylinderGeometry -> PhysicsShapeType.Cylinder,\n * default -> PhysicsShapeType.ConvexHull,\n * When this type is selected, the dimensions field in PhysicsShape will be overridden by the size of the Three.js geometry.\n */\n Auto: 'Auto',\n} as const;\n\nexport const DEFAULT_DENSITY = 1.0;\nexport const DEFAULT_RESTITUTION = 0.0;\nexport const DEFAULT_FRICTION = 0.5;\n\n/**\n * Component for defining the collision shape and material properties of a physics entity.\n *\n * @remarks\n * - Material properties (density, restitution, friction) affect physics behavior.\n * - Higher density increases mass, affecting how the object responds to forces.\n *\n * @example Auto‑detect shape from geometry\n * ```ts\n * entity.addComponent(PhysicsShape, {\n * shape: PhysicsShapeType.Auto\n * })\n * ```\n *\n * @example Create a bouncy sphere\n * ```ts\n * entity.addComponent(PhysicsShape, {\n * shape: PhysicsShapeType.Sphere,\n * dimensions: [0.5, 0, 0], // radius = 0.5\n * restitution: 0.8, // bouncy\n * friction: 0.1 // low friction\n * })\n * ```\n *\n * @example Create a heavy box\n * ```ts\n * entity.addComponent(PhysicsShape, {\n * shape: PhysicsShapeType.Box,\n * dimensions: [2, 1, 1], // 2x1x1 meters\n * density: 5.0, // high density\n * friction: 0.9 // high friction\n * })\n * ```\n *\n * @category Physics\n * @see {@link PhysicsSystem}\n * @see {@link PhysicsBody}\n */\nexport const PhysicsShape = createComponent(\n 'PhysicsShape',\n {\n /** The type of the shape defined in the Physics engine. {@link PhysicsShapeType} */\n shape: {\n type: Types.Enum,\n enum: PhysicsShapeType,\n default: PhysicsShapeType.Auto,\n },\n /** The dimension of the physics shape. The definition of it is based on the selection of {@link PhysicsShapeType}. */\n dimensions: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },\n /** The density of the physics shape. It is used to calculate the mass. */\n density: { type: Types.Float32, default: 1.0 },\n /** Restitution controls bounciness (0 = no bounce, 1 = perfect bounce). */\n restitution: { type: Types.Float32, default: 0.0 },\n /** Friction to define the sliding behavior on surfaces. */\n friction: { type: Types.Float32, default: 0.5 },\n _engineShape: { type: Types.Float64, default: 0 },\n },\n 'Component to define physics shape of an entity.',\n);\n"],"names":[],"mappings":";;AAAA;;;;;AAKG;AAIH;AACO,MAAM,gBAAgB,GAAG;;AAE9B,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,GAAG,EAAE,KAAK;;AAEV,IAAA,QAAQ,EAAE,UAAU;AACpB;;AAE8C;AAC9C,IAAA,QAAQ,EAAE,UAAU;AACpB;;AAEmH;AACnH,IAAA,UAAU,EAAE,YAAY;AACxB;AAC+H;AAC/H,IAAA,OAAO,EAAE,SAAS;AAClB;;;;;;AAMG;AACH,IAAA,IAAI,EAAE,MAAM;;AAGP,MAAM,eAAe,GAAG;AACxB,MAAM,mBAAmB,GAAG;AAC5B,MAAM,gBAAgB,GAAG;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AACI,MAAM,YAAY,GAAG,eAAe,CACzC,cAAc,EACd;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,gBAAgB,CAAC,IAAI;AAC/B,KAAA;;AAED,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;;IAE1D,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAE9C,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAElD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;IAC/C,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;CAClD,EACD,iDAAiD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/physics/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/physics/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\nimport { mergeGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js';\nimport {\n Vector3,\n Mesh,\n BoxGeometry,\n SphereGeometry,\n CylinderGeometry,\n PlaneGeometry,\n BufferGeometry,\n Box3,\n Object3D,\n Matrix4,\n Quaternion,\n} from '../runtime/index.js';\nimport { PhysicsShapeType } from './physicsShape';\n\nconst tempVec1 = new Vector3();\nconst tempVec2 = new Vector3();\nconst tempQuat = new Quaternion();\nconst tempMatrix = new Matrix4();\nconst tempMatrix2 = new Matrix4();\n\nconst UNIT_SCALE = new Vector3(1, 1, 1);\n\n/**\n * Build a sequential index buffer (`0, 1, 2, ...`) for a non-indexed geometry.\n *\n * Three.js `BufferGeometry.index` is `null` for non-indexed geometry, where the\n * position attribute already lists vertices in triangle order. Tri-mesh\n * colliders need an explicit index list, so synthesize the implicit one.\n *\n * @param vertexCount Number of vertices (i.e. `geometry.attributes.position.count`).\n */\nexport function sequentialIndices(vertexCount: number): Uint32Array {\n const indices = new Uint32Array(vertexCount);\n for (let i = 0; i < vertexCount; i++) {\n indices[i] = i;\n }\n return indices;\n}\n\nexport interface ShapeDetectionResult {\n shapeType: string;\n dimensions: [number, number, number] | null;\n}\n\n/**\n * Automatically detects the best physics shape type and calculates dimensions based on the entity's Three.js geometry\n */\nexport function detectShapeFromGeometry(\n object3D: Object3D,\n): ShapeDetectionResult {\n // When object3D is not a Mesh we build a merged geometry purely to inspect\n // it; it must be disposed before returning so shape auto-detection doesn't\n // leak one merged geometry per call. A Mesh's own geometry stays in use and\n // is never owned here. The try/finally guarantees disposal on every return.\n const ownsGeometry = !(object3D instanceof Mesh);\n const geometry =\n object3D instanceof Mesh\n ? object3D.geometry\n : generateMergedGeometry(object3D);\n\n try {\n // Check for specific geometry types and calculate their dimensions\n if (geometry instanceof SphereGeometry) {\n const radius = geometry.parameters.radius ?? 1;\n return {\n shapeType: PhysicsShapeType.Sphere,\n dimensions: [radius, 0, 0], // Only radius is needed for sphere\n };\n }\n\n if (geometry instanceof BoxGeometry) {\n const width = geometry.parameters.width ?? 1;\n const height = geometry.parameters.height ?? 1;\n const depth = geometry.parameters.depth ?? 1;\n return {\n shapeType: PhysicsShapeType.Box,\n dimensions: [width, height, depth],\n };\n }\n\n if (geometry instanceof PlaneGeometry) {\n const width = geometry.parameters.width ?? 1;\n const height = geometry.parameters.height ?? 1;\n const thickness = 0.01; // Thin plane\n return {\n shapeType: PhysicsShapeType.Box,\n dimensions: [width, height, thickness],\n };\n }\n\n if (geometry instanceof CylinderGeometry) {\n const radiusTop = geometry.parameters.radiusTop ?? 1;\n const radiusBottom = geometry.parameters.radiusBottom ?? 1;\n if (radiusTop !== radiusBottom) {\n console.warn(\n 'PhysicsSystem: detected cylinder with different radiusTop and radiusBottom. Using average radius for the physics shape.',\n );\n }\n const height = geometry.parameters.height ?? 1;\n const avgRadius = (radiusTop + radiusBottom) / 2;\n return {\n shapeType: PhysicsShapeType.Cylinder,\n dimensions: [avgRadius, height, 0], // Approximate bounding dimensions\n };\n }\n\n // For generic BufferGeometry, fall back to the default ConvexHull shape type for better perf\n if (geometry instanceof BufferGeometry) {\n console.log(\n `PhysicsSystem: BufferGeometry detected for object ${object3D}, using ConvexHull.`,\n );\n return {\n shapeType: PhysicsShapeType.ConvexHull,\n dimensions: null,\n };\n }\n\n // Fallback for unknown geometry types\n console.warn(\n `PhysicsSystem: Unknown geometry type for object ${object3D}, falling back to Box`,\n );\n return {\n shapeType: PhysicsShapeType.Box,\n dimensions: calculateObject3DBounds(object3D),\n };\n } finally {\n if (ownsGeometry) {\n geometry.dispose();\n }\n }\n}\n\n/**\n * Calculates bounding box dimensions from Object3D for fallback cases\n */\nexport function calculateObject3DBounds(\n object3D: Object3D,\n): [number, number, number] {\n try {\n // Create a bounding box for the object\n const box = new Box3().setFromObject(object3D);\n\n if (!box.isEmpty()) {\n const size = new Vector3();\n box.getSize(size);\n\n // Convert to half-extents and ensure minimum size\n const dimensions: [number, number, number] = [\n Math.max(size.x, 0.01),\n Math.max(size.y, 0.01),\n Math.max(size.z, 0.01),\n ];\n\n console.log(\n `PhysicsSystem: Calculated Object3D bounds: [${dimensions.join(', ')}]`,\n );\n return dimensions;\n } else {\n console.warn(\n 'PhysicsSystem: Object3D bounding box is empty, using default dimensions',\n );\n }\n } catch (error) {\n console.warn('PhysicsSystem: Failed to calculate Object3D bounds:', error);\n }\n\n // Final fallback if bounding box calculation fails\n return [1, 1, 1];\n}\n\nexport function generateMergedGeometry(object3D: Object3D): BufferGeometry {\n object3D.updateMatrixWorld(true);\n\n tempMatrix.copy(object3D.matrixWorld);\n\n tempMatrix.decompose(tempVec1, tempQuat, tempVec2);\n tempMatrix.compose(tempVec1, tempQuat, UNIT_SCALE);\n\n const geometries: BufferGeometry[] = [];\n object3D.traverse((child) => {\n if ((child as Mesh).isMesh && (child as Mesh).geometry) {\n const geometry = (child as Mesh).geometry.clone();\n geometry.applyMatrix4(child.matrixWorld);\n geometries.push(geometry);\n }\n });\n const mergedGeometry = mergeGeometries(geometries);\n // The per-child clones were only working copies for the merge; their data is\n // now copied into mergedGeometry, so free them to avoid leaking a clone of\n // every child geometry each time a merged collider is built.\n for (const geometry of geometries) {\n geometry.dispose();\n }\n tempMatrix2.copy(tempMatrix).invert();\n mergedGeometry.applyMatrix4(tempMatrix2);\n\n object3D.matrixWorld.copy(tempMatrix);\n\n return mergedGeometry;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sources":["../../src/project/normalize.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAmBH,MAAM,cAAc,GAAG;AACrB,IAAA,IAAI,EAAE,CAAC;AACP,IAAA,MAAM,EAAE,CAAC;CACD;AAEV;;;AAGG;AACG,SAAU,4BAA4B,CAC1C,KAAc,EAAA;IAEd,+BAA+B,CAAC,KAAK,CAAC;IACtC,MAAM,QAAQ,GAAG,KAA+B;AAChD,IAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK;IAC7B,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IAEjC,OAAO;AACL,QAAA,KAAK,EAAE,kCAAkC,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzD,EAAE;AACF,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI;AAClB,cAAE;AACF,cAAE;AACE,gBAAA,KAAK,EAAE;oBACL,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK;AAC9C,0BAAE;AACE,4BAAA,mBAAmB,EAAE;AACnB,gCAAA,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB;AACpC,6BAAA;AACF;AACH,0BAAE,qBAAqB,IAAI,MAAM,CAAC;AAChC,8BAAE;AACE,gCAAA,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB;AACtD;8BACD,EAAE,CAAC;AACV,iBAAA;aACF,CAAC;AACN,QAAA,IAAI,MAAM,CAAC,MAAM,IAAI;AACnB,cAAE;AACF,cAAE;AACE,gBAAA,MAAM,EAAE;oBACN,GAAG,MAAM,CAAC,MAAM;AAChB,oBAAA,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI;AAC1B,0BAAE;AACF,0BAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;AAC7C,iBAAA;aACF,CAAC;AACN,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI;AACrB,cAAE;cACA,EAAE,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;KACtD;AACH;AAEA;AACM,SAAU,0BAA0B,CACxC,KAAc,EAAA;IAEd,+BAA+B,CAAC,KAAK,CAAC;IACtC,MAAM,QAAQ,GAAG,KAA+B;AAChD,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG;AACxB,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,EAAE;IACX;AACA,IAAA,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ;AACnC,IAAA,MAAM,QAAQ,GACZ,cAAc,IAAI;AAChB,UAAE;AACF,UAAE;AACE,YAAA,IAAI,cAAc,CAAC,MAAM,IAAI;AAC3B,kBAAE;kBACA,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,cAAc,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC;AACrE,YAAA,IAAI,cAAc,CAAC,WAAW,IAAI;AAChC,kBAAE;kBACA,EAAE,WAAW,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC;AAChD,YAAA,IAAI,cAAc,CAAC,UAAU,IAAI;AAC/B,kBAAE;AACF,kBAAE;AACE,oBAAA,UAAU,EACR,OAAO,cAAc,CAAC,UAAU,KAAK;AACnC,0BAAE,wBAAwB,CAAC,cAAc,CAAC,UAAU;0BAClD,cAAc,CAAC,UAAU;iBAChC,CAAC;AACN,YAAA,IAAI,cAAc,CAAC,aAAa,IAAI;AAClC,kBAAE;kBACA,EAAE,aAAa,EAAE,cAAc,CAAC,aAAa,EAAE,CAAC;AACpD,YAAA,IAAI,cAAc,CAAC,kBAAkB,IAAI;AACvC,kBAAE;AACF,kBAAE;AACE,oBAAA,kBAAkB,EAAE,wBAAwB,CAC1C,cAAc,CAAC,kBAAkB,CAClC;iBACF,CAAC;SACP;IACP,OAAO;AACL,QAAA,IAAI,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;KAC1C;AACH;AAEA;AACM,SAAU,gCAAgC,CAAC,UAAkB,EAAA;AACjE,IAAA,OAAO,0BAA0B,CAAC,UAAU,EAAE,QAAQ,CAAC;AACzD;AAEA;AACM,SAAU,wBAAwB,CAAC,IAAsB,EAAA;;AAC7D,IAAA,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC;AAClD;AAEA,SAAS,WAAW,CAClB,MAA6C,EAAA;AAE7C,IAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,QAAA,OAAO,KAAK;IACd;AACA,IAAA,MAAM,WAAW,IACf,MAAM,CAAC,IAAI,KAAK,IAAI,GAAG,cAAc,GAAG,cAAc,CACpB;IACpC,OAAO;QACL,WAAW;QACX,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AACxD,QAAA,IAAI,MAAM,CAAC,cAAc,IAAI;AAC3B,cAAE;AACF,cAAE;AACE,gBAAA,cAAc,EAAE,mBAAmB,CACjC,MAAM,CAAC,cAAc,CACgB;aACxC,CAAC;AACN,QAAA,IAAI,MAAM,CAAC,mBAAmB,IAAI;AAChC,cAAE;cACA,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC;AACxD,QAAA,IAAI,MAAM,CAAC,sBAAsB,IAAI;AACnC,cAAE;cACA,EAAE,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,EAAE,CAAC;AAC9D,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI;AACrB,cAAE;cACA,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;KACpD;AACH;AAEA,SAAS,mBAAmB,CAC1B,MAEC,EAAA;IAED,OAAO,OAAO,MAAM,KAAK;AACvB,UAAE;AACF,UAAE;AACE,YAAA,GAAG,MAAM;AACT,YAAA,IAAI,MAAM,CAAC,aAAa,IAAI;AAC1B,kBAAE;kBACA,EAAE,aAAa,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;SAClD;AACP;AAEA,SAAS,eAAe,CACtB,MAA+B,EAAA;IAE/B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;QAC3C,GAAG;AACH,QAAA,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK;AAClE,KAAA,CAAC,CAC0C;AAChD;AAEA,SAAS,iBAAiB,CACxB,MAA6B,EAAA;IAE7B,MAAM,QAAQ,GAA0C,EAAE;AAC1D,IAAA,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;AAC7B,QAAA,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;AAC1C,YAAA,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;QACzC;aAAO;AACL,YAAA,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,GACtE,MAAM,CAAC,UAAU;YACnB,QAAQ,CAAC,UAAU,GAAG;AACpB,gBAAA,GAAG,IAAI;gBACP,IAAI,qBAAqB,IAAI;AAC3B,sBAAE;AACF,sBAAE;AACE,wBAAA,qBAAqB,EAAE,CAAC,GAAG,qBAAqB,CAAC;qBAClD,CAAC;AACN,gBAAA,IAAI,OAAO,eAAe,KAAK;AAC7B,sBAAE;AACE,wBAAA,eAAe,EAAE;AACf,4BAAA,GAAG,eAAe;AACnB,yBAAA;AACF;sBACD,eAAe,IAAI;AACnB,0BAAE;AACF,0BAAE,EAAE,eAAe,EAAE,CAAC;gBAC1B,IAAI,aAAa,IAAI;AACnB,sBAAE;AACF,sBAAE;AACE,wBAAA,aAAa,EAAE,cAAc,CAAC,aAAa,CAAC;qBAC7C,CAAC;aAIP;QACH;IACF;AACA,IAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;AAC3B,QAAA,QAAQ,CAAC,QAAQ;AACf,YAAA,OAAO,MAAM,CAAC,QAAQ,KAAK;kBACvB,MAAM,CAAC;AACT,kBAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;IAC9B;AACA,IAAA,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;AAC1B,QAAA,QAAQ,CAAC,OAAO;AACd,YAAA,OAAO,MAAM,CAAC,OAAO,KAAK;kBACtB,MAAM,CAAC;AACT,kBAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE;IAC7B;AACA,IAAA,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI,EAAE;AACrC,QAAA,QAAQ,CAAC,kBAAkB;AACzB,YAAA,OAAO,MAAM,CAAC,kBAAkB,KAAK;kBACjC,MAAM,CAAC;AACT,kBAAE,EAAE,GAAG,MAAM,CAAC,kBAAkB,EAAE;IACxC;AACA,IAAA,IAAI,MAAM,CAAC,kBAAkB,IAAI,IAAI,EAAE;AACrC,QAAA,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB;IACzD;AACA,IAAA,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE;AACzB,QAAA,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;IACjC;AACA,IAAA,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;AAC5B,QAAA,QAAQ,CAAC,SAAS;AAChB,YAAA,OAAO,MAAM,CAAC,SAAS,KAAK;kBACxB,MAAM,CAAC;AACT,kBAAE,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE;IAC/B;AACA,IAAA,OAAO,QAAQ;AACjB;;;;"}
|
|
1
|
+
{"version":3,"file":"normalize.js","sources":["../../src/project/normalize.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 { WorldOptions } from '../init/world-initializer.js';\nimport {\n normalizeProjectSourcePath,\n projectSceneSourcePathToRuntimeUrl,\n} from './paths.js';\nimport type {\n IwsdkProjectManifestV1,\n NormalizedProjectDevOptions,\n NormalizedProjectWorldOptions,\n ProjectFeatureOptions,\n ProjectRegexSpec,\n ProjectXRFeatureOptions,\n} from './types.js';\nimport { assertValidIwsdkProjectManifest } from './validation.js';\n\ntype RuntimeXROptions = Exclude<NonNullable<WorldOptions['xr']>, false>;\n\nconst TURNING_METHOD = {\n snap: 1,\n smooth: 2,\n} as const;\n\n/**\n * Normalize the JSON-safe world contract into the existing `World.create`\n * option shape. Asset and component values are intentionally not injected.\n */\nexport function normalizeProjectWorldOptions(\n value: unknown,\n): NormalizedProjectWorldOptions {\n assertValidIwsdkProjectManifest(value);\n const manifest = value as IwsdkProjectManifestV1;\n const source = manifest.world;\n const xr = normalizeXR(source.xr);\n\n return {\n level: projectSceneSourcePathToRuntimeUrl(manifest.scene),\n xr,\n ...(source.input == null\n ? {}\n : {\n input: {\n ...(typeof source.input.canvasPointerEvents === 'object'\n ? {\n canvasPointerEvents: {\n ...source.input.canvasPointerEvents,\n },\n }\n : 'canvasPointerEvents' in source.input\n ? {\n canvasPointerEvents: source.input.canvasPointerEvents,\n }\n : {}),\n },\n }),\n ...(source.render == null\n ? {}\n : {\n render: {\n ...source.render,\n ...(source.render.camera == null\n ? {}\n : { camera: { ...source.render.camera } }),\n },\n }),\n ...(source.features == null\n ? {}\n : { features: normalizeFeatures(source.features) }),\n };\n}\n\n/** Normalize manifest-owned development settings for Vite/plugin consumers. */\nexport function normalizeProjectDevOptions(\n value: unknown,\n): NormalizedProjectDevOptions {\n assertValidIwsdkProjectManifest(value);\n const manifest = value as IwsdkProjectManifestV1;\n const dev = manifest.dev;\n if (dev == null) {\n return {};\n }\n const sourceEmulator = dev.emulator;\n const emulator: NormalizedProjectDevOptions['emulator'] =\n sourceEmulator == null\n ? undefined\n : {\n ...(sourceEmulator.device == null\n ? {}\n : { device: sourceEmulator.device }),\n ...(sourceEmulator.iwer == null ? {} : { iwer: sourceEmulator.iwer }),\n ...(sourceEmulator.environment == null\n ? {}\n : { environment: sourceEmulator.environment }),\n ...(sourceEmulator.activation == null\n ? {}\n : {\n activation:\n typeof sourceEmulator.activation === 'object'\n ? projectRegexSpecToRegExp(sourceEmulator.activation)\n : sourceEmulator.activation,\n }),\n ...(sourceEmulator.injectOnBuild == null\n ? {}\n : { injectOnBuild: sourceEmulator.injectOnBuild }),\n ...(sourceEmulator.userAgentException == null\n ? {}\n : {\n userAgentException: projectRegexSpecToRegExp(\n sourceEmulator.userAgentException,\n ),\n }),\n };\n return {\n ...(emulator == null ? {} : { emulator }),\n };\n}\n\n/** Normalize an assets/components module declaration for Vite resolution. */\nexport function normalizeProjectModuleSourcePath(sourcePath: string): string {\n return normalizeProjectSourcePath(sourcePath, 'module');\n}\n\n/** Reconstruct a validated JSON regular-expression declaration. */\nexport function projectRegexSpecToRegExp(spec: ProjectRegexSpec): RegExp {\n return new RegExp(spec.source, spec.flags ?? '');\n}\n\nfunction normalizeXR(\n source: IwsdkProjectManifestV1['world']['xr'],\n): NonNullable<WorldOptions['xr']> {\n if (source === false) {\n return false;\n }\n const sessionMode = (\n source.mode === 'vr' ? 'immersive-vr' : 'immersive-ar'\n ) as RuntimeXROptions['sessionMode'];\n return {\n sessionMode,\n ...(source.offer == null ? {} : { offer: source.offer }),\n ...(source.referenceSpace == null\n ? {}\n : {\n referenceSpace: cloneReferenceSpace(\n source.referenceSpace,\n ) as RuntimeXROptions['referenceSpace'],\n }),\n ...(source.restoreCameraOnExit == null\n ? {}\n : { restoreCameraOnExit: source.restoreCameraOnExit }),\n ...(source.launchOnSessionGranted == null\n ? {}\n : { launchOnSessionGranted: source.launchOnSessionGranted }),\n ...(source.features == null\n ? {}\n : { features: cloneXRFeatures(source.features) }),\n };\n}\n\nfunction cloneReferenceSpace(\n source: NonNullable<\n Exclude<IwsdkProjectManifestV1['world']['xr'], false>['referenceSpace']\n >,\n) {\n return typeof source === 'string'\n ? source\n : {\n ...source,\n ...(source.fallbackOrder == null\n ? {}\n : { fallbackOrder: [...source.fallbackOrder] }),\n };\n}\n\nfunction cloneXRFeatures(\n source: ProjectXRFeatureOptions,\n): NonNullable<RuntimeXROptions['features']> {\n return Object.fromEntries(\n Object.entries(source).map(([key, value]) => [\n key,\n value != null && typeof value === 'object' ? { ...value } : value,\n ]),\n ) as NonNullable<RuntimeXROptions['features']>;\n}\n\nfunction normalizeFeatures(\n source: ProjectFeatureOptions,\n): NonNullable<WorldOptions['features']> {\n const features: NonNullable<WorldOptions['features']> = {};\n if (source.locomotion != null) {\n if (typeof source.locomotion === 'boolean') {\n features.locomotion = source.locomotion;\n } else {\n const { browserControls, initialPlayerPosition, turningMethod, ...rest } =\n source.locomotion;\n features.locomotion = {\n ...rest,\n ...(initialPlayerPosition == null\n ? {}\n : {\n initialPlayerPosition: [...initialPlayerPosition],\n }),\n ...(typeof browserControls === 'object'\n ? {\n browserControls: {\n ...browserControls,\n },\n }\n : browserControls == null\n ? {}\n : { browserControls }),\n ...(turningMethod == null\n ? {}\n : {\n turningMethod: TURNING_METHOD[turningMethod],\n }),\n } as Exclude<\n NonNullable<WorldOptions['features']>['locomotion'],\n boolean | undefined\n >;\n }\n }\n if (source.grabbing != null) {\n features.grabbing =\n typeof source.grabbing === 'boolean'\n ? source.grabbing\n : { ...source.grabbing };\n }\n if (source.physics != null) {\n features.physics =\n typeof source.physics === 'boolean'\n ? source.physics\n : { ...source.physics };\n }\n if (source.sceneUnderstanding != null) {\n features.sceneUnderstanding =\n typeof source.sceneUnderstanding === 'boolean'\n ? source.sceneUnderstanding\n : { ...source.sceneUnderstanding };\n }\n if (source.environmentRaycast != null) {\n features.environmentRaycast = source.environmentRaycast;\n }\n if (source.camera != null) {\n features.camera = source.camera;\n }\n if (source.spatialUI != null) {\n features.spatialUI =\n typeof source.spatialUI === 'boolean'\n ? source.spatialUI\n : { ...source.spatialUI };\n }\n return features;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sources":["../../src/project/paths.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"paths.js","sources":["../../src/project/paths.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 type ProjectSourcePathKind = 'module' | 'scene';\n\n/** Error raised when a project source path is not lexically root-confined. */\nexport class ProjectSourcePathError extends Error {\n constructor(\n readonly sourcePath: string,\n readonly kind: ProjectSourcePathKind,\n message: string,\n ) {\n super(message);\n this.name = 'ProjectSourcePathError';\n }\n}\n\n/**\n * Validate and normalize a project-owned source path without filesystem or\n * Node dependencies. Returned paths always begin with `./` and use `/`.\n */\nexport function normalizeProjectSourcePath(\n sourcePath: string,\n kind: ProjectSourcePathKind,\n): string {\n const fail = (message: string): never => {\n throw new ProjectSourcePathError(sourcePath, kind, message);\n };\n\n if (sourcePath.length === 0 || sourcePath.trim().length === 0) {\n return fail(`${kind} path must not be blank`);\n }\n if (sourcePath !== sourcePath.trim()) {\n return fail(`${kind} path must not have leading or trailing whitespace`);\n }\n if (sourcePath.includes('\\0')) {\n return fail(`${kind} path must not contain a null byte`);\n }\n if (sourcePath.includes('\\\\')) {\n return fail(`${kind} path must use forward slashes`);\n }\n if (sourcePath.includes('?') || sourcePath.includes('#')) {\n return fail(`${kind} path must not contain a query or fragment`);\n }\n if (\n sourcePath.startsWith('/') ||\n sourcePath.startsWith('//') ||\n /^[A-Za-z][A-Za-z\\d+.-]*:/u.test(sourcePath)\n ) {\n return fail(`${kind} path must be a local project-relative path`);\n }\n\n const withoutPrefix = sourcePath.startsWith('./')\n ? sourcePath.slice(2)\n : sourcePath;\n const segments = withoutPrefix.split('/');\n if (\n segments.length === 0 ||\n segments.some(\n (segment) => segment.length === 0 || segment === '.' || segment === '..',\n )\n ) {\n return fail(`${kind} path must not contain empty, \".\", or \"..\" segments`);\n }\n\n if (kind === 'scene') {\n if (segments[0] !== 'public' || segments[1] !== 'scenes') {\n return fail('scene path must stay inside public/scenes/');\n }\n if (!withoutPrefix.endsWith('.iwsdk.scene.json')) {\n return fail('scene path must end with .iwsdk.scene.json');\n }\n } else {\n const fileName = segments.at(-1)!;\n if (fileName.startsWith('.') || fileName.includes('.')) {\n return fail('module path must be extensionless');\n }\n }\n\n return `./${segments.join('/')}`;\n}\n\n/** Convert a validated public scene source path into its runtime URL. */\nexport function projectSceneSourcePathToRuntimeUrl(sourcePath: string): string {\n const normalized = normalizeProjectSourcePath(sourcePath, 'scene');\n return `./${normalized.slice('./public/'.length)}`;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../src/project/types.ts"],"sourcesContent":[
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/project/types.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 { WorldOptions } from '../init/world-initializer.js';\n\n/** Version discriminator for the first IWSDK project manifest contract. */\nexport const IWSDK_PROJECT_MANIFEST_VERSION = 'iwsdk.project.v1' as const;\n\n/** JSON representation of a regular expression used by development tooling. */\nexport interface ProjectRegexSpec {\n source: string;\n flags?: string;\n}\n\nexport type ProjectXRMode = 'vr' | 'ar';\nexport type ProjectXROffer = 'none' | 'once' | 'always';\nexport type ProjectReferenceSpaceType =\n | 'bounded-floor'\n | 'local'\n | 'local-floor'\n | 'unbounded'\n | 'viewer';\n\nexport type ProjectXRFeatureFlag = boolean | { required?: boolean };\n\nexport type ProjectDepthSensingFlag =\n | boolean\n | {\n required?: boolean;\n usage?: 'cpu-optimized' | 'gpu-optimized';\n format?: 'luminance-alpha' | 'float32';\n };\n\nexport interface ProjectXRFeatureOptions {\n handTracking?: ProjectXRFeatureFlag;\n anchors?: ProjectXRFeatureFlag;\n hitTest?: ProjectXRFeatureFlag;\n planeDetection?: ProjectXRFeatureFlag;\n meshDetection?: ProjectXRFeatureFlag;\n depthSensing?: ProjectDepthSensingFlag;\n layers?: ProjectXRFeatureFlag;\n unbounded?: ProjectXRFeatureFlag;\n}\n\nexport type ProjectReferenceSpaceSpec =\n | ProjectReferenceSpaceType\n | {\n type?: ProjectReferenceSpaceType;\n required?: boolean;\n fallbackOrder?: ProjectReferenceSpaceType[];\n };\n\nexport interface ProjectXROptions {\n mode: ProjectXRMode;\n offer?: ProjectXROffer;\n referenceSpace?: ProjectReferenceSpaceSpec;\n restoreCameraOnExit?: boolean;\n launchOnSessionGranted?: boolean;\n features?: ProjectXRFeatureOptions;\n}\n\nexport interface ProjectCameraOptions {\n position?: [number, number, number];\n rotation?: [number, number, number];\n quaternion?: [number, number, number, number];\n lookAt?: [number, number, number];\n}\n\nexport interface ProjectRenderOptions {\n fov?: number;\n near?: number;\n far?: number;\n stencil?: boolean;\n camera?: ProjectCameraOptions;\n}\n\nexport type ProjectCanvasPointerEventsOption =\n | boolean\n | {\n enabled?: boolean;\n activeDuringXR?: boolean;\n };\n\nexport interface ProjectInputOptions {\n canvasPointerEvents?: ProjectCanvasPointerEventsOption;\n}\n\nexport type ProjectBrowserLocomotionControls =\n | boolean\n | {\n keyboard?: boolean;\n gamepad?: boolean;\n };\n\nexport type ProjectTurningMethod = 'snap' | 'smooth';\n\nexport type ProjectLocomotionOptions =\n | boolean\n | {\n useWorker?: boolean;\n initialPlayerPosition?: [number, number, number];\n comfortAssistLevel?: number;\n turningMethod?: ProjectTurningMethod;\n enableJumping?: boolean;\n browserControls?: ProjectBrowserLocomotionControls;\n };\n\nexport type ProjectGrabbingOptions =\n | boolean\n | { useHandPinchForGrab?: boolean };\n\nexport type ProjectPhysicsOptions =\n | boolean\n | {\n useWorker?: boolean;\n updateFrequency?: number;\n interpolation?: boolean;\n };\n\nexport type ProjectSceneUnderstandingOptions =\n | boolean\n | { showWireFrame?: boolean };\n\nexport type ProjectSpatialUIOptions =\n | boolean\n | {\n forwardHtmlEvents?: boolean;\n kit?: 'default' | 'horizon';\n preferredColorScheme?: 'system' | 'light' | 'dark';\n };\n\nexport interface ProjectFeatureOptions {\n locomotion?: ProjectLocomotionOptions;\n grabbing?: ProjectGrabbingOptions;\n physics?: ProjectPhysicsOptions;\n sceneUnderstanding?: ProjectSceneUnderstandingOptions;\n environmentRaycast?: boolean;\n camera?: boolean;\n spatialUI?: ProjectSpatialUIOptions;\n}\n\nexport interface ProjectWorldConfiguration {\n xr: false | ProjectXROptions;\n input?: ProjectInputOptions;\n render?: ProjectRenderOptions;\n features?: ProjectFeatureOptions;\n}\n\nexport type ProjectEmulatorDevice =\n | 'metaQuest2'\n | 'metaQuest3'\n | 'metaQuestPro'\n | 'oculusQuest1';\n\nexport type ProjectEmulatorEnvironment =\n | 'living_room'\n | 'meeting_room'\n | 'music_room'\n | 'office_large'\n | 'office_small';\n\nexport interface ProjectEmulatorOptions {\n device?: ProjectEmulatorDevice;\n iwer?: boolean;\n environment?: ProjectEmulatorEnvironment;\n activation?: 'localhost' | 'always' | ProjectRegexSpec;\n injectOnBuild?: boolean;\n userAgentException?: ProjectRegexSpec;\n}\n\nexport interface ProjectDevOptions {\n emulator?: ProjectEmulatorOptions;\n}\n\nexport interface ProjectModuleDeclaration {\n /** Extensionless, project-root-confined browser module source path. */\n module: string;\n}\n\n/** Declarative, JSON-safe IWSDK project authority. */\nexport interface IwsdkProjectManifestV1 {\n $schema?: string;\n version: typeof IWSDK_PROJECT_MANIFEST_VERSION;\n /** Project source path under public/ ending in .iwsdk.scene.json. */\n scene: string;\n assets?: ProjectModuleDeclaration;\n components?: ProjectModuleDeclaration;\n world: ProjectWorldConfiguration;\n dev?: ProjectDevOptions;\n}\n\n/** World options produced before Vite injects executable asset/component manifests. */\nexport type NormalizedProjectWorldOptions = Omit<\n WorldOptions,\n 'assets' | 'components'\n> & {\n level: string;\n};\n\nexport interface NormalizedProjectDevOptions {\n emulator?: {\n device?: ProjectEmulatorDevice;\n iwer?: boolean;\n environment?: ProjectEmulatorEnvironment;\n activation?: 'localhost' | 'always' | RegExp;\n injectOnBuild?: boolean;\n userAgentException?: RegExp;\n };\n}\n\nexport type ProjectManifestValidationIssueCode =\n | 'enum'\n | 'invalid-path'\n | 'invalid-regex'\n | 'required'\n | 'type'\n | 'unknown-key';\n\nexport interface ProjectManifestValidationIssue {\n path: string;\n code: ProjectManifestValidationIssueCode;\n message: string;\n}\n\nexport interface ProjectManifestValidationResult {\n valid: boolean;\n issues: ProjectManifestValidationIssue[];\n}\n"],"names":[],"mappings":"AAAA;;;;;AAKG;AAIH;AACO,MAAM,8BAA8B,GAAG;;;;"}
|