@aura3d/engine 4.3.7 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/animation/AnimationTrack.d.ts.map +1 -1
- package/dist/animation/AnimationTrack.js +3 -1
- package/dist/animation/AnimationTrack.js.map +1 -1
- package/dist/animation/pose/BoneMask.d.ts +8 -0
- package/dist/animation/pose/BoneMask.d.ts.map +1 -1
- package/dist/animation/pose/BoneMask.js +18 -1
- package/dist/animation/pose/BoneMask.js.map +1 -1
- package/dist/animation/pose/PoseMixer.d.ts +18 -2
- package/dist/animation/pose/PoseMixer.d.ts.map +1 -1
- package/dist/animation/pose/PoseMixer.js +55 -4
- package/dist/animation/pose/PoseMixer.js.map +1 -1
- package/dist/animation/pose/RetargetWorker.d.ts +8 -1
- package/dist/animation/pose/RetargetWorker.d.ts.map +1 -1
- package/dist/animation/pose/RetargetWorker.js +30 -2
- package/dist/animation/pose/RetargetWorker.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +11 -4
- package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
- package/dist/assets/GLTFLoader.d.ts +2 -0
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +17 -3
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +6 -0
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +28 -0
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/emit.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/emit.js +109 -29
- package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.d.ts +15 -0
- package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.js +70 -60
- package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/parse.d.ts +9 -0
- package/dist/aura3d-cli/migrate-three/parse.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/parse.js +1 -1
- package/dist/aura3d-cli/migrate-three/parse.js.map +1 -1
- package/dist/create-aura3d/cli.js +22 -2
- package/dist/create-aura3d/cli.js.map +1 -1
- package/dist/create-aura3d/index.d.ts +11 -0
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +9 -2
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/create-aura3d/template-assets.d.ts +53 -0
- package/dist/create-aura3d/template-assets.d.ts.map +1 -0
- package/dist/create-aura3d/template-assets.js +116 -0
- package/dist/create-aura3d/template-assets.js.map +1 -0
- package/dist/engine/agent-api/Clock.d.ts +9 -3
- package/dist/engine/agent-api/Clock.d.ts.map +1 -1
- package/dist/engine/agent-api/Clock.js +17 -6
- package/dist/engine/agent-api/Clock.js.map +1 -1
- package/dist/engine/agent-api/animationMask.d.ts +26 -0
- package/dist/engine/agent-api/animationMask.d.ts.map +1 -0
- package/dist/engine/agent-api/animationMask.js +38 -0
- package/dist/engine/agent-api/animationMask.js.map +1 -0
- package/dist/engine/agent-api/app/actorAnimationHandle.d.ts +2 -0
- package/dist/engine/agent-api/app/actorAnimationHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/app/actorAnimationHandle.js +26 -3
- package/dist/engine/agent-api/app/actorAnimationHandle.js.map +1 -1
- package/dist/engine/agent-api/app/canvas.d.ts +21 -0
- package/dist/engine/agent-api/app/canvas.d.ts.map +1 -1
- package/dist/engine/agent-api/app/canvas.js +119 -7
- package/dist/engine/agent-api/app/canvas.js.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.js +153 -14
- package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.d.ts +13 -0
- package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.js +118 -15
- package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
- package/dist/engine/agent-api/app/mountRenderer.d.ts +6 -1
- package/dist/engine/agent-api/app/mountRenderer.d.ts.map +1 -1
- package/dist/engine/agent-api/app/mountRenderer.js +2 -2
- package/dist/engine/agent-api/app/mountRenderer.js.map +1 -1
- package/dist/engine/agent-api/app/parentFit.d.ts +20 -2
- package/dist/engine/agent-api/app/parentFit.d.ts.map +1 -1
- package/dist/engine/agent-api/app/parentFit.js +13 -9
- package/dist/engine/agent-api/app/parentFit.js.map +1 -1
- package/dist/engine/agent-api/app/renderPath.d.ts +86 -0
- package/dist/engine/agent-api/app/renderPath.d.ts.map +1 -0
- package/dist/engine/agent-api/app/renderPath.js +269 -0
- package/dist/engine/agent-api/app/renderPath.js.map +1 -0
- package/dist/engine/agent-api/app/rendererOptions.d.ts +31 -1
- package/dist/engine/agent-api/app/rendererOptions.d.ts.map +1 -1
- package/dist/engine/agent-api/app/rendererOptions.js +74 -7
- package/dist/engine/agent-api/app/rendererOptions.js.map +1 -1
- package/dist/engine/agent-api/app/routeState.d.ts.map +1 -1
- package/dist/engine/agent-api/app/routeState.js +8 -3
- package/dist/engine/agent-api/app/routeState.js.map +1 -1
- package/dist/engine/agent-api/app/runtimeNodes.d.ts +2 -0
- package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
- package/dist/engine/agent-api/app/runtimeNodes.js +111 -2
- package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
- package/dist/engine/agent-api/camera/extension.d.ts.map +1 -1
- package/dist/engine/agent-api/camera/extension.js +2 -2
- package/dist/engine/agent-api/camera/extension.js.map +1 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts +2 -0
- package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts.map +1 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.js +11 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.js.map +1 -1
- package/dist/engine/agent-api/compiler/animation.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/animation.js +4 -2
- package/dist/engine/agent-api/compiler/animation.js.map +1 -1
- package/dist/engine/agent-api/compiler/camera.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/camera.js +10 -0
- package/dist/engine/agent-api/compiler/camera.js.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.d.ts +21 -5
- package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.js +112 -13
- package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
- package/dist/engine/agent-api/compiler/contactShadowKey.d.ts +14 -0
- package/dist/engine/agent-api/compiler/contactShadowKey.d.ts.map +1 -0
- package/dist/engine/agent-api/compiler/contactShadowKey.js +66 -0
- package/dist/engine/agent-api/compiler/contactShadowKey.js.map +1 -0
- package/dist/engine/agent-api/compiler/environment.d.ts +56 -2
- package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/environment.js +202 -15
- package/dist/engine/agent-api/compiler/environment.js.map +1 -1
- package/dist/engine/agent-api/compiler/geometry.d.ts +18 -1
- package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/geometry.js +25 -5
- package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
- package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/lights.js +14 -6
- package/dist/engine/agent-api/compiler/lights.js.map +1 -1
- package/dist/engine/agent-api/compiler/mountedRoots.d.ts +6 -0
- package/dist/engine/agent-api/compiler/mountedRoots.d.ts.map +1 -0
- package/dist/engine/agent-api/compiler/mountedRoots.js +25 -0
- package/dist/engine/agent-api/compiler/mountedRoots.js.map +1 -0
- package/dist/engine/agent-api/compiler/observations.d.ts +9 -1
- package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/observations.js +5 -4
- package/dist/engine/agent-api/compiler/observations.js.map +1 -1
- package/dist/engine/agent-api/compiler/optionCoverage.js +17 -0
- package/dist/engine/agent-api/compiler/optionCoverage.js.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.js +2 -0
- package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
- package/dist/engine/agent-api/compiler/primitives.d.ts +34 -0
- package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/primitives.js +113 -3
- package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.js +40 -4
- package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.d.ts +6 -4
- package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.js +54 -14
- package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
- package/dist/engine/agent-api/compiler/shadows.d.ts +35 -1
- package/dist/engine/agent-api/compiler/shadows.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/shadows.js +103 -4
- package/dist/engine/agent-api/compiler/shadows.js.map +1 -1
- package/dist/engine/agent-api/diagnostics.d.ts +22 -0
- package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
- package/dist/engine/agent-api/diagnostics.js +53 -1
- package/dist/engine/agent-api/diagnostics.js.map +1 -1
- package/dist/engine/agent-api/feel/extension.d.ts.map +1 -1
- package/dist/engine/agent-api/feel/extension.js +2 -1
- package/dist/engine/agent-api/feel/extension.js.map +1 -1
- package/dist/engine/agent-api/looks/lookFill.d.ts +4 -0
- package/dist/engine/agent-api/looks/lookFill.d.ts.map +1 -0
- package/dist/engine/agent-api/looks/lookFill.js +29 -0
- package/dist/engine/agent-api/looks/lookFill.js.map +1 -0
- package/dist/engine/agent-api/looks/lookPresets.d.ts +13 -0
- package/dist/engine/agent-api/looks/lookPresets.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/lookPresets.js +5 -0
- package/dist/engine/agent-api/looks/lookPresets.js.map +1 -1
- package/dist/engine/agent-api/looks/looks.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/looks.js +6 -0
- package/dist/engine/agent-api/looks/looks.js.map +1 -1
- package/dist/engine/agent-api/looks/structuralQA.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/structuralQA.js +4 -2
- package/dist/engine/agent-api/looks/structuralQA.js.map +1 -1
- package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts +5 -4
- package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/game/instanceTransforms.js +61 -5
- package/dist/engine/agent-api/nodes/game/instanceTransforms.js.map +1 -1
- package/dist/engine/agent-api/nodes/groups.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/groups.js +2 -1
- package/dist/engine/agent-api/nodes/groups.js.map +1 -1
- package/dist/engine/agent-api/nodes/instances.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/instances.js +16 -4
- package/dist/engine/agent-api/nodes/instances.js.map +1 -1
- package/dist/engine/agent-api/nodes/interactions.d.ts +32 -10
- package/dist/engine/agent-api/nodes/interactions.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/interactions.js +40 -11
- package/dist/engine/agent-api/nodes/interactions.js.map +1 -1
- package/dist/engine/agent-api/nodes/model.d.ts +18 -0
- package/dist/engine/agent-api/nodes/model.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/model.js +41 -1
- package/dist/engine/agent-api/nodes/model.js.map +1 -1
- package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts +14 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.js +34 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.js.map +1 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.d.ts +9 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.js +52 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.js.map +1 -0
- package/dist/engine/agent-api/nodes/physics.d.ts +26 -0
- package/dist/engine/agent-api/nodes/physics.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/physics.js +115 -7
- package/dist/engine/agent-api/nodes/physics.js.map +1 -1
- package/dist/engine/agent-api/nodes/primitives.d.ts +16 -1
- package/dist/engine/agent-api/nodes/primitives.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/primitives.js +27 -1
- package/dist/engine/agent-api/nodes/primitives.js.map +1 -1
- package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/scene.js +4 -2
- package/dist/engine/agent-api/nodes/scene.js.map +1 -1
- package/dist/engine/agent-api/nodes/text3d.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/text3d.js +11 -2
- package/dist/engine/agent-api/nodes/text3d.js.map +1 -1
- package/dist/engine/agent-api/nodes/types/runtime.d.ts +38 -0
- package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/types.d.ts +44 -0
- package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
- package/dist/engine/agent-api/platform.d.ts +5 -0
- package/dist/engine/agent-api/platform.d.ts.map +1 -1
- package/dist/engine/agent-api/platform.js +15 -0
- package/dist/engine/agent-api/platform.js.map +1 -1
- package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
- package/dist/engine/agent-api/postBridge.js +5 -1
- package/dist/engine/agent-api/postBridge.js.map +1 -1
- package/dist/engine/agent-api/sceneKitDiagnostics.d.ts.map +1 -1
- package/dist/engine/agent-api/sceneKitDiagnostics.js +5 -2
- package/dist/engine/agent-api/sceneKitDiagnostics.js.map +1 -1
- package/dist/engine/contracts/animation.d.ts +5 -3
- package/dist/engine/contracts/animation.d.ts.map +1 -1
- package/dist/engine/contracts/animation.js.map +1 -1
- package/dist/engine/contracts/environment.d.ts +9 -0
- package/dist/engine/contracts/environment.d.ts.map +1 -1
- package/dist/engine/contracts/environment.js.map +1 -1
- package/dist/engine/contracts/flags.d.ts.map +1 -1
- package/dist/engine/contracts/flags.js +2 -1
- package/dist/engine/contracts/flags.js.map +1 -1
- package/dist/engine/contracts/lighting.d.ts +3 -0
- package/dist/engine/contracts/lighting.d.ts.map +1 -1
- package/dist/engine/contracts/lighting.js.map +1 -1
- package/dist/engine/contracts/stubs/game.d.ts.map +1 -1
- package/dist/engine/contracts/stubs/game.js +9 -1
- package/dist/engine/contracts/stubs/game.js.map +1 -1
- package/dist/engine/contracts/urlCache.d.ts +4 -0
- package/dist/engine/contracts/urlCache.d.ts.map +1 -0
- package/dist/engine/contracts/urlCache.js +25 -0
- package/dist/engine/contracts/urlCache.js.map +1 -0
- package/dist/engine/lanes/prd01/outputSurface.d.ts.map +1 -1
- package/dist/engine/lanes/prd01/outputSurface.js +25 -1
- package/dist/engine/lanes/prd01/outputSurface.js.map +1 -1
- package/dist/engine/lanes/prd02.d.ts +12 -4
- package/dist/engine/lanes/prd02.d.ts.map +1 -1
- package/dist/engine/lanes/prd02.js +23 -7
- package/dist/engine/lanes/prd02.js.map +1 -1
- package/dist/game/touch/TouchControls.d.ts.map +1 -1
- package/dist/game/touch/TouchControls.js +48 -12
- package/dist/game/touch/TouchControls.js.map +1 -1
- package/dist/math/SphericalHarmonics3.d.ts +6 -3
- package/dist/math/SphericalHarmonics3.d.ts.map +1 -1
- package/dist/math/SphericalHarmonics3.js +8 -5
- package/dist/math/SphericalHarmonics3.js.map +1 -1
- package/dist/math/three/Box3.d.ts +106 -0
- package/dist/math/three/Box3.d.ts.map +1 -0
- package/dist/math/three/Box3.js +348 -0
- package/dist/math/three/Box3.js.map +1 -0
- package/dist/math/three/Color.d.ts +127 -0
- package/dist/math/three/Color.d.ts.map +1 -0
- package/dist/math/three/Color.js +501 -0
- package/dist/math/three/Color.js.map +1 -0
- package/dist/math/three/Euler.d.ts +50 -0
- package/dist/math/three/Euler.d.ts.map +1 -0
- package/dist/math/three/Euler.js +210 -0
- package/dist/math/three/Euler.js.map +1 -0
- package/dist/math/three/Frustum.d.ts +59 -0
- package/dist/math/three/Frustum.d.ts.map +1 -0
- package/dist/math/three/Frustum.js +135 -0
- package/dist/math/three/Frustum.js.map +1 -0
- package/dist/math/three/Matrix3.d.ts +56 -0
- package/dist/math/three/Matrix3.d.ts.map +1 -0
- package/dist/math/three/Matrix3.js +248 -0
- package/dist/math/three/Matrix3.js.map +1 -0
- package/dist/math/three/Matrix4.d.ts +79 -0
- package/dist/math/three/Matrix4.d.ts.map +1 -0
- package/dist/math/three/Matrix4.js +708 -0
- package/dist/math/three/Matrix4.js.map +1 -0
- package/dist/math/three/Plane.d.ts +65 -0
- package/dist/math/three/Plane.d.ts.map +1 -0
- package/dist/math/three/Plane.js +135 -0
- package/dist/math/three/Plane.js.map +1 -0
- package/dist/math/three/Quaternion.d.ts +91 -0
- package/dist/math/three/Quaternion.d.ts.map +1 -0
- package/dist/math/three/Quaternion.js +444 -0
- package/dist/math/three/Quaternion.js.map +1 -0
- package/dist/math/three/Ray.d.ts +56 -0
- package/dist/math/three/Ray.d.ts.map +1 -0
- package/dist/math/three/Ray.js +340 -0
- package/dist/math/three/Ray.js.map +1 -0
- package/dist/math/three/Sphere.d.ts +58 -0
- package/dist/math/three/Sphere.d.ts.map +1 -0
- package/dist/math/three/Sphere.js +166 -0
- package/dist/math/three/Sphere.js.map +1 -0
- package/dist/math/three/Triangle.d.ts +58 -0
- package/dist/math/three/Triangle.d.ts.map +1 -0
- package/dist/math/three/Triangle.js +229 -0
- package/dist/math/three/Triangle.js.map +1 -0
- package/dist/math/three/Vector2.d.ts +88 -0
- package/dist/math/three/Vector2.d.ts.map +1 -0
- package/dist/math/three/Vector2.js +283 -0
- package/dist/math/three/Vector2.js.map +1 -0
- package/dist/math/three/Vector3.d.ts +137 -0
- package/dist/math/three/Vector3.d.ts.map +1 -0
- package/dist/math/three/Vector3.js +458 -0
- package/dist/math/three/Vector3.js.map +1 -0
- package/dist/math/three/Vector4.d.ts +100 -0
- package/dist/math/three/Vector4.d.ts.map +1 -0
- package/dist/math/three/Vector4.js +443 -0
- package/dist/math/three/Vector4.js.map +1 -0
- package/dist/math/three/index.d.ts +29 -0
- package/dist/math/three/index.d.ts.map +1 -0
- package/dist/math/three/index.js +29 -0
- package/dist/math/three/index.js.map +1 -0
- package/dist/react/index.d.ts +21 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +128 -21
- package/dist/react/index.js.map +1 -1
- package/dist/rendering/DepthPass.d.ts +7 -0
- package/dist/rendering/DepthPass.d.ts.map +1 -1
- package/dist/rendering/DepthPass.js +43 -6
- package/dist/rendering/DepthPass.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts +82 -5
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +180 -35
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/MaterialBinding.js +6 -2
- package/dist/rendering/MaterialBinding.js.map +1 -1
- package/dist/rendering/RenderDevice.d.ts +5 -0
- package/dist/rendering/RenderDevice.d.ts.map +1 -1
- package/dist/rendering/RenderDevice.js.map +1 -1
- package/dist/rendering/Renderer.d.ts +8 -0
- package/dist/rendering/Renderer.d.ts.map +1 -1
- package/dist/rendering/Renderer.js +37 -6
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.js +8 -1
- package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
- package/dist/rendering/ShaderChunks.d.ts.map +1 -1
- package/dist/rendering/ShaderChunks.js +3 -1
- package/dist/rendering/ShaderChunks.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +17 -5
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/rendering/ShaderLibraryCore.js +2 -1
- package/dist/rendering/ShaderLibraryCore.js.map +1 -1
- package/dist/rendering/WebGL2Device.d.ts +19 -1
- package/dist/rendering/WebGL2Device.d.ts.map +1 -1
- package/dist/rendering/WebGL2Device.js +114 -37
- package/dist/rendering/WebGL2Device.js.map +1 -1
- package/dist/rendering/WebGL2StateCache.d.ts +22 -0
- package/dist/rendering/WebGL2StateCache.d.ts.map +1 -1
- package/dist/rendering/WebGL2StateCache.js +71 -42
- package/dist/rendering/WebGL2StateCache.js.map +1 -1
- package/dist/rendering/contracts/core.d.ts.map +1 -1
- package/dist/rendering/contracts/core.js +22 -2
- package/dist/rendering/contracts/core.js.map +1 -1
- package/dist/rendering/contracts/program.d.ts.map +1 -1
- package/dist/rendering/contracts/program.js +8 -1
- package/dist/rendering/contracts/program.js.map +1 -1
- package/dist/rendering/contracts/quality.d.ts +21 -0
- package/dist/rendering/contracts/quality.d.ts.map +1 -1
- package/dist/rendering/contracts/quality.js +5 -0
- package/dist/rendering/contracts/quality.js.map +1 -1
- package/dist/rendering/contracts/renderItem.d.ts +6 -0
- package/dist/rendering/contracts/renderItem.d.ts.map +1 -1
- package/dist/rendering/contracts/structuralMemo.d.ts +23 -0
- package/dist/rendering/contracts/structuralMemo.d.ts.map +1 -0
- package/dist/rendering/contracts/structuralMemo.js +81 -0
- package/dist/rendering/contracts/structuralMemo.js.map +1 -0
- package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
- package/dist/rendering/environment/EnvironmentCache.js +6 -1
- package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
- package/dist/rendering/environment/FirstFrameGate.d.ts +23 -0
- package/dist/rendering/environment/FirstFrameGate.d.ts.map +1 -0
- package/dist/rendering/environment/FirstFrameGate.js +58 -0
- package/dist/rendering/environment/FirstFrameGate.js.map +1 -0
- package/dist/rendering/environment/Rgb9e5Cube.d.ts.map +1 -1
- package/dist/rendering/environment/Rgb9e5Cube.js +8 -4
- package/dist/rendering/environment/Rgb9e5Cube.js.map +1 -1
- package/dist/rendering/environment/probeBuild.d.ts +29 -0
- package/dist/rendering/environment/probeBuild.d.ts.map +1 -1
- package/dist/rendering/environment/probeBuild.js +124 -45
- package/dist/rendering/environment/probeBuild.js.map +1 -1
- package/dist/rendering/forward/Lighting.d.ts +43 -3
- package/dist/rendering/forward/Lighting.d.ts.map +1 -1
- package/dist/rendering/forward/Lighting.js +127 -17
- package/dist/rendering/forward/Lighting.js.map +1 -1
- package/dist/rendering/forward/contactShadowMaskStore.d.ts +41 -0
- package/dist/rendering/forward/contactShadowMaskStore.d.ts.map +1 -0
- package/dist/rendering/forward/contactShadowMaskStore.js +85 -0
- package/dist/rendering/forward/contactShadowMaskStore.js.map +1 -0
- package/dist/rendering/geometry/Shape.d.ts.map +1 -1
- package/dist/rendering/geometry/Shape.js +7 -2
- package/dist/rendering/geometry/Shape.js.map +1 -1
- package/dist/rendering/geometry/Support.d.ts +4 -0
- package/dist/rendering/geometry/Support.d.ts.map +1 -1
- package/dist/rendering/geometry/Support.js +3 -2
- package/dist/rendering/geometry/Support.js.map +1 -1
- package/dist/rendering/index.d.ts +6 -0
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +5 -0
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/passes/ContactShadowPass.d.ts +40 -3
- package/dist/rendering/passes/ContactShadowPass.d.ts.map +1 -1
- package/dist/rendering/passes/ContactShadowPass.js +73 -13
- package/dist/rendering/passes/ContactShadowPass.js.map +1 -1
- package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts +19 -0
- package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts.map +1 -1
- package/dist/rendering/passes/Prd02ContactShadowsContributor.js +179 -28
- package/dist/rendering/passes/Prd02ContactShadowsContributor.js.map +1 -1
- package/dist/rendering/post/v2Stages.d.ts.map +1 -1
- package/dist/rendering/post/v2Stages.js +2 -0
- package/dist/rendering/post/v2Stages.js.map +1 -1
- package/dist/rendering/program/ProgramFeatures.d.ts +6 -0
- package/dist/rendering/program/ProgramFeatures.d.ts.map +1 -1
- package/dist/rendering/program/ProgramFeatures.js +11 -5
- package/dist/rendering/program/ProgramFeatures.js.map +1 -1
- package/dist/rendering/program/ProgramGenerator.d.ts +6 -0
- package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
- package/dist/rendering/program/ProgramGenerator.js +36 -1
- package/dist/rendering/program/ProgramGenerator.js.map +1 -1
- package/dist/rendering/program/ProgramKey.d.ts.map +1 -1
- package/dist/rendering/program/ProgramKey.js +4 -1
- package/dist/rendering/program/ProgramKey.js.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.js +4 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.js.map +1 -1
- package/dist/rendering/quality/DirectPath.d.ts +56 -0
- package/dist/rendering/quality/DirectPath.d.ts.map +1 -0
- package/dist/rendering/quality/DirectPath.js +74 -0
- package/dist/rendering/quality/DirectPath.js.map +1 -0
- package/dist/rendering/renderer/Background.d.ts +0 -5
- package/dist/rendering/renderer/Background.d.ts.map +1 -1
- package/dist/rendering/renderer/Background.js +56 -4
- package/dist/rendering/renderer/Background.js.map +1 -1
- package/dist/rendering/renderer/InstanceFrustumCull.d.ts +41 -0
- package/dist/rendering/renderer/InstanceFrustumCull.d.ts.map +1 -0
- package/dist/rendering/renderer/InstanceFrustumCull.js +138 -0
- package/dist/rendering/renderer/InstanceFrustumCull.js.map +1 -0
- package/dist/rendering/renderer/ShadowOrchestration.d.ts +2 -0
- package/dist/rendering/renderer/ShadowOrchestration.d.ts.map +1 -1
- package/dist/rendering/renderer/ShadowOrchestration.js +1 -0
- package/dist/rendering/renderer/ShadowOrchestration.js.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts +0 -5
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.js +12 -2
- package/dist/rendering/renderer/coreOutputPostRoute.js.map +1 -1
- package/dist/rendering/resources/InstanceBuffer.d.ts +2 -0
- package/dist/rendering/resources/InstanceBuffer.d.ts.map +1 -1
- package/dist/rendering/resources/InstanceBuffer.js +23 -0
- package/dist/rendering/resources/InstanceBuffer.js.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts +11 -6
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.js +41 -19
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.js.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts +12 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js +21 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js.map +1 -0
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.d.ts +6 -1
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.js +8 -2
- package/dist/rendering/shaders/chunks/lighting_ibl.glsl.js.map +1 -1
- package/dist/rendering/shadows/CascadeUse.d.ts +31 -0
- package/dist/rendering/shadows/CascadeUse.d.ts.map +1 -0
- package/dist/rendering/shadows/CascadeUse.js +60 -0
- package/dist/rendering/shadows/CascadeUse.js.map +1 -0
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts +7 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +12 -3
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts +12 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.js +17 -5
- package/dist/rendering/shadows/Prd02ShadowBridge.js.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.d.ts +4 -0
- package/dist/rendering/shadows/Prd02ShadowsContributor.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.js +3 -1
- package/dist/rendering/shadows/Prd02ShadowsContributor.js.map +1 -1
- package/dist/rendering/shadows/ShadowFilterTier.d.ts +51 -0
- package/dist/rendering/shadows/ShadowFilterTier.d.ts.map +1 -0
- package/dist/rendering/shadows/ShadowFilterTier.js +89 -0
- package/dist/rendering/shadows/ShadowFilterTier.js.map +1 -0
- package/dist/rendering/shadows/ShadowSystem.d.ts +15 -0
- package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
- package/dist/rendering/shadows/ShadowSystem.js +12 -2
- package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
- package/dist/rendering/shadows/shadowLegacy.d.ts +12 -0
- package/dist/rendering/shadows/shadowLegacy.d.ts.map +1 -1
- package/dist/rendering/shadows/shadowLegacy.js +24 -0
- package/dist/rendering/shadows/shadowLegacy.js.map +1 -1
- package/dist/rendering/webgl2/BloomFusion.d.ts +31 -0
- package/dist/rendering/webgl2/BloomFusion.d.ts.map +1 -0
- package/dist/rendering/webgl2/BloomFusion.js +25 -0
- package/dist/rendering/webgl2/BloomFusion.js.map +1 -0
- package/dist/rendering/webgl2/ContextLifecycle.d.ts +14 -0
- package/dist/rendering/webgl2/ContextLifecycle.d.ts.map +1 -1
- package/dist/rendering/webgl2/ContextLifecycle.js +44 -5
- package/dist/rendering/webgl2/ContextLifecycle.js.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.d.ts +30 -0
- package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.js +259 -27
- package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.d.ts +2 -0
- package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.js +33 -7
- package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
- package/dist/rendering/webgl2/Samplers.d.ts +10 -1
- package/dist/rendering/webgl2/Samplers.d.ts.map +1 -1
- package/dist/rendering/webgl2/Samplers.js +24 -1
- package/dist/rendering/webgl2/Samplers.js.map +1 -1
- package/dist/rendering/webgl2/TextureFormats.d.ts +12 -0
- package/dist/rendering/webgl2/TextureFormats.d.ts.map +1 -1
- package/dist/rendering/webgl2/TextureFormats.js +16 -0
- package/dist/rendering/webgl2/TextureFormats.js.map +1 -1
- package/package.json +25 -25
- package/templates/cinematic-scene/package.json +2 -2
- package/templates/mini-game/package.json +2 -2
- package/templates/product-viewer/package.json +2 -2
- package/templates/production-asset-inspector/package.json +1 -1
- package/templates/production-material-studio/package.json +1 -1
- package/templates/production-product-configurator/package.json +1 -1
- package/templates/production-product-viewer/package.json +1 -1
- package/dist/environments/EnvironmentPreview.d.ts +0 -13
- package/dist/environments/EnvironmentPreview.d.ts.map +0 -1
- package/dist/environments/EnvironmentPreview.js +0 -16
- package/dist/environments/EnvironmentPreview.js.map +0 -1
- package/dist/environments/EnvironmentRegistry.d.ts +0 -35
- package/dist/environments/EnvironmentRegistry.d.ts.map +0 -1
- package/dist/environments/EnvironmentRegistry.js +0 -39
- package/dist/environments/EnvironmentRegistry.js.map +0 -1
- package/dist/environments/HDRIEnvironment.d.ts +0 -38
- package/dist/environments/HDRIEnvironment.d.ts.map +0 -1
- package/dist/environments/HDRIEnvironment.js +0 -34
- package/dist/environments/HDRIEnvironment.js.map +0 -1
- package/dist/environments/PMREMPreset.d.ts +0 -14
- package/dist/environments/PMREMPreset.d.ts.map +0 -1
- package/dist/environments/PMREMPreset.js +0 -16
- package/dist/environments/PMREMPreset.js.map +0 -1
- package/dist/environments/index.d.ts +0 -6
- package/dist/environments/index.d.ts.map +0 -1
- package/dist/environments/index.js +0 -3
- package/dist/environments/index.js.map +0 -1
- package/dist/environments/node.d.ts +0 -7
- package/dist/environments/node.d.ts.map +0 -1
- package/dist/environments/node.js +0 -5
- package/dist/environments/node.js.map +0 -1
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts +0 -78
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts.map +0 -1
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js +0 -67
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js.map +0 -1
- package/dist/environments/production-runtime/index.d.ts +0 -3
- package/dist/environments/production-runtime/index.d.ts.map +0 -1
- package/dist/environments/production-runtime/index.js +0 -2
- package/dist/environments/production-runtime/index.js.map +0 -1
- package/dist/environments/threejs-example-parity/index.d.ts +0 -17
- package/dist/environments/threejs-example-parity/index.d.ts.map +0 -1
- package/dist/environments/threejs-example-parity/index.js +0 -49
- package/dist/environments/threejs-example-parity/index.js.map +0 -1
- package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +0 -8
- package/templates/cinematic-scene/node_modules/.vite/deps/package.json +0 -3
- package/templates/cinematic-scene/test-results/.last-run.json +0 -6
- package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +0 -64
- package/templates/mini-game/package-lock.json +0 -1312
- package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +0 -8
- package/templates/product-viewer/node_modules/.vite/deps/package.json +0 -3
|
@@ -1,41 +1,70 @@
|
|
|
1
1
|
// PRD-15 Phase 3 carve-out (CONTRACTS.md §3.2) — verbatim move from agent-api/index.ts; 0 changed logic lines.
|
|
2
|
+
// Beat-three.js WP-S.2: every builder reports an option it does not read (an `OPTION_IGNORED` note on the node,
|
|
3
|
+
// surfaced as an `option-ignored` degradation at compile) and `orbit` takes a node name or a world point
|
|
4
|
+
// through typed overloads.
|
|
2
5
|
import { AuraNodeBuilder } from "./builder.js";
|
|
3
|
-
|
|
4
|
-
|
|
6
|
+
import { ignoredOptionsNote } from "./optionDiagnostics.js";
|
|
7
|
+
/** Radians per second for `autoRotate: true`. */
|
|
8
|
+
export const ORBIT_AUTO_ROTATE_DEFAULT = 0.5;
|
|
9
|
+
const ORBIT_KEYS = ["target", "position", "autoRotate"];
|
|
10
|
+
function orbit(arg = {}) {
|
|
11
|
+
const options = typeof arg === "string" || Array.isArray(arg) ? { target: arg } : arg;
|
|
12
|
+
const { target, position, autoRotate } = options;
|
|
13
|
+
const speed = autoRotate === true ? ORBIT_AUTO_ROTATE_DEFAULT : typeof autoRotate === "number" && Number.isFinite(autoRotate) ? autoRotate : undefined;
|
|
14
|
+
return new AuraNodeBuilder({
|
|
5
15
|
kind: "interaction",
|
|
6
16
|
mode: "orbit",
|
|
7
|
-
target:
|
|
8
|
-
|
|
17
|
+
target: typeof target === "string" ? target : undefined,
|
|
18
|
+
...(Array.isArray(target) ? { targetPoint: [target[0], target[1], target[2]] } : {}),
|
|
19
|
+
...(position !== undefined ? { orbitPosition: [position[0], position[1], position[2]] } : {}),
|
|
20
|
+
...(speed !== undefined && speed !== 0 ? { autoRotate: speed } : {}),
|
|
21
|
+
...ignoredOptionsNote("interactions.orbit", options, ORBIT_KEYS)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const interaction = (builder, options, valid) => ignoredOptionsNote(`interactions.${builder}`, options, valid);
|
|
25
|
+
export const interactions = {
|
|
26
|
+
orbit,
|
|
9
27
|
pointer: (options = {}) => new AuraNodeBuilder({
|
|
10
28
|
kind: "interaction",
|
|
11
29
|
mode: "pointer",
|
|
12
|
-
target: options.target
|
|
30
|
+
target: options.target,
|
|
31
|
+
...interaction("pointer", options, ["target"])
|
|
13
32
|
}),
|
|
14
33
|
keyboard: (options = {}) => new AuraNodeBuilder({
|
|
15
34
|
kind: "interaction",
|
|
16
35
|
mode: "keyboard",
|
|
17
|
-
target: options.target
|
|
36
|
+
target: options.target,
|
|
37
|
+
...interaction("keyboard", options, ["target"])
|
|
18
38
|
}),
|
|
19
39
|
hover: (options = {}) => new AuraNodeBuilder({
|
|
20
40
|
kind: "interaction",
|
|
21
41
|
mode: "hover",
|
|
22
42
|
target: options.target,
|
|
23
|
-
selected: options.selected
|
|
43
|
+
selected: options.selected,
|
|
44
|
+
...interaction("hover", options, ["target", "selected"])
|
|
45
|
+
}),
|
|
46
|
+
raycastHover: (options = {}) => new AuraNodeBuilder({
|
|
47
|
+
...interactions.hover({ target: options.target, selected: options.selected }).toJSON(),
|
|
48
|
+
...interaction("raycastHover", options, ["target", "selected"])
|
|
49
|
+
}),
|
|
50
|
+
highlight: (options = {}) => new AuraNodeBuilder({
|
|
51
|
+
...interactions.hover({ target: options.target, selected: options.selected ?? options.target }).toJSON(),
|
|
52
|
+
...interaction("highlight", options, ["target", "selected"])
|
|
24
53
|
}),
|
|
25
|
-
raycastHover: (options = {}) => interactions.hover(options),
|
|
26
|
-
highlight: (options = {}) => interactions.hover({ target: options.target, selected: options.selected ?? options.target }),
|
|
27
54
|
dragVector: (options = {}) => new AuraNodeBuilder({
|
|
28
55
|
kind: "interaction",
|
|
29
56
|
mode: "drag-vector",
|
|
30
57
|
target: options.target,
|
|
31
|
-
vector: options.vector ?? [1, 0, 0]
|
|
58
|
+
vector: options.vector ?? [1, 0, 0],
|
|
59
|
+
...interaction("dragVector", options, ["target", "vector"])
|
|
32
60
|
}),
|
|
33
61
|
clickImpulse: (options = {}) => new AuraNodeBuilder({
|
|
34
62
|
kind: "interaction",
|
|
35
63
|
mode: "click-impulse",
|
|
36
64
|
target: options.target,
|
|
37
65
|
impulse: options.impulse ?? 1,
|
|
38
|
-
vector: options.vector ?? [1, 0, 0]
|
|
66
|
+
vector: options.vector ?? [1, 0, 0],
|
|
67
|
+
...interaction("clickImpulse", options, ["target", "impulse", "vector"])
|
|
39
68
|
})
|
|
40
69
|
};
|
|
41
70
|
//# sourceMappingURL=interactions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/interactions.ts"],"names":[],"mappings":"AAAA,+GAA+G;
|
|
1
|
+
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/interactions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import type { AuraAssetDefinition, AuraAssetRef, AuraModelOptions, AuraModelNode } from "./types.js";
|
|
2
2
|
import { AuraNodeBuilder } from "./builder.js";
|
|
3
|
+
/**
|
|
4
|
+
* Every top-level option `model()` reads, plus the transform extras it forwards to the node
|
|
5
|
+
* (the render path reads `renderOrder`, `frustumCulled`, `layers`, `userData`; the scene graph
|
|
6
|
+
* reads `rotationOrder`, `quaternion`). `lod` and `collider` are typed but not applied by
|
|
7
|
+
* `model()`: `false` (the default behaviour) is accepted, any other value is OPTION_IGNORED
|
|
8
|
+
* (anim-phys-06).
|
|
9
|
+
*/
|
|
10
|
+
export declare const MODEL_OPTION_KEYS: readonly string[];
|
|
11
|
+
/** Builder label and readable keys for the OPTION_IGNORED note; `instances.model` passes its own. */
|
|
12
|
+
export interface ModelOptionGuard {
|
|
13
|
+
readonly builder: string;
|
|
14
|
+
readonly validKeys: readonly string[];
|
|
15
|
+
}
|
|
3
16
|
export declare function model<TAsset extends AuraAssetRef<"model">>(asset: TAsset, options?: AuraModelOptions): AuraNodeBuilder<AuraModelNode>;
|
|
17
|
+
/** `model()` with the OPTION_IGNORED label and key list of the calling builder. */
|
|
18
|
+
export declare function buildModel<TAsset extends AuraAssetRef<"model">>(asset: TAsset, options: AuraModelOptions, guard: ModelOptionGuard): AuraNodeBuilder<AuraModelNode>;
|
|
4
19
|
export declare function unsafeModelUrl(url: string, options?: Omit<AuraAssetDefinition, "type" | "format" | "url">): AuraAssetRef<"model", "unsafe">;
|
|
5
20
|
export declare const builtInCharacterAssets: import("./types.js").AuraAssetMap<{
|
|
6
21
|
readonly humanoid: {
|
|
@@ -14,6 +29,9 @@ export declare const builtInCharacterAssets: import("./types.js").AuraAssetMap<{
|
|
|
14
29
|
readonly animations: readonly ["Idle", "Run", "TPose", "Walk"];
|
|
15
30
|
readonly textures: readonly ["embedded soldier/vanguard textures"];
|
|
16
31
|
readonly license: "Aura3D bundled soldier fixture from the existing repository corpus";
|
|
32
|
+
readonly provenance: {
|
|
33
|
+
readonly builtIn: true;
|
|
34
|
+
};
|
|
17
35
|
};
|
|
18
36
|
};
|
|
19
37
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO/C,wBAAgB,KAAK,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACxD,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/model.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAO/C;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAM9C,CAAC;AAKF,qGAAqG;AACrG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAWD,wBAAgB,KAAK,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EACxD,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAAC,aAAa,CAAC,CAEhC;AAED,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,EAC7D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,gBAAgB,GACtB,eAAe,CAAC,aAAa,CAAC,CAiChC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAM,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAc/I;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;EAkBvB,CAAC"}
|
|
@@ -4,7 +4,36 @@ import { defineAuraAssets } from "./assets.js";
|
|
|
4
4
|
import { material } from "./material.js";
|
|
5
5
|
import { physics } from "./physics.js";
|
|
6
6
|
import { lazyNamespace } from "../lazyNamespace.js";
|
|
7
|
+
import { formatIgnoredOptions, unreadOptionKeys } from "./optionDiagnostics.js";
|
|
8
|
+
/**
|
|
9
|
+
* Every top-level option `model()` reads, plus the transform extras it forwards to the node
|
|
10
|
+
* (the render path reads `renderOrder`, `frustumCulled`, `layers`, `userData`; the scene graph
|
|
11
|
+
* reads `rotationOrder`, `quaternion`). `lod` and `collider` are typed but not applied by
|
|
12
|
+
* `model()`: `false` (the default behaviour) is accepted, any other value is OPTION_IGNORED
|
|
13
|
+
* (anim-phys-06).
|
|
14
|
+
*/
|
|
15
|
+
export const MODEL_OPTION_KEYS = [
|
|
16
|
+
"name", "position", "rotation", "scale", "lookAt", "rotationOrder", "quaternion",
|
|
17
|
+
"renderOrder", "frustumCulled", "layers", "userData",
|
|
18
|
+
"material", "castShadow", "receiveShadow", "visible", "role", "scaleMode",
|
|
19
|
+
"targetHeight", "targetMaxDimension", "targetLength", "physics", "hiddenNodeNames",
|
|
20
|
+
"materialOverrides", "variant", "wrinkle"
|
|
21
|
+
];
|
|
22
|
+
/** Typed model options that are honoured only when `false` (nothing to build). */
|
|
23
|
+
const MODEL_FALSE_ONLY_KEYS = ["lod", "collider"];
|
|
24
|
+
function modelIgnoredOptions(options, guard) {
|
|
25
|
+
const record = options;
|
|
26
|
+
const unread = unreadOptionKeys(options, [...guard.validKeys, ...MODEL_FALSE_ONLY_KEYS]);
|
|
27
|
+
const falseOnly = MODEL_FALSE_ONLY_KEYS.filter((key) => !guard.validKeys.includes(key) && record[key] !== undefined && record[key] !== false);
|
|
28
|
+
const all = [...unread, ...falseOnly];
|
|
29
|
+
return all.length === 0 ? {} : { ignoredOptions: [formatIgnoredOptions(guard.builder, all, guard.validKeys)] };
|
|
30
|
+
}
|
|
7
31
|
export function model(asset, options = {}) {
|
|
32
|
+
return buildModel(asset, options, { builder: "model", validKeys: MODEL_OPTION_KEYS });
|
|
33
|
+
}
|
|
34
|
+
/** `model()` with the OPTION_IGNORED label and key list of the calling builder. */
|
|
35
|
+
export function buildModel(asset, options, guard) {
|
|
36
|
+
const ignored = modelIgnoredOptions(options, guard);
|
|
8
37
|
return new AuraNodeBuilder({
|
|
9
38
|
kind: "model",
|
|
10
39
|
asset,
|
|
@@ -13,6 +42,14 @@ export function model(asset, options = {}) {
|
|
|
13
42
|
rotation: options.rotation,
|
|
14
43
|
scale: options.scale,
|
|
15
44
|
lookAt: options.lookAt,
|
|
45
|
+
// Transform extras, as `primitive()` forwards them; spread only when set so node JSON is unchanged otherwise.
|
|
46
|
+
...(options.rotationOrder !== undefined ? { rotationOrder: options.rotationOrder } : {}),
|
|
47
|
+
...(options.quaternion !== undefined ? { quaternion: options.quaternion } : {}),
|
|
48
|
+
...(options.renderOrder !== undefined ? { renderOrder: options.renderOrder } : {}),
|
|
49
|
+
...(options.frustumCulled !== undefined ? { frustumCulled: options.frustumCulled } : {}),
|
|
50
|
+
...(options.layers !== undefined ? { layers: options.layers } : {}),
|
|
51
|
+
...(options.userData !== undefined ? { userData: options.userData } : {}),
|
|
52
|
+
...ignored,
|
|
16
53
|
material: options.material,
|
|
17
54
|
castShadow: options.castShadow ?? true,
|
|
18
55
|
receiveShadow: options.receiveShadow ?? true,
|
|
@@ -56,7 +93,10 @@ export const builtInCharacterAssets = lazyNamespace(() => defineAuraAssets({
|
|
|
56
93
|
// Exactly the clips authored in humanoid-fixture.glb (guarded by a GLB-parsing test); do not add names that are not in the binary.
|
|
57
94
|
animations: ["Idle", "Run", "TPose", "Walk"],
|
|
58
95
|
textures: ["embedded soldier/vanguard textures"],
|
|
59
|
-
license: "Aura3D bundled soldier fixture from the existing repository corpus"
|
|
96
|
+
license: "Aura3D bundled soldier fixture from the existing repository corpus",
|
|
97
|
+
// Bundled with the engine package and addressed by hash; served from the package origin, so its
|
|
98
|
+
// URL is http(s) in a browser. Marks it as trusted for the production bridge (see createAssetProvenance).
|
|
99
|
+
provenance: { builtIn: true }
|
|
60
100
|
}
|
|
61
101
|
}
|
|
62
102
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/model.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAG/G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AuraSceneNode } from "./types.js";
|
|
2
|
+
/** Keys of `options` that are set (not `undefined`) and not in `valid`. */
|
|
3
|
+
export declare function unreadOptionKeys(options: unknown, valid: readonly string[]): readonly string[];
|
|
4
|
+
export declare function formatIgnoredOptions(builder: string, unread: readonly string[], valid: readonly string[]): string;
|
|
5
|
+
/** `{}` when every key is read, else `{ ignoredOptions: [message] }`; spread it into the node literal. */
|
|
6
|
+
export declare function ignoredOptionsNote(builder: string, options: unknown, valid: readonly string[]): {
|
|
7
|
+
readonly ignoredOptions?: readonly string[];
|
|
8
|
+
};
|
|
9
|
+
/** Every `OPTION_IGNORED` note carried by `nodes`, with the node that carries it. */
|
|
10
|
+
export declare function ignoredOptionMessages(nodes: readonly AuraSceneNode[]): readonly {
|
|
11
|
+
readonly node: AuraSceneNode;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
}[];
|
|
14
|
+
//# sourceMappingURL=optionDiagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionDiagnostics.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/optionDiagnostics.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,CAG9F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAIjH;AAED,0GAA0G;AAC1G,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAG/I;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAO5I"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Beat-three.js WP-S.1 (decision 5): a builder never accepts an option and silently drops it.
|
|
2
|
+
//
|
|
3
|
+
// Builders run at module scope with no app or compile context, and an existing app that passes a stray key must
|
|
4
|
+
// keep building, so the guard does not throw. It records the unread keys on the node (`ignoredOptions`); the
|
|
5
|
+
// compiler turns each note into an `option-ignored` degradation (compileScene.ts), which lands in
|
|
6
|
+
// `app.diagnostics()` and throws only under strict mode, the same channel unknown node kinds already use.
|
|
7
|
+
/** Keys of `options` that are set (not `undefined`) and not in `valid`. */
|
|
8
|
+
export function unreadOptionKeys(options, valid) {
|
|
9
|
+
if (options === undefined || options === null || typeof options !== "object" || Array.isArray(options))
|
|
10
|
+
return [];
|
|
11
|
+
return Object.keys(options).filter((key) => !valid.includes(key) && options[key] !== undefined);
|
|
12
|
+
}
|
|
13
|
+
export function formatIgnoredOptions(builder, unread, valid) {
|
|
14
|
+
return `OPTION_IGNORED ${builder}: option${unread.length === 1 ? "" : "s"} ${unread.map((key) => `"${key}"`).join(", ")} ` +
|
|
15
|
+
`${unread.length === 1 ? "is" : "are"} not read by this builder, so ${unread.length === 1 ? "it has" : "they have"} no effect. ` +
|
|
16
|
+
`Valid options: ${valid.join(", ")}`;
|
|
17
|
+
}
|
|
18
|
+
/** `{}` when every key is read, else `{ ignoredOptions: [message] }`; spread it into the node literal. */
|
|
19
|
+
export function ignoredOptionsNote(builder, options, valid) {
|
|
20
|
+
const unread = unreadOptionKeys(options, valid);
|
|
21
|
+
return unread.length === 0 ? {} : { ignoredOptions: [formatIgnoredOptions(builder, unread, valid)] };
|
|
22
|
+
}
|
|
23
|
+
/** Every `OPTION_IGNORED` note carried by `nodes`, with the node that carries it. */
|
|
24
|
+
export function ignoredOptionMessages(nodes) {
|
|
25
|
+
const found = [];
|
|
26
|
+
for (const node of nodes) {
|
|
27
|
+
const notes = node.ignoredOptions;
|
|
28
|
+
if (notes)
|
|
29
|
+
for (const message of notes)
|
|
30
|
+
found.push({ node, message });
|
|
31
|
+
}
|
|
32
|
+
return found;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=optionDiagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optionDiagnostics.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/optionDiagnostics.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,EAAE;AACF,gHAAgH;AAChH,6GAA6G;AAC7G,kGAAkG;AAClG,0GAA0G;AAI1G,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,OAAgB,EAAE,KAAwB;IACzE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAClH,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAK,OAAmC,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;AAC/H,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAAyB,EAAE,KAAwB;IACvG,OAAO,kBAAkB,OAAO,WAAW,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACxH,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,iCAAiC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,cAAc;QAChI,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,OAAgB,EAAE,KAAwB;IAC5F,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;AACvG,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,qBAAqB,CAAC,KAA+B;IACnE,MAAM,KAAK,GAA+C,EAAE,CAAC;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAI,IAAwD,CAAC,cAAc,CAAC;QACvF,IAAI,KAAK;YAAE,KAAK,MAAM,OAAO,IAAI,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AuraCameraSpec, AuraSceneNode } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Returns `camera` with the scene's orbit interaction folded in: `targetPoint` becomes the camera `target` (and
|
|
4
|
+
* the eye keeps its offset from it unless `orbitPosition` pins it), `orbitPosition` becomes `position`, and
|
|
5
|
+
* `autoRotate` becomes the camera's orbit speed. Non-orbit cameras and scenes without such an interaction are
|
|
6
|
+
* returned untouched. When several orbit interactions set the same field the last one wins.
|
|
7
|
+
*/
|
|
8
|
+
export declare function applyOrbitInteraction(camera: AuraCameraSpec, nodes: readonly AuraSceneNode[]): AuraCameraSpec;
|
|
9
|
+
//# sourceMappingURL=orbitInteraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orbitInteraction.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/orbitInteraction.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAuB,aAAa,EAAY,MAAM,YAAY,CAAC;AAU/F;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,cAAc,CA0B7G"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Beat-three.js WP-S.2: `interactions.orbit({ target: [x, y, z], position, autoRotate })` configures the scene's
|
|
2
|
+
// orbit camera. Every camera path (compiler/camera.ts, the rigs, the controller) reads the camera spec, so the
|
|
3
|
+
// interaction is folded into the spec once, when the snapshot is built, and each path honours it unchanged.
|
|
4
|
+
function orbitInteractions(nodes, found = []) {
|
|
5
|
+
for (const node of nodes) {
|
|
6
|
+
if (node.kind === "interaction" && node.mode === "orbit")
|
|
7
|
+
found.push(node);
|
|
8
|
+
else if (node.kind === "group")
|
|
9
|
+
orbitInteractions(node.children, found);
|
|
10
|
+
}
|
|
11
|
+
return found;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Returns `camera` with the scene's orbit interaction folded in: `targetPoint` becomes the camera `target` (and
|
|
15
|
+
* the eye keeps its offset from it unless `orbitPosition` pins it), `orbitPosition` becomes `position`, and
|
|
16
|
+
* `autoRotate` becomes the camera's orbit speed. Non-orbit cameras and scenes without such an interaction are
|
|
17
|
+
* returned untouched. When several orbit interactions set the same field the last one wins.
|
|
18
|
+
*/
|
|
19
|
+
export function applyOrbitInteraction(camera, nodes) {
|
|
20
|
+
if (camera.mode !== "orbit")
|
|
21
|
+
return camera;
|
|
22
|
+
let target;
|
|
23
|
+
let position;
|
|
24
|
+
let autoRotate;
|
|
25
|
+
for (const node of orbitInteractions(nodes)) {
|
|
26
|
+
if (node.targetPoint)
|
|
27
|
+
target = node.targetPoint;
|
|
28
|
+
if (node.orbitPosition)
|
|
29
|
+
position = node.orbitPosition;
|
|
30
|
+
if (node.autoRotate !== undefined)
|
|
31
|
+
autoRotate = node.autoRotate;
|
|
32
|
+
}
|
|
33
|
+
if (!target && !position && autoRotate === undefined)
|
|
34
|
+
return camera;
|
|
35
|
+
let eye = camera.position;
|
|
36
|
+
if (position)
|
|
37
|
+
eye = position;
|
|
38
|
+
else if (target && camera.position && camera.target) {
|
|
39
|
+
eye = [
|
|
40
|
+
camera.position[0] + target[0] - camera.target[0],
|
|
41
|
+
camera.position[1] + target[1] - camera.target[1],
|
|
42
|
+
camera.position[2] + target[2] - camera.target[2]
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...camera,
|
|
47
|
+
...(target ? { target } : {}),
|
|
48
|
+
...(eye ? { position: eye } : {}),
|
|
49
|
+
...(autoRotate !== undefined ? { autoRotate } : {})
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=orbitInteraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orbitInteraction.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/orbitInteraction.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,+GAA+G;AAC/G,4GAA4G;AAI5G,SAAS,iBAAiB,CAAC,KAA+B,EAAE,QAA+B,EAAE;IAC3F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAsB,EAAE,KAA+B;IAC3F,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC;IAC3C,IAAI,MAA4B,CAAC;IACjC,IAAI,QAA8B,CAAC;IACnC,IAAI,UAA8B,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,WAAW;YAAE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChD,IAAI,IAAI,CAAC,aAAa;YAAE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACtD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACpE,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC1B,IAAI,QAAQ;QAAE,GAAG,GAAG,QAAQ,CAAC;SACxB,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACpD,GAAG,GAAG;YACJ,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,MAAM;QACT,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -43,7 +43,33 @@ interface AuraRuntimeScenePhysics {
|
|
|
43
43
|
step(deltaSeconds: number): void;
|
|
44
44
|
}
|
|
45
45
|
export declare function createRuntimeScenePhysics(snapshot: AuraSceneSnapshot): AuraRuntimeScenePhysics | undefined;
|
|
46
|
+
type AuraPhysicsEulerOrder = "XYZ" | "YXZ" | "ZXY" | "ZYX" | "YZX" | "XZY";
|
|
47
|
+
type AuraPhysicsQuat = readonly [number, number, number, number];
|
|
48
|
+
/**
|
|
49
|
+
* Node rotation as the renderer composes it: `quaternion` wins, otherwise `rotation` in the
|
|
50
|
+
* node's `rotationOrder` (default "ZYX", `Rz·Ry·Rx`, see `sceneGraph.ts`). Physics bodies are
|
|
51
|
+
* seeded from this so a rotated body starts where the node is drawn (anim-phys-01).
|
|
52
|
+
*/
|
|
53
|
+
export declare function nodeRotationQuaternion(node: {
|
|
54
|
+
readonly rotation?: AuraVec3 | undefined;
|
|
55
|
+
readonly rotationOrder?: AuraPhysicsEulerOrder | undefined;
|
|
56
|
+
readonly quaternion?: AuraPhysicsQuat | undefined;
|
|
57
|
+
}): AuraPhysicsQuat;
|
|
58
|
+
/** Euler -> quaternion for any order, three.js `Quaternion.setFromEuler` semantics. */
|
|
59
|
+
export declare function orderedEulerToQuat(euler: AuraVec3, order: AuraPhysicsEulerOrder): AuraPhysicsQuat;
|
|
60
|
+
/** Quaternion -> Euler in `order`, three.js `Euler.setFromRotationMatrix` semantics. */
|
|
61
|
+
export declare function quatToOrderedEuler(rotation: AuraPhysicsQuat, order: AuraPhysicsEulerOrder): AuraVec3;
|
|
62
|
+
/**
|
|
63
|
+
* Write a body's world rotation back onto a scene node in the convention the renderer reads:
|
|
64
|
+
* a quaternion-authored node gets its quaternion, otherwise `rotation` in its `rotationOrder`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function writeNodeRotationFromBody(target: object, rotation: AuraPhysicsQuat, setRotation: (euler: AuraVec3) => void): void;
|
|
67
|
+
/**
|
|
68
|
+
* XYZ-order (`Rx·Ry·Rz`) Euler -> quaternion. Kept for existing callers; it is NOT the
|
|
69
|
+
* renderer's default order. Seed physics bodies from scene nodes with `nodeRotationQuaternion`.
|
|
70
|
+
*/
|
|
46
71
|
export declare function eulerToQuat(rotation: AuraVec3): readonly [number, number, number, number];
|
|
72
|
+
export declare function quatToEuler(rotation: readonly [number, number, number, number]): AuraVec3;
|
|
47
73
|
export declare function resolveNodePhysicsShape(node: AuraModelNode | AuraPrimitiveNode, spec: AuraNodePhysicsSpec): PhysicsShape;
|
|
48
74
|
export {};
|
|
49
75
|
//# sourceMappingURL=physics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/physics.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAa,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,wBAAwB,EAA2B,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtP,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAa,YAAY,EAAmB,sBAAsB,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,mBAAmB,EAAgH,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACtX,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAU9C,KAAK,sBAAsB,GAAG,mBAAmB,GAAG;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;CACpD,CAAC;AAwTF,iBAAS,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAQzE;AAED,eAAO,MAAM,OAAO;kCACE,sBAAsB,KAAQ,0BAA0B;uCAC7C,sBAAsB,KAAQ,OAAO,CAAC,0BAA0B,CAAC;0CAOnE,gBAAgB,GAAG,iBAAiB,eAAc,sBAAsB,KAAQ,0BAA0B;+CAK/F,gBAAgB,GAAG,iBAAiB,eAAc,sBAAsB,KAAQ,OAAO,CAAC,0BAA0B,CAAC;8BAS3I,sBAAsB,KAAQ,sBAAsB;oCAC7C,kBAAkB,KAAG,kBAAkB;0DAC5B,YAAY;0CACtB,YAAY;gEACS,YAAY;8BACzC,QAAQ,wBAA6B,YAAY;sCACxC,oBAAoB,KAAG,oBAAoB;+BAClD,0BAA0B,QAAQ,SAAS,GAAG,MAAM,QAAQ,gBAAgB,SAAS,SAAS,GAAG,WAAW,KAAG,IAAI;2BACvH,0BAA0B,YAAY,MAAM,GAAG,sBAAsB,KAAG,SAAS,cAAc,EAAE;+BAC7F,0BAA0B,KAAG,SAAS,OAAO,EAAE;uCACvC,0BAA0B,KAAG,MAAM;8BAC5C,0BAA0B,UAAU,QAAQ,aAAa,QAAQ,YAAY,cAAc,KAAG,UAAU,GAAG,SAAS;iCACjH,0BAA0B,UAAU,QAAQ,UAAU,MAAM,aAAa,QAAQ,YAAY,cAAc,KAAG,aAAa,GAAG,SAAS;4BAC5I,0BAA0B,KAAG,wBAAwB;iCAChD,0BAA0B,KAAG,SAAS,aAAa,EAAE;kCACpD,gBAAgB,KAAG,gBAAgB;8BACvC,mBAAmB,KAAG,mBAAmB;;CAElD,CAAC;AAEX,UAAU,uBAAuB;IAC/B,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,EAAE,MAAM,EAAE;QAC1D,QAAQ,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QAC1D,UAAU,CAAC,EAAE;YAAE,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;KACxE,GAAG,IAAI,CAAC;IACT,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/physics.ts"],"names":[],"mappings":"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"}
|
|
@@ -352,7 +352,7 @@ function populatePhysicsWorldFromScene(controller, nodes) {
|
|
|
352
352
|
const body = controller.createBody({
|
|
353
353
|
type: node.physics.type ?? "dynamic",
|
|
354
354
|
position: node.position ?? [0, 0, 0],
|
|
355
|
-
rotation:
|
|
355
|
+
rotation: nodeRotationQuaternion(node),
|
|
356
356
|
mass: node.physics.mass,
|
|
357
357
|
friction: node.physics.friction,
|
|
358
358
|
restitution: node.physics.restitution,
|
|
@@ -373,14 +373,16 @@ function scenePhysicsNodeAdapter(node) {
|
|
|
373
373
|
getWorldPosition: () => node.position ?? [0, 0, 0],
|
|
374
374
|
getWorldQuaternion: () => {
|
|
375
375
|
const nodeWithPhysicsRotation = node;
|
|
376
|
-
return nodeWithPhysicsRotation.physicsRotation ??
|
|
376
|
+
return nodeWithPhysicsRotation.physicsRotation ?? nodeRotationQuaternion(node);
|
|
377
377
|
},
|
|
378
378
|
setWorldPosition: (position) => {
|
|
379
379
|
node.position = [position[0], position[1], position[2]];
|
|
380
380
|
},
|
|
381
381
|
setWorldQuaternion: (rotation) => {
|
|
382
382
|
node.physicsRotation = [rotation[0], rotation[1], rotation[2], rotation[3]];
|
|
383
|
-
node
|
|
383
|
+
writeNodeRotationFromBody(node, rotation, (euler) => {
|
|
384
|
+
node.rotation = euler;
|
|
385
|
+
});
|
|
384
386
|
}
|
|
385
387
|
};
|
|
386
388
|
}
|
|
@@ -400,7 +402,7 @@ export function createRuntimeScenePhysics(snapshot) {
|
|
|
400
402
|
const body = world.createRigidBody({
|
|
401
403
|
type: spec.type ?? "dynamic",
|
|
402
404
|
position: node.position ?? [0, 0, 0],
|
|
403
|
-
rotation:
|
|
405
|
+
rotation: nodeRotationQuaternion(node),
|
|
404
406
|
mass: spec.mass,
|
|
405
407
|
friction: spec.friction,
|
|
406
408
|
restitution: spec.restitution,
|
|
@@ -457,6 +459,91 @@ export function createRuntimeScenePhysics(snapshot) {
|
|
|
457
459
|
}
|
|
458
460
|
};
|
|
459
461
|
}
|
|
462
|
+
/**
|
|
463
|
+
* Node rotation as the renderer composes it: `quaternion` wins, otherwise `rotation` in the
|
|
464
|
+
* node's `rotationOrder` (default "ZYX", `Rz·Ry·Rx`, see `sceneGraph.ts`). Physics bodies are
|
|
465
|
+
* seeded from this so a rotated body starts where the node is drawn (anim-phys-01).
|
|
466
|
+
*/
|
|
467
|
+
export function nodeRotationQuaternion(node) {
|
|
468
|
+
if (node.quaternion)
|
|
469
|
+
return [node.quaternion[0], node.quaternion[1], node.quaternion[2], node.quaternion[3]];
|
|
470
|
+
return orderedEulerToQuat(node.rotation ?? [0, 0, 0], node.rotationOrder ?? "ZYX");
|
|
471
|
+
}
|
|
472
|
+
/** Sign of the second term of x, y, z, w per Euler order (three.js `setFromEuler`). */
|
|
473
|
+
const EULER_QUAT_SIGNS = {
|
|
474
|
+
XYZ: [1, -1, 1, -1],
|
|
475
|
+
YXZ: [1, -1, -1, 1],
|
|
476
|
+
ZXY: [-1, 1, 1, -1],
|
|
477
|
+
ZYX: [-1, 1, -1, 1],
|
|
478
|
+
YZX: [1, 1, -1, -1],
|
|
479
|
+
XZY: [-1, -1, 1, 1]
|
|
480
|
+
};
|
|
481
|
+
/** Euler -> quaternion for any order, three.js `Quaternion.setFromEuler` semantics. */
|
|
482
|
+
export function orderedEulerToQuat(euler, order) {
|
|
483
|
+
const c1 = Math.cos(euler[0] / 2);
|
|
484
|
+
const c2 = Math.cos(euler[1] / 2);
|
|
485
|
+
const c3 = Math.cos(euler[2] / 2);
|
|
486
|
+
const s1 = Math.sin(euler[0] / 2);
|
|
487
|
+
const s2 = Math.sin(euler[1] / 2);
|
|
488
|
+
const s3 = Math.sin(euler[2] / 2);
|
|
489
|
+
const [sx, sy, sz, sw] = EULER_QUAT_SIGNS[order];
|
|
490
|
+
return [
|
|
491
|
+
s1 * c2 * c3 + sx * c1 * s2 * s3,
|
|
492
|
+
c1 * s2 * c3 + sy * s1 * c2 * s3,
|
|
493
|
+
c1 * c2 * s3 + sz * s1 * s2 * c3,
|
|
494
|
+
c1 * c2 * c3 + sw * s1 * s2 * s3
|
|
495
|
+
];
|
|
496
|
+
}
|
|
497
|
+
/** Quaternion -> Euler in `order`, three.js `Euler.setFromRotationMatrix` semantics. */
|
|
498
|
+
export function quatToOrderedEuler(rotation, order) {
|
|
499
|
+
const [x, y, z, w] = rotation;
|
|
500
|
+
const m11 = 1 - 2 * (y * y + z * z), m12 = 2 * (x * y - w * z), m13 = 2 * (x * z + w * y);
|
|
501
|
+
const m21 = 2 * (x * y + w * z), m22 = 1 - 2 * (x * x + z * z), m23 = 2 * (y * z - w * x);
|
|
502
|
+
const m31 = 2 * (x * z - w * y), m32 = 2 * (y * z + w * x), m33 = 1 - 2 * (x * x + y * y);
|
|
503
|
+
const clamp = (value) => Math.min(1, Math.max(-1, value));
|
|
504
|
+
const nearPole = (value) => Math.abs(value) >= 0.9999999;
|
|
505
|
+
switch (order) {
|
|
506
|
+
case "XYZ": {
|
|
507
|
+
const ey = Math.asin(clamp(m13));
|
|
508
|
+
return nearPole(m13) ? [Math.atan2(m32, m22), ey, 0] : [Math.atan2(-m23, m33), ey, Math.atan2(-m12, m11)];
|
|
509
|
+
}
|
|
510
|
+
case "YXZ": {
|
|
511
|
+
const ex = Math.asin(-clamp(m23));
|
|
512
|
+
return nearPole(m23) ? [ex, Math.atan2(-m31, m11), 0] : [ex, Math.atan2(m13, m33), Math.atan2(m21, m22)];
|
|
513
|
+
}
|
|
514
|
+
case "ZXY": {
|
|
515
|
+
const ex = Math.asin(clamp(m32));
|
|
516
|
+
return nearPole(m32) ? [ex, 0, Math.atan2(m21, m11)] : [ex, Math.atan2(-m31, m33), Math.atan2(-m12, m22)];
|
|
517
|
+
}
|
|
518
|
+
case "ZYX": {
|
|
519
|
+
const ey = Math.asin(-clamp(m31));
|
|
520
|
+
return nearPole(m31) ? [0, ey, Math.atan2(-m12, m22)] : [Math.atan2(m32, m33), ey, Math.atan2(m21, m11)];
|
|
521
|
+
}
|
|
522
|
+
case "YZX": {
|
|
523
|
+
const ez = Math.asin(clamp(m21));
|
|
524
|
+
return nearPole(m21) ? [0, Math.atan2(m13, m33), ez] : [Math.atan2(-m23, m22), Math.atan2(-m31, m11), ez];
|
|
525
|
+
}
|
|
526
|
+
case "XZY": {
|
|
527
|
+
const ez = Math.asin(-clamp(m12));
|
|
528
|
+
return nearPole(m12) ? [Math.atan2(-m23, m33), 0, ez] : [Math.atan2(m32, m22), Math.atan2(m13, m11), ez];
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Write a body's world rotation back onto a scene node in the convention the renderer reads:
|
|
534
|
+
* a quaternion-authored node gets its quaternion, otherwise `rotation` in its `rotationOrder`.
|
|
535
|
+
*/
|
|
536
|
+
export function writeNodeRotationFromBody(target, rotation, setRotation) {
|
|
537
|
+
const node = target;
|
|
538
|
+
if (node.quaternion) {
|
|
539
|
+
node.quaternion = [rotation[0], rotation[1], rotation[2], rotation[3]];
|
|
540
|
+
}
|
|
541
|
+
setRotation(quatToOrderedEuler(rotation, node.rotationOrder ?? "ZYX"));
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* XYZ-order (`Rx·Ry·Rz`) Euler -> quaternion. Kept for existing callers; it is NOT the
|
|
545
|
+
* renderer's default order. Seed physics bodies from scene nodes with `nodeRotationQuaternion`.
|
|
546
|
+
*/
|
|
460
547
|
export function eulerToQuat(rotation) {
|
|
461
548
|
const [x, y, z] = rotation;
|
|
462
549
|
const c1 = Math.cos(x / 2);
|
|
@@ -472,7 +559,7 @@ export function eulerToQuat(rotation) {
|
|
|
472
559
|
c1 * c2 * c3 - s1 * s2 * s3
|
|
473
560
|
];
|
|
474
561
|
}
|
|
475
|
-
function quatToEuler(rotation) {
|
|
562
|
+
export function quatToEuler(rotation) {
|
|
476
563
|
const [x, y, z, w] = rotation;
|
|
477
564
|
const sinrCosp = 2 * (w * x + y * z);
|
|
478
565
|
const cosrCosp = 1 - 2 * (x * x + y * y);
|
|
@@ -484,6 +571,27 @@ function quatToEuler(rotation) {
|
|
|
484
571
|
const yaw = Math.atan2(sinyCosp, cosyCosp);
|
|
485
572
|
return [roll, pitch, yaw];
|
|
486
573
|
}
|
|
574
|
+
/**
|
|
575
|
+
* Collider for a capsule or cylinder primitive whose physics spec names no dimensions. The
|
|
576
|
+
* primitive's `size` is [diameter, total height, diameter]. When the body is at least as tall
|
|
577
|
+
* as it is wide, a capsule spanning exactly that height fits it (radius half the diameter,
|
|
578
|
+
* cylindrical half-height the total half-height minus one cap radius). A short, wide body
|
|
579
|
+
* (a disc, a coin, a squat capsule) would degenerate to a sphere as small as its height, far
|
|
580
|
+
* inside the visible shape, so it gets a box with the visible radius and height (anim-phys-04).
|
|
581
|
+
*/
|
|
582
|
+
function derivedCapsule(size, scale) {
|
|
583
|
+
const halfTotal = Math.max(0.02, size[1] * scale[1] * 0.5);
|
|
584
|
+
const halfX = Math.max(0.01, size[0] * scale[0] * 0.5);
|
|
585
|
+
const halfZ = Math.max(0.01, size[2] * scale[2] * 0.5);
|
|
586
|
+
const radius = Math.max(halfX, halfZ);
|
|
587
|
+
if (radius > halfTotal + 1e-6)
|
|
588
|
+
return PhysicsShapeFactory.box(halfX, halfTotal, halfZ);
|
|
589
|
+
const halfHeight = halfTotal - radius;
|
|
590
|
+
// As tall as it is wide: the capsule has no cylindrical part (capsule() rejects 0).
|
|
591
|
+
if (halfHeight <= 1e-6)
|
|
592
|
+
return PhysicsShapeFactory.sphere(radius);
|
|
593
|
+
return PhysicsShapeFactory.capsule(radius, halfHeight);
|
|
594
|
+
}
|
|
487
595
|
export function resolveNodePhysicsShape(node, spec) {
|
|
488
596
|
if (typeof spec.shape === "object" || spec.halfExtents || spec.radius || spec.halfHeight || spec.shape)
|
|
489
597
|
return resolveAgentPhysicsShape(spec);
|
|
@@ -493,13 +601,13 @@ export function resolveNodePhysicsShape(node, spec) {
|
|
|
493
601
|
if (node.primitive === "sphere")
|
|
494
602
|
return PhysicsShapeFactory.sphere(Math.max(size[0] * scale[0], size[1] * scale[1], size[2] * scale[2]) * 0.5);
|
|
495
603
|
if (node.primitive === "capsule")
|
|
496
|
-
return
|
|
604
|
+
return derivedCapsule(size, scale);
|
|
497
605
|
if (node.primitive === "torus")
|
|
498
606
|
return PhysicsShapeFactory.sphere(Math.max(size[0] * scale[0], size[1] * scale[1], size[2] * scale[2]) * 0.5);
|
|
499
607
|
if (node.primitive === "plane")
|
|
500
608
|
return PhysicsShapeFactory.plane();
|
|
501
609
|
if (node.primitive === "cylinder")
|
|
502
|
-
return
|
|
610
|
+
return derivedCapsule(size, scale);
|
|
503
611
|
return PhysicsShapeFactory.box(Math.max(0.02, size[0] * scale[0] * 0.5), Math.max(0.02, size[1] * scale[1] * 0.5), Math.max(0.02, size[2] * scale[2] * 0.5));
|
|
504
612
|
}
|
|
505
613
|
const bounds = node.asset.bounds ?? [1, 1, 1];
|