@aura3d/engine 1.4.5 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -29
- package/dist/animation/Retargeting.d.ts +12 -0
- package/dist/animation/Retargeting.d.ts.map +1 -0
- package/dist/animation/Retargeting.js +19 -0
- package/dist/animation/Retargeting.js.map +1 -0
- package/dist/assets/GLTFLoader.d.ts +4 -0
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +39 -4
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/assets/GLTFRenderResources.d.ts +16 -0
- package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
- package/dist/assets/GLTFRenderResources.js +42 -2
- package/dist/assets/GLTFRenderResources.js.map +1 -1
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts +6 -0
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -1
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js +2 -1
- package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -1
- package/dist/assets/index.d.ts +0 -1
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +0 -1
- package/dist/assets/index.js.map +1 -1
- package/dist/assets/loaders/index.d.ts +0 -1
- package/dist/assets/loaders/index.d.ts.map +1 -1
- package/dist/assets/loaders/index.js +0 -1
- package/dist/assets/loaders/index.js.map +1 -1
- package/dist/aura3d-cli/asset-intent.d.ts +148 -0
- package/dist/aura3d-cli/asset-intent.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-intent.js +145 -0
- package/dist/aura3d-cli/asset-intent.js.map +1 -0
- package/dist/aura3d-cli/asset-role-admission.d.ts +174 -0
- package/dist/aura3d-cli/asset-role-admission.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-role-admission.js +381 -0
- package/dist/aura3d-cli/asset-role-admission.js.map +1 -0
- package/dist/aura3d-cli/asset-screening-effects.d.ts +95 -0
- package/dist/aura3d-cli/asset-screening-effects.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-screening-effects.js +321 -0
- package/dist/aura3d-cli/asset-screening-effects.js.map +1 -0
- package/dist/aura3d-cli/asset-screening-pipeline.d.ts +132 -0
- package/dist/aura3d-cli/asset-screening-pipeline.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-screening-pipeline.js +277 -0
- package/dist/aura3d-cli/asset-screening-pipeline.js.map +1 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.d.ts +15 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.d.ts.map +1 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.js +46 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.js.map +1 -0
- package/dist/aura3d-cli/cli-help.js +1 -1
- package/dist/aura3d-cli/cli.js +16 -2
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +8 -0
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +390 -17
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/search.d.ts +4 -0
- package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge/search.js +22 -0
- package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.d.ts +20 -5
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge.js +38 -1
- package/dist/aura3d-cli/pull-bridge.js.map +1 -1
- package/dist/controls/ControlState.d.ts +1 -1
- package/dist/controls/ControlState.d.ts.map +1 -1
- package/dist/controls/DragControls.d.ts +21 -1
- package/dist/controls/DragControls.d.ts.map +1 -1
- package/dist/controls/DragControls.js +24 -2
- package/dist/controls/DragControls.js.map +1 -1
- package/dist/controls/FirstPersonControls.d.ts +10 -1
- package/dist/controls/FirstPersonControls.d.ts.map +1 -1
- package/dist/controls/FirstPersonControls.js +18 -2
- package/dist/controls/FirstPersonControls.js.map +1 -1
- package/dist/controls/FlyControls.d.ts +42 -0
- package/dist/controls/FlyControls.d.ts.map +1 -1
- package/dist/controls/FlyControls.js +106 -3
- package/dist/controls/FlyControls.js.map +1 -1
- package/dist/controls/MapControls.d.ts +13 -0
- package/dist/controls/MapControls.d.ts.map +1 -1
- package/dist/controls/MapControls.js +40 -2
- package/dist/controls/MapControls.js.map +1 -1
- package/dist/controls/OrbitControls.d.ts +54 -0
- package/dist/controls/OrbitControls.d.ts.map +1 -1
- package/dist/controls/OrbitControls.js +133 -0
- package/dist/controls/OrbitControls.js.map +1 -1
- package/dist/controls/PointerLockControls.d.ts +12 -5
- package/dist/controls/PointerLockControls.d.ts.map +1 -1
- package/dist/controls/PointerLockControls.js +30 -11
- package/dist/controls/PointerLockControls.js.map +1 -1
- package/dist/controls/SelectionManager.d.ts +22 -1
- package/dist/controls/SelectionManager.d.ts.map +1 -1
- package/dist/controls/SelectionManager.js +64 -6
- package/dist/controls/SelectionManager.js.map +1 -1
- package/dist/controls/TransformControls.d.ts +135 -1
- package/dist/controls/TransformControls.d.ts.map +1 -1
- package/dist/controls/TransformControls.js +534 -10
- package/dist/controls/TransformControls.js.map +1 -1
- package/dist/controls/index.d.ts +7 -2
- package/dist/controls/index.d.ts.map +1 -1
- package/dist/controls/index.js +1 -1
- package/dist/controls/index.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +2 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +769 -42
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js +22 -2
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-replacement-candidates.js +26 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.js.map +1 -1
- package/dist/ecs/components/MeshComponent.d.ts +5 -2
- package/dist/ecs/components/MeshComponent.d.ts.map +1 -1
- package/dist/ecs/components/MeshComponent.js.map +1 -1
- package/dist/editor-runtime/CartoonSceneEditor.d.ts +111 -0
- package/dist/editor-runtime/CartoonSceneEditor.d.ts.map +1 -0
- package/dist/editor-runtime/CartoonSceneEditor.js +285 -0
- package/dist/editor-runtime/CartoonSceneEditor.js.map +1 -0
- package/dist/editor-runtime/InteractiveTransformGizmo.d.ts +142 -0
- package/dist/editor-runtime/InteractiveTransformGizmo.d.ts.map +1 -0
- package/dist/editor-runtime/InteractiveTransformGizmo.js +468 -0
- package/dist/editor-runtime/InteractiveTransformGizmo.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +2 -0
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +1 -0
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/ApplicationKits.d.ts +307 -0
- package/dist/engine/agent-api/ApplicationKits.d.ts.map +1 -0
- package/dist/engine/agent-api/ApplicationKits.js +650 -0
- package/dist/engine/agent-api/ApplicationKits.js.map +1 -0
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts +50 -0
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonAssetManifest.js +65 -0
- package/dist/engine/agent-api/CartoonAssetManifest.js.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts +120 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.js +432 -0
- package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts +51 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js +79 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts +83 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js +128 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts +150 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.js +345 -0
- package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts +143 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js +410 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
- package/dist/engine/agent-api/CartoonRouteProof.d.ts +112 -0
- package/dist/engine/agent-api/CartoonRouteProof.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRouteProof.js +127 -0
- package/dist/engine/agent-api/CartoonRouteProof.js.map +1 -0
- package/dist/engine/agent-api/CombatFrameData.d.ts +210 -0
- package/dist/engine/agent-api/CombatFrameData.d.ts.map +1 -0
- package/dist/engine/agent-api/CombatFrameData.js +324 -0
- package/dist/engine/agent-api/CombatFrameData.js.map +1 -0
- package/dist/engine/agent-api/FocusSelection.d.ts +186 -0
- package/dist/engine/agent-api/FocusSelection.d.ts.map +1 -0
- package/dist/engine/agent-api/FocusSelection.js +436 -0
- package/dist/engine/agent-api/FocusSelection.js.map +1 -0
- package/dist/engine/agent-api/GameEvidence.d.ts +1 -0
- package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -1
- package/dist/engine/agent-api/GameEvidence.js +1 -0
- package/dist/engine/agent-api/GameEvidence.js.map +1 -1
- package/dist/engine/agent-api/GameGenreKits.d.ts +43 -1
- package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -1
- package/dist/engine/agent-api/GameGenreKits.js +79 -13
- package/dist/engine/agent-api/GameGenreKits.js.map +1 -1
- package/dist/engine/agent-api/GameRuntime.d.ts +1 -0
- package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
- package/dist/engine/agent-api/GameRuntime.js +1 -0
- package/dist/engine/agent-api/GameRuntime.js.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +22 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.js +9 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -1
- package/dist/engine/agent-api/LayeredSceneComposition.d.ts +295 -0
- package/dist/engine/agent-api/LayeredSceneComposition.d.ts.map +1 -0
- package/dist/engine/agent-api/LayeredSceneComposition.js +387 -0
- package/dist/engine/agent-api/LayeredSceneComposition.js.map +1 -0
- package/dist/engine/agent-api/PlatformerMotion.d.ts +177 -0
- package/dist/engine/agent-api/PlatformerMotion.d.ts.map +1 -0
- package/dist/engine/agent-api/PlatformerMotion.js +207 -0
- package/dist/engine/agent-api/PlatformerMotion.js.map +1 -0
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts +62 -0
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -1
- package/dist/engine/agent-api/SceneGroundingUtils.js +37 -0
- package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -1
- package/dist/engine/agent-api/SceneQueries.d.ts +124 -0
- package/dist/engine/agent-api/SceneQueries.d.ts.map +1 -0
- package/dist/engine/agent-api/SceneQueries.js +221 -0
- package/dist/engine/agent-api/SceneQueries.js.map +1 -0
- package/dist/engine/agent-api/SpatialAnchoring.d.ts +232 -0
- package/dist/engine/agent-api/SpatialAnchoring.d.ts.map +1 -0
- package/dist/engine/agent-api/SpatialAnchoring.js +348 -0
- package/dist/engine/agent-api/SpatialAnchoring.js.map +1 -0
- package/dist/engine/agent-api/SubjectFramingUtils.d.ts +127 -0
- package/dist/engine/agent-api/SubjectFramingUtils.d.ts.map +1 -0
- package/dist/engine/agent-api/SubjectFramingUtils.js +126 -0
- package/dist/engine/agent-api/SubjectFramingUtils.js.map +1 -0
- package/dist/engine/agent-api/TouchControlBinding.d.ts +81 -0
- package/dist/engine/agent-api/TouchControlBinding.d.ts.map +1 -0
- package/dist/engine/agent-api/TouchControlBinding.js +116 -0
- package/dist/engine/agent-api/TouchControlBinding.js.map +1 -0
- package/dist/engine/agent-api/VehicleChassis.d.ts +192 -0
- package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -0
- package/dist/engine/agent-api/VehicleChassis.js +322 -0
- package/dist/engine/agent-api/VehicleChassis.js.map +1 -0
- package/dist/engine/agent-api/VehicleDriverAi.d.ts +123 -0
- package/dist/engine/agent-api/VehicleDriverAi.d.ts.map +1 -0
- package/dist/engine/agent-api/VehicleDriverAi.js +217 -0
- package/dist/engine/agent-api/VehicleDriverAi.js.map +1 -0
- package/dist/engine/agent-api/WorldLabelRenderer.d.ts +146 -0
- package/dist/engine/agent-api/WorldLabelRenderer.d.ts.map +1 -0
- package/dist/engine/agent-api/WorldLabelRenderer.js +331 -0
- package/dist/engine/agent-api/WorldLabelRenderer.js.map +1 -0
- package/dist/engine/agent-api/index.d.ts +69 -0
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +633 -75
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/production-runtime/GameRenderPreset.d.ts +32 -0
- package/dist/engine/production-runtime/GameRenderPreset.d.ts.map +1 -1
- package/dist/engine/production-runtime/GameRenderPreset.js +37 -2
- package/dist/engine/production-runtime/GameRenderPreset.js.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +8 -0
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +2 -1
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/input/controls/PointerLockControls.d.ts +1 -1
- package/dist/input/controls/PointerLockControls.d.ts.map +1 -1
- package/dist/input/controls/PointerLockControls.js +12 -0
- package/dist/input/controls/PointerLockControls.js.map +1 -1
- package/dist/physics/Collider.d.ts +1 -1
- package/dist/physics/Collider.d.ts.map +1 -1
- package/dist/physics/Collider.js +2 -2
- package/dist/physics/Collider.js.map +1 -1
- package/dist/physics/CollisionEvents.d.ts +1 -0
- package/dist/physics/CollisionEvents.d.ts.map +1 -1
- package/dist/physics/CollisionEvents.js.map +1 -1
- package/dist/physics/NarrowPhase.d.ts +11 -0
- package/dist/physics/NarrowPhase.d.ts.map +1 -0
- package/dist/physics/NarrowPhase.js +565 -0
- package/dist/physics/NarrowPhase.js.map +1 -0
- package/dist/physics/PhysicsDebugDraw.js +19 -1
- package/dist/physics/PhysicsDebugDraw.js.map +1 -1
- package/dist/physics/PhysicsWorld.d.ts +43 -0
- package/dist/physics/PhysicsWorld.d.ts.map +1 -1
- package/dist/physics/PhysicsWorld.js +305 -30
- package/dist/physics/PhysicsWorld.js.map +1 -1
- package/dist/physics/RigidBody.d.ts +8 -1
- package/dist/physics/RigidBody.d.ts.map +1 -1
- package/dist/physics/RigidBody.js +32 -5
- package/dist/physics/RigidBody.js.map +1 -1
- package/dist/physics/Shape.d.ts +16 -2
- package/dist/physics/Shape.d.ts.map +1 -1
- package/dist/physics/Shape.js +93 -31
- package/dist/physics/Shape.js.map +1 -1
- package/dist/physics/TimeOfImpact.d.ts +15 -0
- package/dist/physics/TimeOfImpact.d.ts.map +1 -0
- package/dist/physics/TimeOfImpact.js +81 -0
- package/dist/physics/TimeOfImpact.js.map +1 -0
- package/dist/physics/index.d.ts +2 -0
- package/dist/physics/index.d.ts.map +1 -1
- package/dist/physics/index.js +2 -0
- package/dist/physics/index.js.map +1 -1
- package/dist/rendering/CascadedShadowMaps.d.ts +9 -1
- package/dist/rendering/CascadedShadowMaps.d.ts.map +1 -1
- package/dist/rendering/CascadedShadowMaps.js +68 -0
- package/dist/rendering/CascadedShadowMaps.js.map +1 -1
- package/dist/rendering/ClusteredForwardLighting.d.ts +28 -0
- package/dist/rendering/ClusteredForwardLighting.d.ts.map +1 -0
- package/dist/rendering/ClusteredForwardLighting.js +156 -0
- package/dist/rendering/ClusteredForwardLighting.js.map +1 -0
- package/dist/rendering/DepthPass.d.ts +14 -1
- package/dist/rendering/DepthPass.d.ts.map +1 -1
- package/dist/rendering/DepthPass.js +19 -4
- package/dist/rendering/DepthPass.js.map +1 -1
- package/dist/rendering/EnvironmentMapResources.d.ts +59 -1
- package/dist/rendering/EnvironmentMapResources.d.ts.map +1 -1
- package/dist/rendering/EnvironmentMapResources.js +140 -100
- package/dist/rendering/EnvironmentMapResources.js.map +1 -1
- package/dist/rendering/EnvironmentPlatform.d.ts +3 -2
- package/dist/rendering/EnvironmentPlatform.d.ts.map +1 -1
- package/dist/rendering/EnvironmentPlatform.js +99 -44
- package/dist/rendering/EnvironmentPlatform.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts +37 -0
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +234 -7
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/Geometry.d.ts +19 -0
- package/dist/rendering/Geometry.d.ts.map +1 -1
- package/dist/rendering/Geometry.js +64 -0
- package/dist/rendering/Geometry.js.map +1 -1
- package/dist/rendering/IBL.d.ts.map +1 -1
- package/dist/rendering/IBL.js +0 -1
- package/dist/rendering/IBL.js.map +1 -1
- package/dist/rendering/LightCollector.d.ts +5 -1
- package/dist/rendering/LightCollector.d.ts.map +1 -1
- package/dist/rendering/LightCollector.js +16 -3
- package/dist/rendering/LightCollector.js.map +1 -1
- package/dist/rendering/LightUniforms.d.ts +26 -1
- package/dist/rendering/LightUniforms.d.ts.map +1 -1
- package/dist/rendering/LightUniforms.js +140 -8
- package/dist/rendering/LightUniforms.js.map +1 -1
- package/dist/rendering/LightingRig.d.ts +77 -0
- package/dist/rendering/LightingRig.d.ts.map +1 -1
- package/dist/rendering/LightingRig.js +100 -11
- package/dist/rendering/LightingRig.js.map +1 -1
- package/dist/rendering/MeshConsolidation.d.ts +63 -0
- package/dist/rendering/MeshConsolidation.d.ts.map +1 -0
- package/dist/rendering/MeshConsolidation.js +251 -0
- package/dist/rendering/MeshConsolidation.js.map +1 -0
- package/dist/rendering/PMREM.d.ts +13 -1
- package/dist/rendering/PMREM.d.ts.map +1 -1
- package/dist/rendering/PMREM.js +18 -4
- package/dist/rendering/PMREM.js.map +1 -1
- package/dist/rendering/PostProcessPass.d.ts +24 -2
- package/dist/rendering/PostProcessPass.d.ts.map +1 -1
- package/dist/rendering/PostProcessPass.js +136 -18
- package/dist/rendering/PostProcessPass.js.map +1 -1
- package/dist/rendering/PrimitiveSubmissionAudit.d.ts +195 -0
- package/dist/rendering/PrimitiveSubmissionAudit.d.ts.map +1 -0
- package/dist/rendering/PrimitiveSubmissionAudit.js +280 -0
- package/dist/rendering/PrimitiveSubmissionAudit.js.map +1 -0
- package/dist/rendering/ProductTurntableFixtures.d.ts.map +1 -1
- package/dist/rendering/ProductTurntableFixtures.js +93 -13
- package/dist/rendering/ProductTurntableFixtures.js.map +1 -1
- package/dist/rendering/ReflectionProbe.d.ts +59 -0
- package/dist/rendering/ReflectionProbe.d.ts.map +1 -1
- package/dist/rendering/ReflectionProbe.js +224 -0
- package/dist/rendering/ReflectionProbe.js.map +1 -1
- package/dist/rendering/ReflectionSurfaces.d.ts +4 -2
- package/dist/rendering/ReflectionSurfaces.d.ts.map +1 -1
- package/dist/rendering/ReflectionSurfaces.js +13 -8
- package/dist/rendering/ReflectionSurfaces.js.map +1 -1
- package/dist/rendering/RenderBackend.d.ts +1 -1
- package/dist/rendering/RenderBackend.d.ts.map +1 -1
- package/dist/rendering/RenderBackend.js +5 -1
- package/dist/rendering/RenderBackend.js.map +1 -1
- package/dist/rendering/RenderDevice.d.ts +13 -2
- package/dist/rendering/RenderDevice.d.ts.map +1 -1
- package/dist/rendering/RenderDevice.js +5 -2
- package/dist/rendering/RenderDevice.js.map +1 -1
- package/dist/rendering/Renderer.d.ts +41 -1
- package/dist/rendering/Renderer.d.ts.map +1 -1
- package/dist/rendering/Renderer.js +406 -61
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.d.ts +10 -3
- package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.js +25 -5
- package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
- package/dist/rendering/RendererVisualPipelineReport.d.ts +3 -2
- package/dist/rendering/RendererVisualPipelineReport.d.ts.map +1 -1
- package/dist/rendering/RendererVisualPipelineReport.js +2 -0
- package/dist/rendering/RendererVisualPipelineReport.js.map +1 -1
- package/dist/rendering/ScreenSpaceLineMaterial.d.ts +34 -0
- package/dist/rendering/ScreenSpaceLineMaterial.d.ts.map +1 -0
- package/dist/rendering/ScreenSpaceLineMaterial.js +93 -0
- package/dist/rendering/ScreenSpaceLineMaterial.js.map +1 -0
- package/dist/rendering/ShaderChunks.d.ts +7 -0
- package/dist/rendering/ShaderChunks.d.ts.map +1 -1
- package/dist/rendering/ShaderChunks.js +137 -0
- package/dist/rendering/ShaderChunks.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts +17 -0
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +940 -98
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/ShadowPass.d.ts +10 -0
- package/dist/rendering/ShadowPass.d.ts.map +1 -1
- package/dist/rendering/ShadowPass.js +8 -1
- package/dist/rendering/ShadowPass.js.map +1 -1
- package/dist/rendering/SkinnedLitMaterial.d.ts +6 -0
- package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
- package/dist/rendering/SkinnedLitMaterial.js +22 -8
- package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
- package/dist/rendering/SkinnedUnlitMaterial.d.ts +8 -0
- package/dist/rendering/SkinnedUnlitMaterial.d.ts.map +1 -1
- package/dist/rendering/SkinnedUnlitMaterial.js +26 -9
- package/dist/rendering/SkinnedUnlitMaterial.js.map +1 -1
- package/dist/rendering/SpecularPrefilter.d.ts +42 -0
- package/dist/rendering/SpecularPrefilter.d.ts.map +1 -0
- package/dist/rendering/SpecularPrefilter.js +480 -0
- package/dist/rendering/SpecularPrefilter.js.map +1 -0
- package/dist/rendering/TerrainFixtures.d.ts +24 -0
- package/dist/rendering/TerrainFixtures.d.ts.map +1 -1
- package/dist/rendering/TerrainFixtures.js +96 -0
- package/dist/rendering/TerrainFixtures.js.map +1 -1
- package/dist/rendering/Texture.d.ts +7 -0
- package/dist/rendering/Texture.d.ts.map +1 -1
- package/dist/rendering/Texture.js +9 -0
- package/dist/rendering/Texture.js.map +1 -1
- package/dist/rendering/VertexFormat.d.ts +34 -1
- package/dist/rendering/VertexFormat.d.ts.map +1 -1
- package/dist/rendering/VertexFormat.js +61 -0
- package/dist/rendering/VertexFormat.js.map +1 -1
- package/dist/rendering/WebGL2Device.d.ts +48 -0
- package/dist/rendering/WebGL2Device.d.ts.map +1 -1
- package/dist/rendering/WebGL2Device.js +1298 -44
- package/dist/rendering/WebGL2Device.js.map +1 -1
- package/dist/rendering/WebGPUDevice.d.ts +7 -2
- package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
- package/dist/rendering/WebGPUDevice.js +111 -17
- package/dist/rendering/WebGPUDevice.js.map +1 -1
- package/dist/rendering/WebGPUSkinningLimits.d.ts +14 -0
- package/dist/rendering/WebGPUSkinningLimits.d.ts.map +1 -0
- package/dist/rendering/WebGPUSkinningLimits.js +14 -0
- package/dist/rendering/WebGPUSkinningLimits.js.map +1 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts +19 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js +13 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts +36 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.js +23 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.js.map +1 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.d.ts +130 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.js +303 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.js.map +1 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.d.ts +28 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.js +39 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.js.map +1 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts +79 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.js +88 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.js.map +1 -0
- package/dist/rendering/cartoon/index.d.ts +6 -0
- package/dist/rendering/cartoon/index.d.ts.map +1 -0
- package/dist/rendering/cartoon/index.js +6 -0
- package/dist/rendering/cartoon/index.js.map +1 -0
- package/dist/rendering/index.d.ts +26 -15
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +15 -9
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts +93 -0
- package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts.map +1 -0
- package/dist/rendering/postprocess/NativeLdrEffectLuts.js +202 -0
- package/dist/rendering/postprocess/NativeLdrEffectLuts.js.map +1 -0
- package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
- package/dist/rendering/production-runtime/PBRHDRPipeline.js +3 -0
- package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts +1 -0
- package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionRendererTypes.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js +5 -3
- package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +9 -5
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/rendering/production-runtime/TransmissionBackdropCapture.d.ts +5 -0
- package/dist/rendering/production-runtime/TransmissionBackdropCapture.d.ts.map +1 -1
- package/dist/rendering/production-runtime/TransmissionBackdropCapture.js +40 -0
- package/dist/rendering/production-runtime/TransmissionBackdropCapture.js.map +1 -1
- package/dist/rendering/production-runtime/environment/HDRLoader.d.ts +6 -0
- package/dist/rendering/production-runtime/environment/HDRLoader.d.ts.map +1 -1
- package/dist/rendering/production-runtime/environment/HDRLoader.js +19 -0
- package/dist/rendering/production-runtime/environment/HDRLoader.js.map +1 -1
- package/dist/rendering/production-runtime/index.d.ts +3 -1
- package/dist/rendering/production-runtime/index.d.ts.map +1 -1
- package/dist/rendering/production-runtime/index.js +1 -0
- package/dist/rendering/production-runtime/index.js.map +1 -1
- package/dist/scene/Light.d.ts +1 -1
- package/dist/scene/Light.d.ts.map +1 -1
- package/dist/scene/RectAreaLight.d.ts +22 -0
- package/dist/scene/RectAreaLight.d.ts.map +1 -0
- package/dist/scene/RectAreaLight.js +46 -0
- package/dist/scene/RectAreaLight.js.map +1 -0
- package/dist/scene/Scene.d.ts +6 -1
- package/dist/scene/Scene.d.ts.map +1 -1
- package/dist/scene/Scene.js +8 -1
- package/dist/scene/Scene.js.map +1 -1
- package/dist/scene/SceneSerializer.d.ts +3 -1
- package/dist/scene/SceneSerializer.d.ts.map +1 -1
- package/dist/scene/SceneSerializer.js +14 -7
- package/dist/scene/SceneSerializer.js.map +1 -1
- package/dist/scene/index.d.ts +1 -0
- package/dist/scene/index.d.ts.map +1 -1
- package/dist/scene/index.js +1 -0
- package/dist/scene/index.js.map +1 -1
- package/dist/scripting/CartoonNodeCategories.d.ts +3 -0
- package/dist/scripting/CartoonNodeCategories.d.ts.map +1 -0
- package/dist/scripting/CartoonNodeCategories.js +9 -0
- package/dist/scripting/CartoonNodeCategories.js.map +1 -0
- package/dist/scripting/CartoonVisualNodes.d.ts +3 -0
- package/dist/scripting/CartoonVisualNodes.d.ts.map +1 -0
- package/dist/scripting/CartoonVisualNodes.js +41 -0
- package/dist/scripting/CartoonVisualNodes.js.map +1 -0
- package/package.json +131 -114
- package/templates/production-asset-inspector/README.md +5 -0
- package/templates/production-asset-inspector/asset-manifest.json +9 -0
- package/templates/production-asset-inspector/index.html +2 -0
- package/templates/production-asset-inspector/package.json +17 -0
- package/templates/production-asset-inspector/src/main.ts +16 -0
- package/templates/production-material-studio/README.md +5 -0
- package/templates/production-material-studio/asset-manifest.json +9 -0
- package/templates/production-material-studio/index.html +2 -0
- package/templates/production-material-studio/package.json +17 -0
- package/templates/production-material-studio/src/main.ts +16 -0
- package/templates/production-product-configurator/README.md +5 -0
- package/templates/production-product-configurator/asset-manifest.json +9 -0
- package/templates/production-product-configurator/index.html +2 -0
- package/templates/production-product-configurator/package.json +17 -0
- package/templates/production-product-configurator/src/main.ts +16 -0
- package/templates/production-product-viewer/README.md +7 -0
- package/templates/production-product-viewer/asset-manifest.json +8 -0
- package/templates/production-product-viewer/index.html +26 -0
- package/templates/production-product-viewer/package.json +17 -0
- package/templates/production-product-viewer/src/main.ts +70 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reusable platformer motion tuning and level solvability.
|
|
3
|
+
*
|
|
4
|
+
* ## The defects this addresses
|
|
5
|
+
*
|
|
6
|
+
* Skyline Runner's jump was reported as unnatural, floaty, and unreliable to land,
|
|
7
|
+
* with a world that read as disconnected floating strips and a session that ended in
|
|
8
|
+
* about half a minute. Those are not four unrelated complaints; three of them follow
|
|
9
|
+
* from one number.
|
|
10
|
+
*
|
|
11
|
+
* The level ships `jumpVelocity: 7.4` and inherits the kit default `gravity: -22`.
|
|
12
|
+
* That gives an apex of `v^2 / 2g = 1.245` world units and an airtime of
|
|
13
|
+
* `2v / g = 0.673` seconds. The level's platforms step up by at most **0.36** units
|
|
14
|
+
* and are separated by gaps of at most **0.30** units. So every jump rises about
|
|
15
|
+
* 3.5x higher than the tallest step it needs to clear and travels well past the
|
|
16
|
+
* widest gap, with the character spending two thirds of a second in the air on a
|
|
17
|
+
* course whose obstacles need a fraction of that. The character therefore appears to
|
|
18
|
+
* float above the level rather than move through it, landings arrive long after the
|
|
19
|
+
* player expects them, and because the apex dwarfs the platform spacing the platforms
|
|
20
|
+
* read as unrelated strips rather than as a connected route.
|
|
21
|
+
*
|
|
22
|
+
* The engine defect is that nothing related jump tuning to level geometry, so a level
|
|
23
|
+
* could ship physically inconsistent with its own platforms and every gate would pass:
|
|
24
|
+
* the level is *solvable* (an over-powered jump clears everything), the screenshots
|
|
25
|
+
* look fine, and no metric compares apex to step height.
|
|
26
|
+
*
|
|
27
|
+
* This module closes that gap. {@link solvePlatformerMotion} derives gravity, jump
|
|
28
|
+
* velocity and move speed from what a level actually asks the player to do, and
|
|
29
|
+
* {@link validatePlatformerMotion} reports when a level's tuning is inconsistent with
|
|
30
|
+
* its geometry -- both over-powered (floaty) and under-powered (unclearable).
|
|
31
|
+
*
|
|
32
|
+
* Pure and dependency-free.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Measure what a level asks the player to do.
|
|
36
|
+
*
|
|
37
|
+
* Consecutive platforms are taken in x order, which matches how a side-scrolling
|
|
38
|
+
* course is traversed. Gaps are measured edge to edge and rises top to top.
|
|
39
|
+
*/
|
|
40
|
+
export function measurePlatformerGeometry(platforms) {
|
|
41
|
+
if (platforms.length === 0) {
|
|
42
|
+
return { maxRise: 0, maxGap: 0, courseLength: 0, minPlatformWidth: 0, platformCount: 0 };
|
|
43
|
+
}
|
|
44
|
+
const ordered = [...platforms].sort((a, b) => a.x - b.x);
|
|
45
|
+
let maxRise = 0;
|
|
46
|
+
let maxGap = 0;
|
|
47
|
+
for (let index = 0; index < ordered.length - 1; index += 1) {
|
|
48
|
+
const from = ordered[index];
|
|
49
|
+
const to = ordered[index + 1];
|
|
50
|
+
const topFrom = from.y + (from.height ?? 0);
|
|
51
|
+
const topTo = to.y + (to.height ?? 0);
|
|
52
|
+
maxRise = Math.max(maxRise, topTo - topFrom);
|
|
53
|
+
maxGap = Math.max(maxGap, to.x - (from.x + from.width));
|
|
54
|
+
}
|
|
55
|
+
const start = Math.min(...ordered.map((platform) => platform.x));
|
|
56
|
+
const end = Math.max(...ordered.map((platform) => platform.x + platform.width));
|
|
57
|
+
return {
|
|
58
|
+
maxRise: round(maxRise),
|
|
59
|
+
maxGap: round(Math.max(0, maxGap)),
|
|
60
|
+
courseLength: round(end - start),
|
|
61
|
+
minPlatformWidth: round(Math.min(...ordered.map((platform) => platform.width))),
|
|
62
|
+
platformCount: ordered.length
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Derive platformer motion from a level's own geometry.
|
|
67
|
+
*
|
|
68
|
+
* The apex is sized to the tallest step the player must clear, not chosen freely, so a
|
|
69
|
+
* jump cannot overshoot the level by 3.5x. Gravity then follows from the apex and the
|
|
70
|
+
* chosen rise time, and jump velocity from gravity and rise time. Move speed is sized
|
|
71
|
+
* so the jump clears the widest gap and the course takes a chosen amount of time.
|
|
72
|
+
*/
|
|
73
|
+
export function solvePlatformerMotion(platforms, request = {}) {
|
|
74
|
+
const geometry = measurePlatformerGeometry(platforms);
|
|
75
|
+
const riseSeconds = clampPositive(request.riseSeconds ?? 0.3, 0.08, 1);
|
|
76
|
+
const apexHeadroom = clampPositive(request.apexHeadroom ?? 1.6, 1, 6);
|
|
77
|
+
const gapMargin = clampPositive(request.gapMargin ?? 1.45, 1, 4);
|
|
78
|
+
const minApex = Math.max(0.05, request.minApex ?? 0.4);
|
|
79
|
+
// Apex is the tallest step plus headroom, floored so a flat level still jumps.
|
|
80
|
+
const apex = Math.max(minApex, geometry.maxRise * apexHeadroom);
|
|
81
|
+
// Projectile motion: apex = v^2 / 2g and riseSeconds = v / g, so g = 2 * apex / t^2.
|
|
82
|
+
const gravityMagnitude = (2 * apex) / (riseSeconds * riseSeconds);
|
|
83
|
+
const jumpVelocity = gravityMagnitude * riseSeconds;
|
|
84
|
+
const airtime = 2 * riseSeconds;
|
|
85
|
+
/*
|
|
86
|
+
* Move speed has two requirements, and the larger wins.
|
|
87
|
+
*
|
|
88
|
+
* It must be fast enough that a full jump clears the widest gap with margin, and it
|
|
89
|
+
* should cross the course in roughly the intended session time. Taking the maximum
|
|
90
|
+
* means a level with a wide gap is never made unclearable by a slow target pace.
|
|
91
|
+
*/
|
|
92
|
+
const speedForGap = geometry.maxGap > 0 ? (geometry.maxGap * gapMargin) / airtime : 0;
|
|
93
|
+
const targetSessionSeconds = Math.max(1, request.targetSessionSeconds ?? 0);
|
|
94
|
+
const traversalFraction = clampPositive(request.traversalFraction ?? 0.45, 0.1, 1);
|
|
95
|
+
const speedForSession = targetSessionSeconds > 1 && geometry.courseLength > 0
|
|
96
|
+
? geometry.courseLength / (targetSessionSeconds * traversalFraction)
|
|
97
|
+
: 0;
|
|
98
|
+
const moveSpeed = Math.max(0.5, speedForGap, speedForSession);
|
|
99
|
+
const traversalSeconds = moveSpeed > 0 ? geometry.courseLength / moveSpeed : 0;
|
|
100
|
+
return {
|
|
101
|
+
kind: "aura-platformer-motion",
|
|
102
|
+
gravity: -round(gravityMagnitude),
|
|
103
|
+
jumpVelocity: round(jumpVelocity),
|
|
104
|
+
moveSpeed: round(moveSpeed),
|
|
105
|
+
apex: round(apex),
|
|
106
|
+
airtime: round(airtime),
|
|
107
|
+
jumpReach: round(moveSpeed * airtime),
|
|
108
|
+
// Coyote time and jump buffer are fractions of airtime rather than fixed
|
|
109
|
+
// milliseconds: a snappy jump needs a shorter grace window than a floaty one, and a
|
|
110
|
+
// fixed 110ms window is a large fraction of a 0.44s jump but a small one of 0.9s.
|
|
111
|
+
coyoteMs: Math.round(airtime * 1000 * 0.18),
|
|
112
|
+
jumpBufferMs: Math.round(airtime * 1000 * 0.22),
|
|
113
|
+
// Terminal velocity caps a long fall at roughly twice takeoff speed, which keeps a
|
|
114
|
+
// drop readable instead of becoming an instant teleport downward.
|
|
115
|
+
terminalVelocity: -round(jumpVelocity * 2),
|
|
116
|
+
geometry,
|
|
117
|
+
traversalSeconds: round(traversalSeconds),
|
|
118
|
+
estimatedSessionSeconds: round(traversalSeconds / traversalFraction)
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check that a level's motion tuning is consistent with its geometry.
|
|
123
|
+
*
|
|
124
|
+
* This is the check that was missing. A level can be perfectly solvable and still feel
|
|
125
|
+
* wrong: an over-powered jump clears every obstacle, so solvability passes, while the
|
|
126
|
+
* character visibly floats. Both directions are failures.
|
|
127
|
+
*/
|
|
128
|
+
export function validatePlatformerMotion(platforms, motion, limits = {}) {
|
|
129
|
+
const geometry = measurePlatformerGeometry(platforms);
|
|
130
|
+
const gravityMagnitude = Math.abs(motion.gravity);
|
|
131
|
+
const apex = gravityMagnitude > 0 ? (motion.jumpVelocity * motion.jumpVelocity) / (2 * gravityMagnitude) : 0;
|
|
132
|
+
const airtime = gravityMagnitude > 0 ? (2 * motion.jumpVelocity) / gravityMagnitude : 0;
|
|
133
|
+
const jumpReach = motion.moveSpeed * airtime;
|
|
134
|
+
const apexToRiseRatio = geometry.maxRise > 0 ? apex / geometry.maxRise : Number.POSITIVE_INFINITY;
|
|
135
|
+
const reachToGapRatio = geometry.maxGap > 0 ? jumpReach / geometry.maxGap : Number.POSITIVE_INFINITY;
|
|
136
|
+
const maxApexRatio = limits.maxApexToRiseRatio ?? 2.6;
|
|
137
|
+
const minApexRatio = limits.minApexToRiseRatio ?? 1.15;
|
|
138
|
+
const maxReachRatio = limits.maxReachToGapRatio ?? 3.2;
|
|
139
|
+
const minReachRatio = limits.minReachToGapRatio ?? 1.1;
|
|
140
|
+
const maxAirtime = limits.maxAirtimeSeconds ?? 0.95;
|
|
141
|
+
const checks = [
|
|
142
|
+
{
|
|
143
|
+
id: "jump-clears-tallest-step",
|
|
144
|
+
description: `jump apex must exceed the tallest step by at least ${minApexRatio}x`,
|
|
145
|
+
passes: !Number.isFinite(apexToRiseRatio) || apexToRiseRatio >= minApexRatio,
|
|
146
|
+
detail: `apex ${round(apex)} vs tallest step ${geometry.maxRise} (ratio ${roundRatio(apexToRiseRatio)})`
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: "jump-not-floaty",
|
|
150
|
+
description: `jump apex must not exceed the tallest step by more than ${maxApexRatio}x`,
|
|
151
|
+
// An infinite ratio means the level has no rises at all, where any apex is fine.
|
|
152
|
+
passes: !Number.isFinite(apexToRiseRatio) || apexToRiseRatio <= maxApexRatio,
|
|
153
|
+
detail: `apex ${round(apex)} vs tallest step ${geometry.maxRise} (ratio ${roundRatio(apexToRiseRatio)})`
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
id: "jump-clears-widest-gap",
|
|
157
|
+
description: `horizontal jump reach must exceed the widest gap by at least ${minReachRatio}x`,
|
|
158
|
+
passes: !Number.isFinite(reachToGapRatio) || reachToGapRatio >= minReachRatio,
|
|
159
|
+
detail: `reach ${round(jumpReach)} vs widest gap ${geometry.maxGap} (ratio ${roundRatio(reachToGapRatio)})`
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: "jump-reach-proportionate",
|
|
163
|
+
description: `horizontal jump reach must not exceed the widest gap by more than ${maxReachRatio}x`,
|
|
164
|
+
passes: !Number.isFinite(reachToGapRatio) || reachToGapRatio <= maxReachRatio,
|
|
165
|
+
detail: `reach ${round(jumpReach)} vs widest gap ${geometry.maxGap} (ratio ${roundRatio(reachToGapRatio)})`
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: "airtime-readable",
|
|
169
|
+
description: `total airtime must stay under ${maxAirtime}s so a jump reads as a jump`,
|
|
170
|
+
passes: airtime <= maxAirtime,
|
|
171
|
+
detail: `airtime ${round(airtime)}s`
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
id: "landing-precision-achievable",
|
|
175
|
+
description: "jump reach must not exceed the narrowest platform by so much that landing is a guess",
|
|
176
|
+
// A reach far larger than the target platform means the player cannot choose where
|
|
177
|
+
// to land, only whether to jump.
|
|
178
|
+
passes: geometry.minPlatformWidth <= 0 || jumpReach <= geometry.minPlatformWidth * 4,
|
|
179
|
+
detail: `reach ${round(jumpReach)} vs narrowest platform ${geometry.minPlatformWidth}`
|
|
180
|
+
}
|
|
181
|
+
];
|
|
182
|
+
return {
|
|
183
|
+
schema: "aura3d-platformer-motion-invariants/1.0",
|
|
184
|
+
geometry,
|
|
185
|
+
measured: {
|
|
186
|
+
apex: round(apex),
|
|
187
|
+
airtime: round(airtime),
|
|
188
|
+
jumpReach: round(jumpReach),
|
|
189
|
+
apexToRiseRatio: roundRatio(apexToRiseRatio),
|
|
190
|
+
reachToGapRatio: roundRatio(reachToGapRatio)
|
|
191
|
+
},
|
|
192
|
+
checks,
|
|
193
|
+
passes: checks.every((check) => check.passes)
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function clampPositive(value, min, max) {
|
|
197
|
+
if (!Number.isFinite(value))
|
|
198
|
+
return min;
|
|
199
|
+
return Math.min(max, Math.max(min, value));
|
|
200
|
+
}
|
|
201
|
+
function round(value) {
|
|
202
|
+
return Math.round(value * 1e4) / 1e4;
|
|
203
|
+
}
|
|
204
|
+
function roundRatio(value) {
|
|
205
|
+
return Number.isFinite(value) ? Math.round(value * 100) / 100 : Number.POSITIVE_INFINITY;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=PlatformerMotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlatformerMotion.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/PlatformerMotion.ts"],"names":[],"mappings":"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"}
|
|
@@ -156,4 +156,66 @@ export declare function groundedRenderedAssetPlacement(asset: SceneAssetLike, op
|
|
|
156
156
|
* center is given the asset is treated as origin-centered.
|
|
157
157
|
*/
|
|
158
158
|
export declare function boundsFromSize(size: Vec3, center?: Vec3): SceneBounds;
|
|
159
|
+
/**
|
|
160
|
+
* Derived subject facts the brief's WS4 list names that had no reusable derivation.
|
|
161
|
+
*
|
|
162
|
+
* ## Why these are here rather than in each route
|
|
163
|
+
*
|
|
164
|
+
* WS4 lists 15 values a reusable typed helper should derive so "route code does not know raw asset dimensions".
|
|
165
|
+
* Ten existed. Five did not, and each is a value a route would otherwise compute inline from bounds -- which is
|
|
166
|
+
* exactly how `CAR_SCENE_HEIGHT` came to be hardcoded to one asset's ratio and survive two hero swaps.
|
|
167
|
+
*
|
|
168
|
+
* All five are derived from a scaled `SceneBounds`, so a route states intent and reads back facts.
|
|
169
|
+
*/
|
|
170
|
+
export interface SubjectPlacementFacts {
|
|
171
|
+
/** World-space point where the subject's lowest geometry meets the floor. */
|
|
172
|
+
readonly groundContact: Vec3;
|
|
173
|
+
/** Centre of the subject's bounds after placement, i.e. what a camera should look at. */
|
|
174
|
+
readonly visualCenter: Vec3;
|
|
175
|
+
/**
|
|
176
|
+
* Volume-weighted centroid approximation.
|
|
177
|
+
*
|
|
178
|
+
* Deliberately an approximation from the bounding box, not a mesh integral: a route framing a vehicle wants
|
|
179
|
+
* "roughly where the mass sits" for camera pitch and lean, and computing a true centre of mass would need
|
|
180
|
+
* per-triangle volume the typed manifest does not carry. Named `approximation` so no caller mistakes it for one.
|
|
181
|
+
*/
|
|
182
|
+
readonly centerOfMassApproximation: Vec3;
|
|
183
|
+
/** Placed world bounds, for framing tests that must not clip the subject. */
|
|
184
|
+
readonly framingBounds: SceneBounds;
|
|
185
|
+
/**
|
|
186
|
+
* Forward axis, or `undefined` when the asset declares none.
|
|
187
|
+
*
|
|
188
|
+
* Never inferred. A symmetric body has no intrinsic front, and guessing produces a vehicle facing backwards --
|
|
189
|
+
* the same reason admission reports orientation as evidence rather than derivation.
|
|
190
|
+
*/
|
|
191
|
+
readonly forwardAxis: Vec3 | undefined;
|
|
192
|
+
/** Contact patch the subject's lower silhouette occupies, for wheel/foot readability checks. */
|
|
193
|
+
readonly contactRegion: {
|
|
194
|
+
readonly min: Vec3;
|
|
195
|
+
readonly max: Vec3;
|
|
196
|
+
readonly depth: number;
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
export interface SubjectPlacementRequest {
|
|
200
|
+
/** Rendered scale applied to the asset's raw bounds. */
|
|
201
|
+
readonly scale: number;
|
|
202
|
+
/** Floor position, defaulting to the origin. */
|
|
203
|
+
readonly x?: number | undefined;
|
|
204
|
+
readonly z?: number | undefined;
|
|
205
|
+
readonly floorY?: number | undefined;
|
|
206
|
+
/** Declared forward axis from manifest evidence. Omit when the asset declares none. */
|
|
207
|
+
readonly forwardAxis?: Vec3 | undefined;
|
|
208
|
+
/**
|
|
209
|
+
* Fraction of subject height treated as the contact region, for wheel or foot readability.
|
|
210
|
+
* Defaults to 0.3, matching the wheel-band fraction the vehicle visibility probe measures.
|
|
211
|
+
*/
|
|
212
|
+
readonly contactRegionFraction?: number | undefined;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Derive placement facts for a subject from its raw bounds and an intended scale.
|
|
216
|
+
*
|
|
217
|
+
* Pure: no renderer, no asset loading. A route passes bounds it already has typed access to and reads back the
|
|
218
|
+
* five WS4 values instead of computing them from dimensions it should not need to know.
|
|
219
|
+
*/
|
|
220
|
+
export declare function resolveSubjectPlacementFacts(bounds: SceneBounds, request: SubjectPlacementRequest): SubjectPlacementFacts;
|
|
159
221
|
//# sourceMappingURL=SceneGroundingUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneGroundingUtils.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SceneGroundingUtils.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,iGAAiG;IACjG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,mGAAmG;IACnG,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,0DAA0D;IAC1D,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,cAAc,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;KAChE,GAAG,SAAS,CAAC;CACf;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA6B,SAAQ,sBAAsB;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,mCAAmC,OAAO,CAAC;AAExD,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAExD;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAMpD;AAED,0DAA0D;AAC1D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAIhG;AAED,qFAAqF;AACrF,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAI5G;AAED;;;;;;;GAOG;AACH,wBAAgB,0CAA0C,CACxD,kBAAkB,EAAE,MAAM,EAC1B,sBAAsB,SAAsC,GAC3D,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,MAAM,EACpB,sBAAsB,SAAsC,GAC3D,MAAM,CAMR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,CAO3G;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,CAWlE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,wBAAwB,GAAG,sBAAsB,CAQvH;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,8BAA8B,GAAG,4BAA4B,CAkB3I;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAE,IAAgB,GAAG,WAAW,CAKhF;AAQD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC;IAC7B,yFAAyF;IACzF,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,yBAAyB,EAAE,IAAI,CAAC;IACzC,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,IAAI,GAAG,SAAS,CAAC;IACvC,gGAAgG;IAChG,QAAQ,CAAC,aAAa,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5F;AAED,MAAM,WAAW,uBAAuB;IACtC,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACxC;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrD;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,uBAAuB,GAC/B,qBAAqB,CAiCvB"}
|
|
@@ -187,4 +187,41 @@ function toVec3(value) {
|
|
|
187
187
|
const vec = [Number(value[0]), Number(value[1]), Number(value[2])];
|
|
188
188
|
return vec.every((component) => Number.isFinite(component)) ? vec : undefined;
|
|
189
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Derive placement facts for a subject from its raw bounds and an intended scale.
|
|
192
|
+
*
|
|
193
|
+
* Pure: no renderer, no asset loading. A route passes bounds it already has typed access to and reads back the
|
|
194
|
+
* five WS4 values instead of computing them from dimensions it should not need to know.
|
|
195
|
+
*/
|
|
196
|
+
export function resolveSubjectPlacementFacts(bounds, request) {
|
|
197
|
+
const scale = Number.isFinite(request.scale) && request.scale > 0 ? request.scale : 1;
|
|
198
|
+
const x = request.x ?? 0;
|
|
199
|
+
const z = request.z ?? 0;
|
|
200
|
+
const floorY = request.floorY ?? 0;
|
|
201
|
+
const size = boundsSize(bounds).map((value) => value * scale);
|
|
202
|
+
// Scaled bounds, translated so the lowest point rests on the floor at (x, z).
|
|
203
|
+
const min = [x - size[0] / 2, floorY, z - size[2] / 2];
|
|
204
|
+
const max = [x + size[0] / 2, floorY + size[1], z + size[2] / 2];
|
|
205
|
+
const fraction = Math.min(1, Math.max(0.01, request.contactRegionFraction ?? 0.3));
|
|
206
|
+
const contactDepth = size[1] * fraction;
|
|
207
|
+
return {
|
|
208
|
+
groundContact: [x, floorY, z],
|
|
209
|
+
visualCenter: [x, floorY + size[1] / 2, z],
|
|
210
|
+
/*
|
|
211
|
+
* Biased below the geometric centre.
|
|
212
|
+
*
|
|
213
|
+
* A vehicle or character carries most of its mass low -- drivetrain and floorpan, legs and torso -- so the
|
|
214
|
+
* bounding-box centre sits above the real centroid. 0.42 of height is a standard approximation for wheeled
|
|
215
|
+
* subjects and keeps camera pitch from looking down on a subject that should read as planted.
|
|
216
|
+
*/
|
|
217
|
+
centerOfMassApproximation: [x, floorY + size[1] * 0.42, z],
|
|
218
|
+
framingBounds: { min, max },
|
|
219
|
+
forwardAxis: request.forwardAxis,
|
|
220
|
+
contactRegion: {
|
|
221
|
+
min,
|
|
222
|
+
max: [max[0], floorY + contactDepth, max[2]],
|
|
223
|
+
depth: contactDepth
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
}
|
|
190
227
|
//# sourceMappingURL=SceneGroundingUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SceneGroundingUtils.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SceneGroundingUtils.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneGroundingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reusable scene queries: raycasts, shape casts and ground probes.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* The physics audit (`tests/reports/aura3d-physics-audit.json`) classified raycasts, shape
|
|
7
|
+
* casts, penetration resolution, friction, restitution, constraints and continuous
|
|
8
|
+
* collision detection as **unused**: implemented in `@aura3d/physics`, covered by its own
|
|
9
|
+
* suites, and unreachable from the public agent API. A route needing to answer "what is
|
|
10
|
+
* under this point" therefore had two options -- reach into a package's internals, or write
|
|
11
|
+
* the query by hand. Both are the same defect class as the hardcoded contact planes this
|
|
12
|
+
* remediation removed.
|
|
13
|
+
*
|
|
14
|
+
* `PhysicsWorld` already implements `raycast`, `raycastAll`, `sphereCast` and
|
|
15
|
+
* `sphereCastAll`. This module is the public surface over them, plus the pure
|
|
16
|
+
* scene-geometry queries a route usually actually wants: a downward ground probe, and a
|
|
17
|
+
* query against declarative scene nodes rather than a constructed physics world.
|
|
18
|
+
*
|
|
19
|
+
* The pure paths are dependency-free and unit-testable; the physics-backed path adapts a
|
|
20
|
+
* `PhysicsWorld` when a route has one.
|
|
21
|
+
*/
|
|
22
|
+
import type { AuraSceneNode, AuraVec3 } from "./index.js";
|
|
23
|
+
import { type PlacedBounds } from "./SpatialAnchoring.js";
|
|
24
|
+
export interface SceneRay {
|
|
25
|
+
readonly origin: AuraVec3;
|
|
26
|
+
/** Direction; normalized internally, so a caller may pass any non-zero vector. */
|
|
27
|
+
readonly direction: AuraVec3;
|
|
28
|
+
readonly maxDistance?: number | undefined;
|
|
29
|
+
}
|
|
30
|
+
export interface SceneQueryHit {
|
|
31
|
+
/** Name of the node that was hit, when the target carries one. */
|
|
32
|
+
readonly nodeName: string | undefined;
|
|
33
|
+
readonly point: AuraVec3;
|
|
34
|
+
readonly normal: AuraVec3;
|
|
35
|
+
readonly distance: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Axis-aligned box a query can test against.
|
|
39
|
+
*
|
|
40
|
+
* Scene nodes are reduced to these, which is exact for boxes and planes and a conservative
|
|
41
|
+
* bound for spheres, cylinders and models. Stated rather than implied: a route needing
|
|
42
|
+
* exact mesh intersection must use a physics world with real colliders.
|
|
43
|
+
*/
|
|
44
|
+
export interface SceneQueryTarget {
|
|
45
|
+
readonly nodeName: string | undefined;
|
|
46
|
+
readonly bounds: PlacedBounds;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Reduce declarative scene nodes to query targets.
|
|
50
|
+
*
|
|
51
|
+
* Only nodes with a resolvable position and scale participate. A model's bounds are its
|
|
52
|
+
* node scale, which is a conservative approximation: the caller is told so by
|
|
53
|
+
* {@link SceneQueryTarget}'s documentation rather than discovering it from a wrong result.
|
|
54
|
+
*/
|
|
55
|
+
export declare function sceneQueryTargets(nodes: readonly AuraSceneNode[]): readonly SceneQueryTarget[];
|
|
56
|
+
/**
|
|
57
|
+
* Cast a ray against query targets, returning the nearest hit.
|
|
58
|
+
*
|
|
59
|
+
* Slab-method AABB intersection: exact for axis-aligned boxes and correct for the
|
|
60
|
+
* conservative bounds of other node kinds.
|
|
61
|
+
*/
|
|
62
|
+
export declare function raycastSceneTargets(targets: readonly SceneQueryTarget[], ray: SceneRay): SceneQueryHit | undefined;
|
|
63
|
+
/** Every hit along a ray, nearest first. */
|
|
64
|
+
export declare function raycastSceneTargetsAll(targets: readonly SceneQueryTarget[], ray: SceneRay): readonly SceneQueryHit[];
|
|
65
|
+
/**
|
|
66
|
+
* Downward ground probe.
|
|
67
|
+
*
|
|
68
|
+
* The query a route asks most often, and the one that was previously answered by a frozen
|
|
69
|
+
* constant. Returns the surface height under a point, or `undefined` when nothing is below
|
|
70
|
+
* it -- which is a meaningful answer, not a reason to substitute zero.
|
|
71
|
+
*/
|
|
72
|
+
export declare function groundProbe(targets: readonly SceneQueryTarget[], x: number, z: number, options?: {
|
|
73
|
+
readonly fromHeight?: number | undefined;
|
|
74
|
+
readonly maxDistance?: number | undefined;
|
|
75
|
+
}): {
|
|
76
|
+
readonly height: number;
|
|
77
|
+
readonly normal: AuraVec3;
|
|
78
|
+
readonly nodeName: string | undefined;
|
|
79
|
+
} | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Sphere cast against query targets.
|
|
82
|
+
*
|
|
83
|
+
* Implemented by inflating each target's bounds by the sphere radius, which is the standard
|
|
84
|
+
* conservative reduction of a sphere sweep to a ray test. Corners are therefore treated as
|
|
85
|
+
* rounded by radius rather than exactly; that over-reports contact slightly near an edge and
|
|
86
|
+
* never under-reports, which is the safe direction for a clearance query.
|
|
87
|
+
*/
|
|
88
|
+
export declare function sphereCastSceneTargets(targets: readonly SceneQueryTarget[], ray: SceneRay, radius: number): SceneQueryHit | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Structural shape of the physics world's query surface.
|
|
91
|
+
*
|
|
92
|
+
* Structural rather than a concrete import so this module does not force `@aura3d/physics`
|
|
93
|
+
* into every consumer's graph, and so a test can supply a fake.
|
|
94
|
+
*/
|
|
95
|
+
export interface PhysicsQueryWorld {
|
|
96
|
+
raycast(origin: AuraVec3, direction: AuraVec3, options?: {
|
|
97
|
+
readonly maxDistance?: number;
|
|
98
|
+
readonly mask?: number;
|
|
99
|
+
}): {
|
|
100
|
+
readonly point: readonly [number, number, number];
|
|
101
|
+
readonly normal: readonly [number, number, number];
|
|
102
|
+
readonly distance: number;
|
|
103
|
+
readonly colliderId: number;
|
|
104
|
+
readonly bodyId: number;
|
|
105
|
+
} | undefined;
|
|
106
|
+
sphereCast?(origin: AuraVec3, radius: number, direction: AuraVec3, options?: {
|
|
107
|
+
readonly maxDistance?: number;
|
|
108
|
+
}): {
|
|
109
|
+
readonly point: readonly [number, number, number];
|
|
110
|
+
readonly normal: readonly [number, number, number];
|
|
111
|
+
readonly distance: number;
|
|
112
|
+
} | undefined;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Public raycast against a physics world.
|
|
116
|
+
*
|
|
117
|
+
* The adapter that makes `PhysicsWorld.raycast` reachable without a route importing
|
|
118
|
+
* `@aura3d/physics` directly. Returns the same {@link SceneQueryHit} shape as the pure
|
|
119
|
+
* paths, so a route can move between them without changing its call sites.
|
|
120
|
+
*/
|
|
121
|
+
export declare function raycastPhysicsWorld(world: PhysicsQueryWorld, ray: SceneRay): SceneQueryHit | undefined;
|
|
122
|
+
/** Public sphere cast against a physics world, when the world supports one. */
|
|
123
|
+
export declare function sphereCastPhysicsWorld(world: PhysicsQueryWorld, ray: SceneRay, radius: number): SceneQueryHit | undefined;
|
|
124
|
+
//# sourceMappingURL=SceneQueries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SceneQueries.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneQueries.ts"],"names":[],"mappings":"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"}
|