@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.
Files changed (513) hide show
  1. package/README.md +95 -29
  2. package/dist/animation/Retargeting.d.ts +12 -0
  3. package/dist/animation/Retargeting.d.ts.map +1 -0
  4. package/dist/animation/Retargeting.js +19 -0
  5. package/dist/animation/Retargeting.js.map +1 -0
  6. package/dist/assets/GLTFLoader.d.ts +4 -0
  7. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  8. package/dist/assets/GLTFLoader.js +39 -4
  9. package/dist/assets/GLTFLoader.js.map +1 -1
  10. package/dist/assets/GLTFRenderResources.d.ts +16 -0
  11. package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
  12. package/dist/assets/GLTFRenderResources.js +42 -2
  13. package/dist/assets/GLTFRenderResources.js.map +1 -1
  14. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts +6 -0
  15. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -1
  16. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js +2 -1
  17. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -1
  18. package/dist/assets/index.d.ts +0 -1
  19. package/dist/assets/index.d.ts.map +1 -1
  20. package/dist/assets/index.js +0 -1
  21. package/dist/assets/index.js.map +1 -1
  22. package/dist/assets/loaders/index.d.ts +0 -1
  23. package/dist/assets/loaders/index.d.ts.map +1 -1
  24. package/dist/assets/loaders/index.js +0 -1
  25. package/dist/assets/loaders/index.js.map +1 -1
  26. package/dist/aura3d-cli/asset-intent.d.ts +148 -0
  27. package/dist/aura3d-cli/asset-intent.d.ts.map +1 -0
  28. package/dist/aura3d-cli/asset-intent.js +145 -0
  29. package/dist/aura3d-cli/asset-intent.js.map +1 -0
  30. package/dist/aura3d-cli/asset-role-admission.d.ts +174 -0
  31. package/dist/aura3d-cli/asset-role-admission.d.ts.map +1 -0
  32. package/dist/aura3d-cli/asset-role-admission.js +381 -0
  33. package/dist/aura3d-cli/asset-role-admission.js.map +1 -0
  34. package/dist/aura3d-cli/asset-screening-effects.d.ts +95 -0
  35. package/dist/aura3d-cli/asset-screening-effects.d.ts.map +1 -0
  36. package/dist/aura3d-cli/asset-screening-effects.js +321 -0
  37. package/dist/aura3d-cli/asset-screening-effects.js.map +1 -0
  38. package/dist/aura3d-cli/asset-screening-pipeline.d.ts +132 -0
  39. package/dist/aura3d-cli/asset-screening-pipeline.d.ts.map +1 -0
  40. package/dist/aura3d-cli/asset-screening-pipeline.js +277 -0
  41. package/dist/aura3d-cli/asset-screening-pipeline.js.map +1 -0
  42. package/dist/aura3d-cli/cartoon-asset-profiles.d.ts +15 -0
  43. package/dist/aura3d-cli/cartoon-asset-profiles.d.ts.map +1 -0
  44. package/dist/aura3d-cli/cartoon-asset-profiles.js +46 -0
  45. package/dist/aura3d-cli/cartoon-asset-profiles.js.map +1 -0
  46. package/dist/aura3d-cli/cli-help.js +1 -1
  47. package/dist/aura3d-cli/cli.js +16 -2
  48. package/dist/aura3d-cli/cli.js.map +1 -1
  49. package/dist/aura3d-cli/index.d.ts +8 -0
  50. package/dist/aura3d-cli/index.d.ts.map +1 -1
  51. package/dist/aura3d-cli/index.js +390 -17
  52. package/dist/aura3d-cli/index.js.map +1 -1
  53. package/dist/aura3d-cli/pull-bridge/search.d.ts +4 -0
  54. package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -1
  55. package/dist/aura3d-cli/pull-bridge/search.js +22 -0
  56. package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
  57. package/dist/aura3d-cli/pull-bridge.d.ts +20 -5
  58. package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
  59. package/dist/aura3d-cli/pull-bridge.js +38 -1
  60. package/dist/aura3d-cli/pull-bridge.js.map +1 -1
  61. package/dist/controls/ControlState.d.ts +1 -1
  62. package/dist/controls/ControlState.d.ts.map +1 -1
  63. package/dist/controls/DragControls.d.ts +21 -1
  64. package/dist/controls/DragControls.d.ts.map +1 -1
  65. package/dist/controls/DragControls.js +24 -2
  66. package/dist/controls/DragControls.js.map +1 -1
  67. package/dist/controls/FirstPersonControls.d.ts +10 -1
  68. package/dist/controls/FirstPersonControls.d.ts.map +1 -1
  69. package/dist/controls/FirstPersonControls.js +18 -2
  70. package/dist/controls/FirstPersonControls.js.map +1 -1
  71. package/dist/controls/FlyControls.d.ts +42 -0
  72. package/dist/controls/FlyControls.d.ts.map +1 -1
  73. package/dist/controls/FlyControls.js +106 -3
  74. package/dist/controls/FlyControls.js.map +1 -1
  75. package/dist/controls/MapControls.d.ts +13 -0
  76. package/dist/controls/MapControls.d.ts.map +1 -1
  77. package/dist/controls/MapControls.js +40 -2
  78. package/dist/controls/MapControls.js.map +1 -1
  79. package/dist/controls/OrbitControls.d.ts +54 -0
  80. package/dist/controls/OrbitControls.d.ts.map +1 -1
  81. package/dist/controls/OrbitControls.js +133 -0
  82. package/dist/controls/OrbitControls.js.map +1 -1
  83. package/dist/controls/PointerLockControls.d.ts +12 -5
  84. package/dist/controls/PointerLockControls.d.ts.map +1 -1
  85. package/dist/controls/PointerLockControls.js +30 -11
  86. package/dist/controls/PointerLockControls.js.map +1 -1
  87. package/dist/controls/SelectionManager.d.ts +22 -1
  88. package/dist/controls/SelectionManager.d.ts.map +1 -1
  89. package/dist/controls/SelectionManager.js +64 -6
  90. package/dist/controls/SelectionManager.js.map +1 -1
  91. package/dist/controls/TransformControls.d.ts +135 -1
  92. package/dist/controls/TransformControls.d.ts.map +1 -1
  93. package/dist/controls/TransformControls.js +534 -10
  94. package/dist/controls/TransformControls.js.map +1 -1
  95. package/dist/controls/index.d.ts +7 -2
  96. package/dist/controls/index.d.ts.map +1 -1
  97. package/dist/controls/index.js +1 -1
  98. package/dist/controls/index.js.map +1 -1
  99. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +2 -0
  100. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -1
  101. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +769 -42
  102. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -1
  103. package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -1
  104. package/dist/create-aura3d/showcase-spec-game-template-evidence.js +22 -2
  105. package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -1
  106. package/dist/create-aura3d/showcase-spec-replacement-candidates.js +26 -0
  107. package/dist/create-aura3d/showcase-spec-replacement-candidates.js.map +1 -1
  108. package/dist/ecs/components/MeshComponent.d.ts +5 -2
  109. package/dist/ecs/components/MeshComponent.d.ts.map +1 -1
  110. package/dist/ecs/components/MeshComponent.js.map +1 -1
  111. package/dist/editor-runtime/CartoonSceneEditor.d.ts +111 -0
  112. package/dist/editor-runtime/CartoonSceneEditor.d.ts.map +1 -0
  113. package/dist/editor-runtime/CartoonSceneEditor.js +285 -0
  114. package/dist/editor-runtime/CartoonSceneEditor.js.map +1 -0
  115. package/dist/editor-runtime/InteractiveTransformGizmo.d.ts +142 -0
  116. package/dist/editor-runtime/InteractiveTransformGizmo.d.ts.map +1 -0
  117. package/dist/editor-runtime/InteractiveTransformGizmo.js +468 -0
  118. package/dist/editor-runtime/InteractiveTransformGizmo.js.map +1 -0
  119. package/dist/editor-runtime/index.d.ts +2 -0
  120. package/dist/editor-runtime/index.d.ts.map +1 -1
  121. package/dist/editor-runtime/index.js +1 -0
  122. package/dist/editor-runtime/index.js.map +1 -1
  123. package/dist/engine/agent-api/ApplicationKits.d.ts +307 -0
  124. package/dist/engine/agent-api/ApplicationKits.d.ts.map +1 -0
  125. package/dist/engine/agent-api/ApplicationKits.js +650 -0
  126. package/dist/engine/agent-api/ApplicationKits.js.map +1 -0
  127. package/dist/engine/agent-api/CartoonAssetManifest.d.ts +50 -0
  128. package/dist/engine/agent-api/CartoonAssetManifest.d.ts.map +1 -0
  129. package/dist/engine/agent-api/CartoonAssetManifest.js +65 -0
  130. package/dist/engine/agent-api/CartoonAssetManifest.js.map +1 -0
  131. package/dist/engine/agent-api/CartoonDirector.d.ts +120 -0
  132. package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
  133. package/dist/engine/agent-api/CartoonDirector.js +432 -0
  134. package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
  135. package/dist/engine/agent-api/CartoonEpisodePackage.d.ts +51 -0
  136. package/dist/engine/agent-api/CartoonEpisodePackage.d.ts.map +1 -0
  137. package/dist/engine/agent-api/CartoonEpisodePackage.js +79 -0
  138. package/dist/engine/agent-api/CartoonEpisodePackage.js.map +1 -0
  139. package/dist/engine/agent-api/CartoonMotionQuality.d.ts +83 -0
  140. package/dist/engine/agent-api/CartoonMotionQuality.d.ts.map +1 -0
  141. package/dist/engine/agent-api/CartoonMotionQuality.js +128 -0
  142. package/dist/engine/agent-api/CartoonMotionQuality.js.map +1 -0
  143. package/dist/engine/agent-api/CartoonPerformance.d.ts +150 -0
  144. package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
  145. package/dist/engine/agent-api/CartoonPerformance.js +345 -0
  146. package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
  147. package/dist/engine/agent-api/CartoonRenderQueue.d.ts +143 -0
  148. package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
  149. package/dist/engine/agent-api/CartoonRenderQueue.js +410 -0
  150. package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
  151. package/dist/engine/agent-api/CartoonRouteProof.d.ts +112 -0
  152. package/dist/engine/agent-api/CartoonRouteProof.d.ts.map +1 -0
  153. package/dist/engine/agent-api/CartoonRouteProof.js +127 -0
  154. package/dist/engine/agent-api/CartoonRouteProof.js.map +1 -0
  155. package/dist/engine/agent-api/CombatFrameData.d.ts +210 -0
  156. package/dist/engine/agent-api/CombatFrameData.d.ts.map +1 -0
  157. package/dist/engine/agent-api/CombatFrameData.js +324 -0
  158. package/dist/engine/agent-api/CombatFrameData.js.map +1 -0
  159. package/dist/engine/agent-api/FocusSelection.d.ts +186 -0
  160. package/dist/engine/agent-api/FocusSelection.d.ts.map +1 -0
  161. package/dist/engine/agent-api/FocusSelection.js +436 -0
  162. package/dist/engine/agent-api/FocusSelection.js.map +1 -0
  163. package/dist/engine/agent-api/GameEvidence.d.ts +1 -0
  164. package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -1
  165. package/dist/engine/agent-api/GameEvidence.js +1 -0
  166. package/dist/engine/agent-api/GameEvidence.js.map +1 -1
  167. package/dist/engine/agent-api/GameGenreKits.d.ts +43 -1
  168. package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -1
  169. package/dist/engine/agent-api/GameGenreKits.js +79 -13
  170. package/dist/engine/agent-api/GameGenreKits.js.map +1 -1
  171. package/dist/engine/agent-api/GameRuntime.d.ts +1 -0
  172. package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
  173. package/dist/engine/agent-api/GameRuntime.js +1 -0
  174. package/dist/engine/agent-api/GameRuntime.js.map +1 -1
  175. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +22 -0
  176. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -1
  177. package/dist/engine/agent-api/GameSceneGeometryBindings.js +9 -0
  178. package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -1
  179. package/dist/engine/agent-api/LayeredSceneComposition.d.ts +295 -0
  180. package/dist/engine/agent-api/LayeredSceneComposition.d.ts.map +1 -0
  181. package/dist/engine/agent-api/LayeredSceneComposition.js +387 -0
  182. package/dist/engine/agent-api/LayeredSceneComposition.js.map +1 -0
  183. package/dist/engine/agent-api/PlatformerMotion.d.ts +177 -0
  184. package/dist/engine/agent-api/PlatformerMotion.d.ts.map +1 -0
  185. package/dist/engine/agent-api/PlatformerMotion.js +207 -0
  186. package/dist/engine/agent-api/PlatformerMotion.js.map +1 -0
  187. package/dist/engine/agent-api/SceneGroundingUtils.d.ts +62 -0
  188. package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -1
  189. package/dist/engine/agent-api/SceneGroundingUtils.js +37 -0
  190. package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -1
  191. package/dist/engine/agent-api/SceneQueries.d.ts +124 -0
  192. package/dist/engine/agent-api/SceneQueries.d.ts.map +1 -0
  193. package/dist/engine/agent-api/SceneQueries.js +221 -0
  194. package/dist/engine/agent-api/SceneQueries.js.map +1 -0
  195. package/dist/engine/agent-api/SpatialAnchoring.d.ts +232 -0
  196. package/dist/engine/agent-api/SpatialAnchoring.d.ts.map +1 -0
  197. package/dist/engine/agent-api/SpatialAnchoring.js +348 -0
  198. package/dist/engine/agent-api/SpatialAnchoring.js.map +1 -0
  199. package/dist/engine/agent-api/SubjectFramingUtils.d.ts +127 -0
  200. package/dist/engine/agent-api/SubjectFramingUtils.d.ts.map +1 -0
  201. package/dist/engine/agent-api/SubjectFramingUtils.js +126 -0
  202. package/dist/engine/agent-api/SubjectFramingUtils.js.map +1 -0
  203. package/dist/engine/agent-api/TouchControlBinding.d.ts +81 -0
  204. package/dist/engine/agent-api/TouchControlBinding.d.ts.map +1 -0
  205. package/dist/engine/agent-api/TouchControlBinding.js +116 -0
  206. package/dist/engine/agent-api/TouchControlBinding.js.map +1 -0
  207. package/dist/engine/agent-api/VehicleChassis.d.ts +192 -0
  208. package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -0
  209. package/dist/engine/agent-api/VehicleChassis.js +322 -0
  210. package/dist/engine/agent-api/VehicleChassis.js.map +1 -0
  211. package/dist/engine/agent-api/VehicleDriverAi.d.ts +123 -0
  212. package/dist/engine/agent-api/VehicleDriverAi.d.ts.map +1 -0
  213. package/dist/engine/agent-api/VehicleDriverAi.js +217 -0
  214. package/dist/engine/agent-api/VehicleDriverAi.js.map +1 -0
  215. package/dist/engine/agent-api/WorldLabelRenderer.d.ts +146 -0
  216. package/dist/engine/agent-api/WorldLabelRenderer.d.ts.map +1 -0
  217. package/dist/engine/agent-api/WorldLabelRenderer.js +331 -0
  218. package/dist/engine/agent-api/WorldLabelRenderer.js.map +1 -0
  219. package/dist/engine/agent-api/index.d.ts +69 -0
  220. package/dist/engine/agent-api/index.d.ts.map +1 -1
  221. package/dist/engine/agent-api/index.js +633 -75
  222. package/dist/engine/agent-api/index.js.map +1 -1
  223. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  224. package/dist/engine/production-runtime/GameRenderPreset.d.ts +32 -0
  225. package/dist/engine/production-runtime/GameRenderPreset.d.ts.map +1 -1
  226. package/dist/engine/production-runtime/GameRenderPreset.js +37 -2
  227. package/dist/engine/production-runtime/GameRenderPreset.js.map +1 -1
  228. package/dist/engine/production-runtime/TypedGLBActor.d.ts +8 -0
  229. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  230. package/dist/engine/production-runtime/TypedGLBActor.js +2 -1
  231. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  232. package/dist/input/controls/PointerLockControls.d.ts +1 -1
  233. package/dist/input/controls/PointerLockControls.d.ts.map +1 -1
  234. package/dist/input/controls/PointerLockControls.js +12 -0
  235. package/dist/input/controls/PointerLockControls.js.map +1 -1
  236. package/dist/physics/Collider.d.ts +1 -1
  237. package/dist/physics/Collider.d.ts.map +1 -1
  238. package/dist/physics/Collider.js +2 -2
  239. package/dist/physics/Collider.js.map +1 -1
  240. package/dist/physics/CollisionEvents.d.ts +1 -0
  241. package/dist/physics/CollisionEvents.d.ts.map +1 -1
  242. package/dist/physics/CollisionEvents.js.map +1 -1
  243. package/dist/physics/NarrowPhase.d.ts +11 -0
  244. package/dist/physics/NarrowPhase.d.ts.map +1 -0
  245. package/dist/physics/NarrowPhase.js +565 -0
  246. package/dist/physics/NarrowPhase.js.map +1 -0
  247. package/dist/physics/PhysicsDebugDraw.js +19 -1
  248. package/dist/physics/PhysicsDebugDraw.js.map +1 -1
  249. package/dist/physics/PhysicsWorld.d.ts +43 -0
  250. package/dist/physics/PhysicsWorld.d.ts.map +1 -1
  251. package/dist/physics/PhysicsWorld.js +305 -30
  252. package/dist/physics/PhysicsWorld.js.map +1 -1
  253. package/dist/physics/RigidBody.d.ts +8 -1
  254. package/dist/physics/RigidBody.d.ts.map +1 -1
  255. package/dist/physics/RigidBody.js +32 -5
  256. package/dist/physics/RigidBody.js.map +1 -1
  257. package/dist/physics/Shape.d.ts +16 -2
  258. package/dist/physics/Shape.d.ts.map +1 -1
  259. package/dist/physics/Shape.js +93 -31
  260. package/dist/physics/Shape.js.map +1 -1
  261. package/dist/physics/TimeOfImpact.d.ts +15 -0
  262. package/dist/physics/TimeOfImpact.d.ts.map +1 -0
  263. package/dist/physics/TimeOfImpact.js +81 -0
  264. package/dist/physics/TimeOfImpact.js.map +1 -0
  265. package/dist/physics/index.d.ts +2 -0
  266. package/dist/physics/index.d.ts.map +1 -1
  267. package/dist/physics/index.js +2 -0
  268. package/dist/physics/index.js.map +1 -1
  269. package/dist/rendering/CascadedShadowMaps.d.ts +9 -1
  270. package/dist/rendering/CascadedShadowMaps.d.ts.map +1 -1
  271. package/dist/rendering/CascadedShadowMaps.js +68 -0
  272. package/dist/rendering/CascadedShadowMaps.js.map +1 -1
  273. package/dist/rendering/ClusteredForwardLighting.d.ts +28 -0
  274. package/dist/rendering/ClusteredForwardLighting.d.ts.map +1 -0
  275. package/dist/rendering/ClusteredForwardLighting.js +156 -0
  276. package/dist/rendering/ClusteredForwardLighting.js.map +1 -0
  277. package/dist/rendering/DepthPass.d.ts +14 -1
  278. package/dist/rendering/DepthPass.d.ts.map +1 -1
  279. package/dist/rendering/DepthPass.js +19 -4
  280. package/dist/rendering/DepthPass.js.map +1 -1
  281. package/dist/rendering/EnvironmentMapResources.d.ts +59 -1
  282. package/dist/rendering/EnvironmentMapResources.d.ts.map +1 -1
  283. package/dist/rendering/EnvironmentMapResources.js +140 -100
  284. package/dist/rendering/EnvironmentMapResources.js.map +1 -1
  285. package/dist/rendering/EnvironmentPlatform.d.ts +3 -2
  286. package/dist/rendering/EnvironmentPlatform.d.ts.map +1 -1
  287. package/dist/rendering/EnvironmentPlatform.js +99 -44
  288. package/dist/rendering/EnvironmentPlatform.js.map +1 -1
  289. package/dist/rendering/ForwardPass.d.ts +37 -0
  290. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  291. package/dist/rendering/ForwardPass.js +234 -7
  292. package/dist/rendering/ForwardPass.js.map +1 -1
  293. package/dist/rendering/Geometry.d.ts +19 -0
  294. package/dist/rendering/Geometry.d.ts.map +1 -1
  295. package/dist/rendering/Geometry.js +64 -0
  296. package/dist/rendering/Geometry.js.map +1 -1
  297. package/dist/rendering/IBL.d.ts.map +1 -1
  298. package/dist/rendering/IBL.js +0 -1
  299. package/dist/rendering/IBL.js.map +1 -1
  300. package/dist/rendering/LightCollector.d.ts +5 -1
  301. package/dist/rendering/LightCollector.d.ts.map +1 -1
  302. package/dist/rendering/LightCollector.js +16 -3
  303. package/dist/rendering/LightCollector.js.map +1 -1
  304. package/dist/rendering/LightUniforms.d.ts +26 -1
  305. package/dist/rendering/LightUniforms.d.ts.map +1 -1
  306. package/dist/rendering/LightUniforms.js +140 -8
  307. package/dist/rendering/LightUniforms.js.map +1 -1
  308. package/dist/rendering/LightingRig.d.ts +77 -0
  309. package/dist/rendering/LightingRig.d.ts.map +1 -1
  310. package/dist/rendering/LightingRig.js +100 -11
  311. package/dist/rendering/LightingRig.js.map +1 -1
  312. package/dist/rendering/MeshConsolidation.d.ts +63 -0
  313. package/dist/rendering/MeshConsolidation.d.ts.map +1 -0
  314. package/dist/rendering/MeshConsolidation.js +251 -0
  315. package/dist/rendering/MeshConsolidation.js.map +1 -0
  316. package/dist/rendering/PMREM.d.ts +13 -1
  317. package/dist/rendering/PMREM.d.ts.map +1 -1
  318. package/dist/rendering/PMREM.js +18 -4
  319. package/dist/rendering/PMREM.js.map +1 -1
  320. package/dist/rendering/PostProcessPass.d.ts +24 -2
  321. package/dist/rendering/PostProcessPass.d.ts.map +1 -1
  322. package/dist/rendering/PostProcessPass.js +136 -18
  323. package/dist/rendering/PostProcessPass.js.map +1 -1
  324. package/dist/rendering/PrimitiveSubmissionAudit.d.ts +195 -0
  325. package/dist/rendering/PrimitiveSubmissionAudit.d.ts.map +1 -0
  326. package/dist/rendering/PrimitiveSubmissionAudit.js +280 -0
  327. package/dist/rendering/PrimitiveSubmissionAudit.js.map +1 -0
  328. package/dist/rendering/ProductTurntableFixtures.d.ts.map +1 -1
  329. package/dist/rendering/ProductTurntableFixtures.js +93 -13
  330. package/dist/rendering/ProductTurntableFixtures.js.map +1 -1
  331. package/dist/rendering/ReflectionProbe.d.ts +59 -0
  332. package/dist/rendering/ReflectionProbe.d.ts.map +1 -1
  333. package/dist/rendering/ReflectionProbe.js +224 -0
  334. package/dist/rendering/ReflectionProbe.js.map +1 -1
  335. package/dist/rendering/ReflectionSurfaces.d.ts +4 -2
  336. package/dist/rendering/ReflectionSurfaces.d.ts.map +1 -1
  337. package/dist/rendering/ReflectionSurfaces.js +13 -8
  338. package/dist/rendering/ReflectionSurfaces.js.map +1 -1
  339. package/dist/rendering/RenderBackend.d.ts +1 -1
  340. package/dist/rendering/RenderBackend.d.ts.map +1 -1
  341. package/dist/rendering/RenderBackend.js +5 -1
  342. package/dist/rendering/RenderBackend.js.map +1 -1
  343. package/dist/rendering/RenderDevice.d.ts +13 -2
  344. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  345. package/dist/rendering/RenderDevice.js +5 -2
  346. package/dist/rendering/RenderDevice.js.map +1 -1
  347. package/dist/rendering/Renderer.d.ts +41 -1
  348. package/dist/rendering/Renderer.d.ts.map +1 -1
  349. package/dist/rendering/Renderer.js +406 -61
  350. package/dist/rendering/Renderer.js.map +1 -1
  351. package/dist/rendering/RendererPostprocessPlan.d.ts +10 -3
  352. package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
  353. package/dist/rendering/RendererPostprocessPlan.js +25 -5
  354. package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
  355. package/dist/rendering/RendererVisualPipelineReport.d.ts +3 -2
  356. package/dist/rendering/RendererVisualPipelineReport.d.ts.map +1 -1
  357. package/dist/rendering/RendererVisualPipelineReport.js +2 -0
  358. package/dist/rendering/RendererVisualPipelineReport.js.map +1 -1
  359. package/dist/rendering/ScreenSpaceLineMaterial.d.ts +34 -0
  360. package/dist/rendering/ScreenSpaceLineMaterial.d.ts.map +1 -0
  361. package/dist/rendering/ScreenSpaceLineMaterial.js +93 -0
  362. package/dist/rendering/ScreenSpaceLineMaterial.js.map +1 -0
  363. package/dist/rendering/ShaderChunks.d.ts +7 -0
  364. package/dist/rendering/ShaderChunks.d.ts.map +1 -1
  365. package/dist/rendering/ShaderChunks.js +137 -0
  366. package/dist/rendering/ShaderChunks.js.map +1 -1
  367. package/dist/rendering/ShaderLibrary.d.ts +17 -0
  368. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  369. package/dist/rendering/ShaderLibrary.js +940 -98
  370. package/dist/rendering/ShaderLibrary.js.map +1 -1
  371. package/dist/rendering/ShadowPass.d.ts +10 -0
  372. package/dist/rendering/ShadowPass.d.ts.map +1 -1
  373. package/dist/rendering/ShadowPass.js +8 -1
  374. package/dist/rendering/ShadowPass.js.map +1 -1
  375. package/dist/rendering/SkinnedLitMaterial.d.ts +6 -0
  376. package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
  377. package/dist/rendering/SkinnedLitMaterial.js +22 -8
  378. package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
  379. package/dist/rendering/SkinnedUnlitMaterial.d.ts +8 -0
  380. package/dist/rendering/SkinnedUnlitMaterial.d.ts.map +1 -1
  381. package/dist/rendering/SkinnedUnlitMaterial.js +26 -9
  382. package/dist/rendering/SkinnedUnlitMaterial.js.map +1 -1
  383. package/dist/rendering/SpecularPrefilter.d.ts +42 -0
  384. package/dist/rendering/SpecularPrefilter.d.ts.map +1 -0
  385. package/dist/rendering/SpecularPrefilter.js +480 -0
  386. package/dist/rendering/SpecularPrefilter.js.map +1 -0
  387. package/dist/rendering/TerrainFixtures.d.ts +24 -0
  388. package/dist/rendering/TerrainFixtures.d.ts.map +1 -1
  389. package/dist/rendering/TerrainFixtures.js +96 -0
  390. package/dist/rendering/TerrainFixtures.js.map +1 -1
  391. package/dist/rendering/Texture.d.ts +7 -0
  392. package/dist/rendering/Texture.d.ts.map +1 -1
  393. package/dist/rendering/Texture.js +9 -0
  394. package/dist/rendering/Texture.js.map +1 -1
  395. package/dist/rendering/VertexFormat.d.ts +34 -1
  396. package/dist/rendering/VertexFormat.d.ts.map +1 -1
  397. package/dist/rendering/VertexFormat.js +61 -0
  398. package/dist/rendering/VertexFormat.js.map +1 -1
  399. package/dist/rendering/WebGL2Device.d.ts +48 -0
  400. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  401. package/dist/rendering/WebGL2Device.js +1298 -44
  402. package/dist/rendering/WebGL2Device.js.map +1 -1
  403. package/dist/rendering/WebGPUDevice.d.ts +7 -2
  404. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  405. package/dist/rendering/WebGPUDevice.js +111 -17
  406. package/dist/rendering/WebGPUDevice.js.map +1 -1
  407. package/dist/rendering/WebGPUSkinningLimits.d.ts +14 -0
  408. package/dist/rendering/WebGPUSkinningLimits.d.ts.map +1 -0
  409. package/dist/rendering/WebGPUSkinningLimits.js +14 -0
  410. package/dist/rendering/WebGPUSkinningLimits.js.map +1 -0
  411. package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts +19 -0
  412. package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
  413. package/dist/rendering/cartoon/CartoonMaterialStyle.js +13 -0
  414. package/dist/rendering/cartoon/CartoonMaterialStyle.js.map +1 -0
  415. package/dist/rendering/cartoon/CartoonRenderPreset.d.ts +36 -0
  416. package/dist/rendering/cartoon/CartoonRenderPreset.d.ts.map +1 -0
  417. package/dist/rendering/cartoon/CartoonRenderPreset.js +23 -0
  418. package/dist/rendering/cartoon/CartoonRenderPreset.js.map +1 -0
  419. package/dist/rendering/cartoon/CartoonToonMaterial.d.ts +130 -0
  420. package/dist/rendering/cartoon/CartoonToonMaterial.d.ts.map +1 -0
  421. package/dist/rendering/cartoon/CartoonToonMaterial.js +303 -0
  422. package/dist/rendering/cartoon/CartoonToonMaterial.js.map +1 -0
  423. package/dist/rendering/cartoon/CartoonVisualQuality.d.ts +28 -0
  424. package/dist/rendering/cartoon/CartoonVisualQuality.d.ts.map +1 -0
  425. package/dist/rendering/cartoon/CartoonVisualQuality.js +39 -0
  426. package/dist/rendering/cartoon/CartoonVisualQuality.js.map +1 -0
  427. package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts +79 -0
  428. package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
  429. package/dist/rendering/cartoon/applyCartoonRenderPreset.js +88 -0
  430. package/dist/rendering/cartoon/applyCartoonRenderPreset.js.map +1 -0
  431. package/dist/rendering/cartoon/index.d.ts +6 -0
  432. package/dist/rendering/cartoon/index.d.ts.map +1 -0
  433. package/dist/rendering/cartoon/index.js +6 -0
  434. package/dist/rendering/cartoon/index.js.map +1 -0
  435. package/dist/rendering/index.d.ts +26 -15
  436. package/dist/rendering/index.d.ts.map +1 -1
  437. package/dist/rendering/index.js +15 -9
  438. package/dist/rendering/index.js.map +1 -1
  439. package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts +93 -0
  440. package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts.map +1 -0
  441. package/dist/rendering/postprocess/NativeLdrEffectLuts.js +202 -0
  442. package/dist/rendering/postprocess/NativeLdrEffectLuts.js.map +1 -0
  443. package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  444. package/dist/rendering/production-runtime/PBRHDRPipeline.js +3 -0
  445. package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
  446. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts +1 -0
  447. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  448. package/dist/rendering/production-runtime/ProductionRendererTypes.js.map +1 -1
  449. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  450. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js +5 -3
  451. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  452. package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  453. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +9 -5
  454. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  455. package/dist/rendering/production-runtime/TransmissionBackdropCapture.d.ts +5 -0
  456. package/dist/rendering/production-runtime/TransmissionBackdropCapture.d.ts.map +1 -1
  457. package/dist/rendering/production-runtime/TransmissionBackdropCapture.js +40 -0
  458. package/dist/rendering/production-runtime/TransmissionBackdropCapture.js.map +1 -1
  459. package/dist/rendering/production-runtime/environment/HDRLoader.d.ts +6 -0
  460. package/dist/rendering/production-runtime/environment/HDRLoader.d.ts.map +1 -1
  461. package/dist/rendering/production-runtime/environment/HDRLoader.js +19 -0
  462. package/dist/rendering/production-runtime/environment/HDRLoader.js.map +1 -1
  463. package/dist/rendering/production-runtime/index.d.ts +3 -1
  464. package/dist/rendering/production-runtime/index.d.ts.map +1 -1
  465. package/dist/rendering/production-runtime/index.js +1 -0
  466. package/dist/rendering/production-runtime/index.js.map +1 -1
  467. package/dist/scene/Light.d.ts +1 -1
  468. package/dist/scene/Light.d.ts.map +1 -1
  469. package/dist/scene/RectAreaLight.d.ts +22 -0
  470. package/dist/scene/RectAreaLight.d.ts.map +1 -0
  471. package/dist/scene/RectAreaLight.js +46 -0
  472. package/dist/scene/RectAreaLight.js.map +1 -0
  473. package/dist/scene/Scene.d.ts +6 -1
  474. package/dist/scene/Scene.d.ts.map +1 -1
  475. package/dist/scene/Scene.js +8 -1
  476. package/dist/scene/Scene.js.map +1 -1
  477. package/dist/scene/SceneSerializer.d.ts +3 -1
  478. package/dist/scene/SceneSerializer.d.ts.map +1 -1
  479. package/dist/scene/SceneSerializer.js +14 -7
  480. package/dist/scene/SceneSerializer.js.map +1 -1
  481. package/dist/scene/index.d.ts +1 -0
  482. package/dist/scene/index.d.ts.map +1 -1
  483. package/dist/scene/index.js +1 -0
  484. package/dist/scene/index.js.map +1 -1
  485. package/dist/scripting/CartoonNodeCategories.d.ts +3 -0
  486. package/dist/scripting/CartoonNodeCategories.d.ts.map +1 -0
  487. package/dist/scripting/CartoonNodeCategories.js +9 -0
  488. package/dist/scripting/CartoonNodeCategories.js.map +1 -0
  489. package/dist/scripting/CartoonVisualNodes.d.ts +3 -0
  490. package/dist/scripting/CartoonVisualNodes.d.ts.map +1 -0
  491. package/dist/scripting/CartoonVisualNodes.js +41 -0
  492. package/dist/scripting/CartoonVisualNodes.js.map +1 -0
  493. package/package.json +131 -114
  494. package/templates/production-asset-inspector/README.md +5 -0
  495. package/templates/production-asset-inspector/asset-manifest.json +9 -0
  496. package/templates/production-asset-inspector/index.html +2 -0
  497. package/templates/production-asset-inspector/package.json +17 -0
  498. package/templates/production-asset-inspector/src/main.ts +16 -0
  499. package/templates/production-material-studio/README.md +5 -0
  500. package/templates/production-material-studio/asset-manifest.json +9 -0
  501. package/templates/production-material-studio/index.html +2 -0
  502. package/templates/production-material-studio/package.json +17 -0
  503. package/templates/production-material-studio/src/main.ts +16 -0
  504. package/templates/production-product-configurator/README.md +5 -0
  505. package/templates/production-product-configurator/asset-manifest.json +9 -0
  506. package/templates/production-product-configurator/index.html +2 -0
  507. package/templates/production-product-configurator/package.json +17 -0
  508. package/templates/production-product-configurator/src/main.ts +16 -0
  509. package/templates/production-product-viewer/README.md +7 -0
  510. package/templates/production-product-viewer/asset-manifest.json +8 -0
  511. package/templates/production-product-viewer/index.html +26 -0
  512. package/templates/production-product-viewer/package.json +17 -0
  513. 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":"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"}
@@ -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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"}