@aura3d/engine 1.5.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (549) hide show
  1. package/README.md +142 -83
  2. package/dist/animation/FootIk.d.ts +10 -1
  3. package/dist/animation/FootIk.d.ts.map +1 -1
  4. package/dist/animation/FootIk.js.map +1 -1
  5. package/dist/animation/HumanoidRetargeting.js +1 -1
  6. package/dist/animation/RigQuality.d.ts +1 -1
  7. package/dist/animation/RigQuality.js +2 -2
  8. package/dist/animation/RigQuality.js.map +1 -1
  9. package/dist/animation/SecondaryAnimationSampling.d.ts +55 -0
  10. package/dist/animation/SecondaryAnimationSampling.d.ts.map +1 -0
  11. package/dist/animation/SecondaryAnimationSampling.js +145 -0
  12. package/dist/animation/SecondaryAnimationSampling.js.map +1 -0
  13. package/dist/animation/SpringBones.d.ts.map +1 -1
  14. package/dist/animation/SpringBones.js +1 -2
  15. package/dist/animation/SpringBones.js.map +1 -1
  16. package/dist/animation/browser-index.d.ts +0 -2
  17. package/dist/animation/browser-index.d.ts.map +1 -1
  18. package/dist/animation/browser-index.js +0 -2
  19. package/dist/animation/browser-index.js.map +1 -1
  20. package/dist/animation/index.d.ts +0 -2
  21. package/dist/animation/index.d.ts.map +1 -1
  22. package/dist/animation/index.js +0 -2
  23. package/dist/animation/index.js.map +1 -1
  24. package/dist/assets/GLTFAnimationRuntime.d.ts +4 -0
  25. package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
  26. package/dist/assets/GLTFAnimationRuntime.js +29 -6
  27. package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
  28. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  29. package/dist/assets/GLTFLoader.js +13 -4
  30. package/dist/assets/GLTFLoader.js.map +1 -1
  31. package/dist/assets/browser-index.d.ts +0 -4
  32. package/dist/assets/browser-index.d.ts.map +1 -1
  33. package/dist/assets/browser-index.js +0 -2
  34. package/dist/assets/browser-index.js.map +1 -1
  35. package/dist/assets/gltf-runtime.d.ts +6 -0
  36. package/dist/assets/gltf-runtime.d.ts.map +1 -0
  37. package/dist/assets/gltf-runtime.js +4 -0
  38. package/dist/assets/gltf-runtime.js.map +1 -0
  39. package/dist/assets/index.d.ts +0 -4
  40. package/dist/assets/index.d.ts.map +1 -1
  41. package/dist/assets/index.js +0 -2
  42. package/dist/assets/index.js.map +1 -1
  43. package/dist/audio/AudioBus.d.ts +19 -1
  44. package/dist/audio/AudioBus.d.ts.map +1 -1
  45. package/dist/audio/AudioBus.js.map +1 -1
  46. package/dist/audio/AudioFileManager.d.ts +5 -0
  47. package/dist/audio/AudioFileManager.d.ts.map +1 -1
  48. package/dist/audio/AudioFileManager.js +13 -0
  49. package/dist/audio/AudioFileManager.js.map +1 -1
  50. package/dist/audio/AudioSource.d.ts +8 -0
  51. package/dist/audio/AudioSource.d.ts.map +1 -1
  52. package/dist/audio/AudioSource.js +56 -7
  53. package/dist/audio/AudioSource.js.map +1 -1
  54. package/dist/audio/index.d.ts +1 -7
  55. package/dist/audio/index.d.ts.map +1 -1
  56. package/dist/audio/index.js +0 -3
  57. package/dist/audio/index.js.map +1 -1
  58. package/dist/aura3d-cli/asset-core-types.d.ts +1 -1
  59. package/dist/aura3d-cli/asset-core-types.d.ts.map +1 -1
  60. package/dist/aura3d-cli/asset-manifest.d.ts.map +1 -1
  61. package/dist/aura3d-cli/asset-manifest.js +36 -2
  62. package/dist/aura3d-cli/asset-manifest.js.map +1 -1
  63. package/dist/aura3d-cli/asset-role-admission.js +1 -1
  64. package/dist/aura3d-cli/asset-role-admission.js.map +1 -1
  65. package/dist/aura3d-cli/cli-help.js +3 -3
  66. package/dist/aura3d-cli/cli-help.js.map +1 -1
  67. package/dist/aura3d-cli/cli-options.d.ts +1 -1
  68. package/dist/aura3d-cli/cli-options.d.ts.map +1 -1
  69. package/dist/aura3d-cli/cli-options.js +2 -2
  70. package/dist/aura3d-cli/cli-options.js.map +1 -1
  71. package/dist/aura3d-cli/cli.js +1 -1
  72. package/dist/aura3d-cli/cli.js.map +1 -1
  73. package/dist/aura3d-cli/index.d.ts.map +1 -1
  74. package/dist/aura3d-cli/index.js +13 -5
  75. package/dist/aura3d-cli/index.js.map +1 -1
  76. package/dist/create-aura3d/index.d.ts.map +1 -1
  77. package/dist/create-aura3d/index.js +10 -4
  78. package/dist/create-aura3d/index.js.map +1 -1
  79. package/dist/create-aura3d/showcase-spec-evidence.js +5 -1
  80. package/dist/create-aura3d/showcase-spec-evidence.js.map +1 -1
  81. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +8 -1
  82. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -1
  83. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +191 -31
  84. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -1
  85. package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -1
  86. package/dist/create-aura3d/showcase-spec-game-template-evidence.js +7 -0
  87. package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -1
  88. package/dist/create-aura3d/showcase-spec-parser.js +1 -1
  89. package/dist/create-aura3d/showcase-spec-parser.js.map +1 -1
  90. package/dist/create-aura3d/showcase-spec-types.d.ts +50 -0
  91. package/dist/create-aura3d/showcase-spec-types.d.ts.map +1 -1
  92. package/dist/editor-runtime/index.d.ts +0 -2
  93. package/dist/editor-runtime/index.d.ts.map +1 -1
  94. package/dist/editor-runtime/index.js +0 -1
  95. package/dist/editor-runtime/index.js.map +1 -1
  96. package/dist/engine/agent-api/GameAssetValidation.js +1 -1
  97. package/dist/engine/agent-api/GameAssetValidation.js.map +1 -1
  98. package/dist/engine/agent-api/GameEvidence.js +1 -1
  99. package/dist/engine/agent-api/GameEvidence.js.map +1 -1
  100. package/dist/engine/agent-api/GameGenreKits.d.ts +63 -0
  101. package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -1
  102. package/dist/engine/agent-api/GameGenreKits.js +274 -56
  103. package/dist/engine/agent-api/GameGenreKits.js.map +1 -1
  104. package/dist/engine/agent-api/GameRuntime.d.ts +38 -1
  105. package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
  106. package/dist/engine/agent-api/GameRuntime.js +69 -1
  107. package/dist/engine/agent-api/GameRuntime.js.map +1 -1
  108. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +24 -0
  109. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -1
  110. package/dist/engine/agent-api/GameSceneGeometryBindings.js +52 -0
  111. package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -1
  112. package/dist/engine/agent-api/LeanArcadeRuntime.d.ts +111 -0
  113. package/dist/engine/agent-api/LeanArcadeRuntime.d.ts.map +1 -0
  114. package/dist/engine/agent-api/LeanArcadeRuntime.js +219 -0
  115. package/dist/engine/agent-api/LeanArcadeRuntime.js.map +1 -0
  116. package/dist/engine/agent-api/PhysicsRuntime.d.ts +332 -0
  117. package/dist/engine/agent-api/PhysicsRuntime.d.ts.map +1 -0
  118. package/dist/engine/agent-api/PhysicsRuntime.js +619 -0
  119. package/dist/engine/agent-api/PhysicsRuntime.js.map +1 -0
  120. package/dist/engine/agent-api/PlatformerMotion.d.ts +124 -0
  121. package/dist/engine/agent-api/PlatformerMotion.d.ts.map +1 -1
  122. package/dist/engine/agent-api/PlatformerMotion.js +101 -16
  123. package/dist/engine/agent-api/PlatformerMotion.js.map +1 -1
  124. package/dist/engine/agent-api/RootGeometry.d.ts +36 -0
  125. package/dist/engine/agent-api/RootGeometry.d.ts.map +1 -0
  126. package/dist/engine/agent-api/RootGeometry.js +152 -0
  127. package/dist/engine/agent-api/RootGeometry.js.map +1 -0
  128. package/dist/engine/agent-api/SpatialAnchoring.d.ts +47 -0
  129. package/dist/engine/agent-api/SpatialAnchoring.d.ts.map +1 -1
  130. package/dist/engine/agent-api/SpatialAnchoring.js +46 -0
  131. package/dist/engine/agent-api/SpatialAnchoring.js.map +1 -1
  132. package/dist/engine/agent-api/VehicleChassis.d.ts +52 -0
  133. package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -1
  134. package/dist/engine/agent-api/VehicleChassis.js +182 -8
  135. package/dist/engine/agent-api/VehicleChassis.js.map +1 -1
  136. package/dist/engine/agent-api/WorldLabelRenderer.d.ts +65 -1
  137. package/dist/engine/agent-api/WorldLabelRenderer.d.ts.map +1 -1
  138. package/dist/engine/agent-api/WorldLabelRenderer.js +48 -5
  139. package/dist/engine/agent-api/WorldLabelRenderer.js.map +1 -1
  140. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -1
  141. package/dist/engine/agent-api/index.d.ts +240 -14
  142. package/dist/engine/agent-api/index.d.ts.map +1 -1
  143. package/dist/engine/agent-api/index.js +1435 -344
  144. package/dist/engine/agent-api/index.js.map +1 -1
  145. package/dist/engine/agent-api/lean-base.d.ts +224 -0
  146. package/dist/engine/agent-api/lean-base.d.ts.map +1 -0
  147. package/dist/engine/agent-api/lean-base.js +322 -0
  148. package/dist/engine/agent-api/lean-base.js.map +1 -0
  149. package/dist/engine/agent-api/lean-game.d.ts +3 -0
  150. package/dist/engine/agent-api/lean-game.d.ts.map +1 -0
  151. package/dist/engine/agent-api/lean-game.js +3 -0
  152. package/dist/engine/agent-api/lean-game.js.map +1 -0
  153. package/dist/engine/agent-api/lean-product.d.ts +3 -0
  154. package/dist/engine/agent-api/lean-product.d.ts.map +1 -0
  155. package/dist/engine/agent-api/lean-product.js +3 -0
  156. package/dist/engine/agent-api/lean-product.js.map +1 -0
  157. package/dist/engine/agent-api/lean.d.ts +3 -0
  158. package/dist/engine/agent-api/lean.d.ts.map +1 -0
  159. package/dist/engine/agent-api/lean.js +3 -0
  160. package/dist/engine/agent-api/lean.js.map +1 -0
  161. package/dist/engine/agent-api/media-node.d.ts +42 -0
  162. package/dist/engine/agent-api/media-node.d.ts.map +1 -0
  163. package/dist/engine/agent-api/media-node.js +44 -0
  164. package/dist/engine/agent-api/media-node.js.map +1 -0
  165. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  166. package/dist/engine/game/GameAudio.d.ts +5 -0
  167. package/dist/engine/game/GameAudio.d.ts.map +1 -1
  168. package/dist/engine/game/GameAudio.js +65 -23
  169. package/dist/engine/game/GameAudio.js.map +1 -1
  170. package/dist/engine/production-runtime/TypedGLBActor.d.ts +9 -1
  171. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  172. package/dist/engine/production-runtime/TypedGLBActor.js +25 -7
  173. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  174. package/dist/engine/production-runtime/index.d.ts +2 -2
  175. package/dist/engine/production-runtime/index.d.ts.map +1 -1
  176. package/dist/engine/threejs-example-parity/FlagshipFoundation.d.ts +3 -3
  177. package/dist/engine/threejs-example-parity/FlagshipFoundation.d.ts.map +1 -1
  178. package/dist/environments/index.d.ts +5 -10
  179. package/dist/environments/index.d.ts.map +1 -1
  180. package/dist/environments/index.js +0 -3
  181. package/dist/environments/index.js.map +1 -1
  182. package/dist/environments/node.d.ts +7 -0
  183. package/dist/environments/node.d.ts.map +1 -0
  184. package/dist/environments/node.js +5 -0
  185. package/dist/environments/node.js.map +1 -0
  186. package/dist/index.d.ts +3 -0
  187. package/dist/index.js +3 -0
  188. package/dist/input/InputActionBinding.d.ts +44 -0
  189. package/dist/input/InputActionBinding.d.ts.map +1 -0
  190. package/dist/input/InputActionBinding.js +86 -0
  191. package/dist/input/InputActionBinding.js.map +1 -0
  192. package/dist/input/InputActionBindingFixtures.d.ts +8 -0
  193. package/dist/input/InputActionBindingFixtures.d.ts.map +1 -1
  194. package/dist/input/InputActionBindingFixtures.js +8 -0
  195. package/dist/input/InputActionBindingFixtures.js.map +1 -1
  196. package/dist/input/InputValueProcessors.d.ts +19 -0
  197. package/dist/input/InputValueProcessors.d.ts.map +1 -0
  198. package/dist/input/InputValueProcessors.js +24 -0
  199. package/dist/input/InputValueProcessors.js.map +1 -0
  200. package/dist/input/index.d.ts +2 -6
  201. package/dist/input/index.d.ts.map +1 -1
  202. package/dist/input/index.js +1 -3
  203. package/dist/input/index.js.map +1 -1
  204. package/dist/lean/ArcadeRuntime.d.ts +111 -0
  205. package/dist/lean/ArcadeRuntime.d.ts.map +1 -0
  206. package/dist/lean/ArcadeRuntime.js +219 -0
  207. package/dist/lean/ArcadeRuntime.js.map +1 -0
  208. package/dist/lean/base.d.ts +228 -0
  209. package/dist/lean/base.d.ts.map +1 -0
  210. package/dist/lean/base.js +322 -0
  211. package/dist/lean/base.js.map +1 -0
  212. package/dist/lean/game.d.ts +19 -0
  213. package/dist/lean/game.d.ts.map +1 -0
  214. package/dist/lean/game.js +37 -0
  215. package/dist/lean/game.js.map +1 -0
  216. package/dist/lean/index.d.ts +4 -0
  217. package/dist/lean/index.d.ts.map +1 -0
  218. package/dist/lean/index.js +10 -0
  219. package/dist/lean/index.js.map +1 -0
  220. package/dist/lean/product.d.ts +4 -0
  221. package/dist/lean/product.d.ts.map +1 -0
  222. package/dist/lean/product.js +55 -0
  223. package/dist/lean/product.js.map +1 -0
  224. package/dist/materials/index.d.ts +1 -10
  225. package/dist/materials/index.d.ts.map +1 -1
  226. package/dist/materials/index.js +1 -6
  227. package/dist/materials/index.js.map +1 -1
  228. package/dist/materials/node.d.ts +4 -0
  229. package/dist/materials/node.d.ts.map +1 -0
  230. package/dist/materials/node.js +3 -0
  231. package/dist/materials/node.js.map +1 -0
  232. package/dist/physics/ArcadeCharacterController.d.ts +53 -0
  233. package/dist/physics/ArcadeCharacterController.d.ts.map +1 -0
  234. package/dist/physics/ArcadeCharacterController.js +98 -0
  235. package/dist/physics/ArcadeCharacterController.js.map +1 -0
  236. package/dist/physics/ArcadeVehicleTelemetry.d.ts +162 -0
  237. package/dist/physics/ArcadeVehicleTelemetry.d.ts.map +1 -0
  238. package/dist/physics/ArcadeVehicleTelemetry.js +363 -0
  239. package/dist/physics/ArcadeVehicleTelemetry.js.map +1 -0
  240. package/dist/physics/CharacterController.d.ts +52 -0
  241. package/dist/physics/CharacterController.d.ts.map +1 -1
  242. package/dist/physics/CharacterController.js +380 -7
  243. package/dist/physics/CharacterController.js.map +1 -1
  244. package/dist/physics/Constraint.d.ts +20 -4
  245. package/dist/physics/Constraint.d.ts.map +1 -1
  246. package/dist/physics/Constraint.js +34 -60
  247. package/dist/physics/Constraint.js.map +1 -1
  248. package/dist/physics/FightingCharacterController.d.ts +32 -0
  249. package/dist/physics/FightingCharacterController.d.ts.map +1 -0
  250. package/dist/physics/FightingCharacterController.js +76 -0
  251. package/dist/physics/FightingCharacterController.js.map +1 -0
  252. package/dist/physics/MeshBVH.d.ts +72 -0
  253. package/dist/physics/MeshBVH.d.ts.map +1 -0
  254. package/dist/physics/MeshBVH.js +244 -0
  255. package/dist/physics/MeshBVH.js.map +1 -0
  256. package/dist/physics/PathFollowDriver.d.ts +162 -0
  257. package/dist/physics/PathFollowDriver.d.ts.map +1 -0
  258. package/dist/physics/PathFollowDriver.js +163 -0
  259. package/dist/physics/PathFollowDriver.js.map +1 -0
  260. package/dist/physics/PhysicsDebugDraw.d.ts +40 -1
  261. package/dist/physics/PhysicsDebugDraw.d.ts.map +1 -1
  262. package/dist/physics/PhysicsDebugDraw.js +87 -17
  263. package/dist/physics/PhysicsDebugDraw.js.map +1 -1
  264. package/dist/physics/PhysicsWorld.d.ts +37 -18
  265. package/dist/physics/PhysicsWorld.d.ts.map +1 -1
  266. package/dist/physics/PhysicsWorld.js +231 -630
  267. package/dist/physics/PhysicsWorld.js.map +1 -1
  268. package/dist/physics/RacingLineProfile.d.ts +116 -0
  269. package/dist/physics/RacingLineProfile.d.ts.map +1 -0
  270. package/dist/physics/RacingLineProfile.js +181 -0
  271. package/dist/physics/RacingLineProfile.js.map +1 -0
  272. package/dist/physics/Raycast.d.ts +11 -0
  273. package/dist/physics/Raycast.d.ts.map +1 -1
  274. package/dist/physics/Raycast.js +62 -8
  275. package/dist/physics/Raycast.js.map +1 -1
  276. package/dist/physics/RigidBody.d.ts +16 -9
  277. package/dist/physics/RigidBody.d.ts.map +1 -1
  278. package/dist/physics/RigidBody.js +23 -75
  279. package/dist/physics/RigidBody.js.map +1 -1
  280. package/dist/physics/SurfaceQuery.d.ts +72 -0
  281. package/dist/physics/SurfaceQuery.d.ts.map +1 -0
  282. package/dist/physics/SurfaceQuery.js +89 -0
  283. package/dist/physics/SurfaceQuery.js.map +1 -0
  284. package/dist/physics/VehicleDynamics.d.ts +10 -0
  285. package/dist/physics/VehicleDynamics.d.ts.map +1 -1
  286. package/dist/physics/VehicleDynamics.js +31 -3
  287. package/dist/physics/VehicleDynamics.js.map +1 -1
  288. package/dist/physics/VehicleMotion.d.ts +125 -0
  289. package/dist/physics/VehicleMotion.d.ts.map +1 -0
  290. package/dist/physics/VehicleMotion.js +373 -0
  291. package/dist/physics/VehicleMotion.js.map +1 -0
  292. package/dist/physics/index.d.ts +62 -17
  293. package/dist/physics/index.d.ts.map +1 -1
  294. package/dist/physics/index.js +70 -17
  295. package/dist/physics/index.js.map +1 -1
  296. package/dist/physics/solverless-entry.d.ts +41 -0
  297. package/dist/physics/solverless-entry.d.ts.map +1 -0
  298. package/dist/physics/solverless-entry.js +40 -0
  299. package/dist/physics/solverless-entry.js.map +1 -0
  300. package/dist/physics/solverless.d.ts +37 -0
  301. package/dist/physics/solverless.d.ts.map +1 -0
  302. package/dist/physics/solverless.js +36 -0
  303. package/dist/physics/solverless.js.map +1 -0
  304. package/dist/physics/world-entry.d.ts +31 -0
  305. package/dist/physics/world-entry.d.ts.map +1 -0
  306. package/dist/physics/world-entry.js +30 -0
  307. package/dist/physics/world-entry.js.map +1 -0
  308. package/dist/physics/world.d.ts +18 -0
  309. package/dist/physics/world.d.ts.map +1 -0
  310. package/dist/physics/world.js +17 -0
  311. package/dist/physics/world.js.map +1 -0
  312. package/dist/physics-rapier/index.d.ts +169 -0
  313. package/dist/physics-rapier/index.d.ts.map +1 -0
  314. package/dist/physics-rapier/index.js +311 -0
  315. package/dist/physics-rapier/index.js.map +1 -0
  316. package/dist/product-studio/ProductLighting.d.ts.map +1 -1
  317. package/dist/product-studio/ProductLighting.js +34 -3
  318. package/dist/product-studio/ProductLighting.js.map +1 -1
  319. package/dist/rendering/ArchitecturalLighting.d.ts +35 -0
  320. package/dist/rendering/ArchitecturalLighting.d.ts.map +1 -0
  321. package/dist/rendering/ArchitecturalLighting.js +162 -0
  322. package/dist/rendering/ArchitecturalLighting.js.map +1 -0
  323. package/dist/rendering/ArchitecturalMaterialCatalog.d.ts +1 -1
  324. package/dist/rendering/ArchitecturalMaterialCatalog.d.ts.map +1 -1
  325. package/dist/rendering/ArchitecturalMaterialCatalog.js +1 -1
  326. package/dist/rendering/ArchitecturalMaterialCatalog.js.map +1 -1
  327. package/dist/rendering/ArchitecturalMeasurement.d.ts +27 -0
  328. package/dist/rendering/ArchitecturalMeasurement.d.ts.map +1 -0
  329. package/dist/rendering/ArchitecturalMeasurement.js +112 -0
  330. package/dist/rendering/ArchitecturalMeasurement.js.map +1 -0
  331. package/dist/rendering/CameraFraming.d.ts +77 -0
  332. package/dist/rendering/CameraFraming.d.ts.map +1 -1
  333. package/dist/rendering/CameraFraming.js +176 -1
  334. package/dist/rendering/CameraFraming.js.map +1 -1
  335. package/dist/rendering/CanonicalProductScene.d.ts +13 -0
  336. package/dist/rendering/CanonicalProductScene.d.ts.map +1 -0
  337. package/dist/rendering/CanonicalProductScene.js +78 -0
  338. package/dist/rendering/CanonicalProductScene.js.map +1 -0
  339. package/dist/rendering/CascadedShadowMaps.d.ts +1 -1
  340. package/dist/rendering/CascadedShadowMaps.d.ts.map +1 -1
  341. package/dist/rendering/CascadedShadowMaps.js +1 -1
  342. package/dist/rendering/CascadedShadowMaps.js.map +1 -1
  343. package/dist/rendering/DepthPass.d.ts +1 -1
  344. package/dist/rendering/DepthPass.d.ts.map +1 -1
  345. package/dist/rendering/DepthPass.js +2 -2
  346. package/dist/rendering/DepthPass.js.map +1 -1
  347. package/dist/rendering/EnvironmentBackgroundPass.d.ts +1 -1
  348. package/dist/rendering/EnvironmentBackgroundPass.d.ts.map +1 -1
  349. package/dist/rendering/EnvironmentBackgroundPass.js +2 -2
  350. package/dist/rendering/EnvironmentBackgroundPass.js.map +1 -1
  351. package/dist/rendering/EnvironmentPlatform.js +2 -2
  352. package/dist/rendering/EnvironmentPlatform.js.map +1 -1
  353. package/dist/rendering/ForwardPass.d.ts +1 -1
  354. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  355. package/dist/rendering/ForwardPass.js +24 -10
  356. package/dist/rendering/ForwardPass.js.map +1 -1
  357. package/dist/rendering/Geometry.d.ts +2 -0
  358. package/dist/rendering/Geometry.d.ts.map +1 -1
  359. package/dist/rendering/Geometry.js +15 -0
  360. package/dist/rendering/Geometry.js.map +1 -1
  361. package/dist/rendering/InstancedPBRMaterial.js +1 -1
  362. package/dist/rendering/InstancedPBRMaterial.js.map +1 -1
  363. package/dist/rendering/InstancedUnlitMaterial.js +1 -1
  364. package/dist/rendering/InstancedUnlitMaterial.js.map +1 -1
  365. package/dist/rendering/Material.js +2 -2
  366. package/dist/rendering/Material.js.map +1 -1
  367. package/dist/rendering/MaterialBinding.js +4 -4
  368. package/dist/rendering/MaterialBinding.js.map +1 -1
  369. package/dist/rendering/MaterialInstance.js +2 -2
  370. package/dist/rendering/MaterialInstance.js.map +1 -1
  371. package/dist/rendering/MorphUnlitMaterial.js +1 -1
  372. package/dist/rendering/MorphUnlitMaterial.js.map +1 -1
  373. package/dist/rendering/NormalMappedPBRMaterial.js +1 -1
  374. package/dist/rendering/NormalMappedPBRMaterial.js.map +1 -1
  375. package/dist/rendering/OceanSurface.d.ts +62 -0
  376. package/dist/rendering/OceanSurface.d.ts.map +1 -0
  377. package/dist/rendering/OceanSurface.js +240 -0
  378. package/dist/rendering/OceanSurface.js.map +1 -0
  379. package/dist/rendering/PBRMaterial.d.ts.map +1 -1
  380. package/dist/rendering/PBRMaterial.js +3 -3
  381. package/dist/rendering/PBRMaterial.js.map +1 -1
  382. package/dist/rendering/PortableShaderMaterial.d.ts +60 -0
  383. package/dist/rendering/PortableShaderMaterial.d.ts.map +1 -0
  384. package/dist/rendering/PortableShaderMaterial.js +223 -0
  385. package/dist/rendering/PortableShaderMaterial.js.map +1 -0
  386. package/dist/rendering/PostProcessPass.d.ts.map +1 -1
  387. package/dist/rendering/PostProcessPass.js +30 -6
  388. package/dist/rendering/PostProcessPass.js.map +1 -1
  389. package/dist/rendering/ProceduralTexture.d.ts +27 -0
  390. package/dist/rendering/ProceduralTexture.d.ts.map +1 -0
  391. package/dist/rendering/ProceduralTexture.js +336 -0
  392. package/dist/rendering/ProceduralTexture.js.map +1 -0
  393. package/dist/rendering/ProductTurntable.d.ts +96 -0
  394. package/dist/rendering/ProductTurntable.d.ts.map +1 -0
  395. package/dist/rendering/ProductTurntable.js +639 -0
  396. package/dist/rendering/ProductTurntable.js.map +1 -0
  397. package/dist/rendering/RenderDevice.d.ts +30 -0
  398. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  399. package/dist/rendering/RenderDevice.js.map +1 -1
  400. package/dist/rendering/Renderer.d.ts +28 -4
  401. package/dist/rendering/Renderer.d.ts.map +1 -1
  402. package/dist/rendering/Renderer.js +34 -12
  403. package/dist/rendering/Renderer.js.map +1 -1
  404. package/dist/rendering/RendererPostprocessPlan.js +4 -4
  405. package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
  406. package/dist/rendering/ScreenSpaceLineMaterial.js +1 -1
  407. package/dist/rendering/ScreenSpaceLineMaterial.js.map +1 -1
  408. package/dist/rendering/ShaderChunks.d.ts.map +1 -1
  409. package/dist/rendering/ShaderChunks.js +81 -19
  410. package/dist/rendering/ShaderChunks.js.map +1 -1
  411. package/dist/rendering/ShaderLibrary.d.ts +2 -78
  412. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  413. package/dist/rendering/ShaderLibrary.js +127 -793
  414. package/dist/rendering/ShaderLibrary.js.map +1 -1
  415. package/dist/rendering/ShaderLibraryCore.d.ts +100 -0
  416. package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -0
  417. package/dist/rendering/ShaderLibraryCore.js +800 -0
  418. package/dist/rendering/ShaderLibraryCore.js.map +1 -0
  419. package/dist/rendering/ShaderModule.d.ts +1 -1
  420. package/dist/rendering/ShaderModule.d.ts.map +1 -1
  421. package/dist/rendering/ShaderModule.js +4 -2
  422. package/dist/rendering/ShaderModule.js.map +1 -1
  423. package/dist/rendering/ShadowPass.d.ts +1 -1
  424. package/dist/rendering/ShadowPass.d.ts.map +1 -1
  425. package/dist/rendering/ShadowPass.js +6 -4
  426. package/dist/rendering/ShadowPass.js.map +1 -1
  427. package/dist/rendering/SkinnedLitMaterial.js +1 -1
  428. package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
  429. package/dist/rendering/SkinnedUnlitMaterial.js +1 -1
  430. package/dist/rendering/SkinnedUnlitMaterial.js.map +1 -1
  431. package/dist/rendering/SpaceEnvironment.d.ts +54 -0
  432. package/dist/rendering/SpaceEnvironment.d.ts.map +1 -0
  433. package/dist/rendering/SpaceEnvironment.js +116 -0
  434. package/dist/rendering/SpaceEnvironment.js.map +1 -0
  435. package/dist/rendering/TerrainHeightfield.d.ts +60 -0
  436. package/dist/rendering/TerrainHeightfield.d.ts.map +1 -0
  437. package/dist/rendering/TerrainHeightfield.js +239 -0
  438. package/dist/rendering/TerrainHeightfield.js.map +1 -0
  439. package/dist/rendering/TextureBinding.d.ts +14 -0
  440. package/dist/rendering/TextureBinding.d.ts.map +1 -1
  441. package/dist/rendering/TextureBinding.js +17 -0
  442. package/dist/rendering/TextureBinding.js.map +1 -1
  443. package/dist/rendering/TexturedPBRMaterial.js +1 -1
  444. package/dist/rendering/TexturedPBRMaterial.js.map +1 -1
  445. package/dist/rendering/TexturedUnlitMaterial.js +1 -1
  446. package/dist/rendering/TexturedUnlitMaterial.js.map +1 -1
  447. package/dist/rendering/UnlitMaterial.js +1 -1
  448. package/dist/rendering/UnlitMaterial.js.map +1 -1
  449. package/dist/rendering/VegetationFixtures.d.ts +1 -1
  450. package/dist/rendering/VegetationFixtures.d.ts.map +1 -1
  451. package/dist/rendering/VegetationFixtures.js +1 -1
  452. package/dist/rendering/VegetationFixtures.js.map +1 -1
  453. package/dist/rendering/VegetationScatter.d.ts +68 -0
  454. package/dist/rendering/VegetationScatter.d.ts.map +1 -0
  455. package/dist/rendering/VegetationScatter.js +241 -0
  456. package/dist/rendering/VegetationScatter.js.map +1 -0
  457. package/dist/rendering/VoxelWorld.d.ts +51 -0
  458. package/dist/rendering/VoxelWorld.d.ts.map +1 -0
  459. package/dist/rendering/VoxelWorld.js +183 -0
  460. package/dist/rendering/VoxelWorld.js.map +1 -0
  461. package/dist/rendering/Weather.d.ts +44 -0
  462. package/dist/rendering/Weather.d.ts.map +1 -0
  463. package/dist/rendering/Weather.js +140 -0
  464. package/dist/rendering/Weather.js.map +1 -0
  465. package/dist/rendering/WebGL2Device.d.ts +22 -0
  466. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  467. package/dist/rendering/WebGL2Device.js +134 -23
  468. package/dist/rendering/WebGL2Device.js.map +1 -1
  469. package/dist/rendering/WebGPUDevice.d.ts +19 -2
  470. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  471. package/dist/rendering/WebGPUDevice.js +188 -9
  472. package/dist/rendering/WebGPUDevice.js.map +1 -1
  473. package/dist/rendering/index.d.ts +28 -35
  474. package/dist/rendering/index.d.ts.map +1 -1
  475. package/dist/rendering/index.js +36 -20
  476. package/dist/rendering/index.js.map +1 -1
  477. package/dist/rendering/lean/LeanProductRenderer.d.ts +29 -0
  478. package/dist/rendering/lean/LeanProductRenderer.d.ts.map +1 -0
  479. package/dist/rendering/lean/LeanProductRenderer.js +38 -0
  480. package/dist/rendering/lean/LeanProductRenderer.js.map +1 -0
  481. package/dist/rendering/lean/LeanProductionRenderer.d.ts +38 -0
  482. package/dist/rendering/lean/LeanProductionRenderer.d.ts.map +1 -0
  483. package/dist/rendering/lean/LeanProductionRenderer.js +88 -0
  484. package/dist/rendering/lean/LeanProductionRenderer.js.map +1 -0
  485. package/dist/rendering/lean-runtime.d.ts +18 -0
  486. package/dist/rendering/lean-runtime.d.ts.map +1 -0
  487. package/dist/rendering/lean-runtime.js +13 -0
  488. package/dist/rendering/lean-runtime.js.map +1 -0
  489. package/dist/rendering/postprocess/EffectComposer.d.ts.map +1 -1
  490. package/dist/rendering/postprocess/EffectComposer.js +1 -3
  491. package/dist/rendering/postprocess/EffectComposer.js.map +1 -1
  492. package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  493. package/dist/rendering/production-runtime/PBRHDRPipeline.js +5 -1
  494. package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
  495. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts +9 -0
  496. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  497. package/dist/rendering/production-runtime/ProductionRendererTypes.js.map +1 -1
  498. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.d.ts +5 -0
  499. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
  500. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.js +53 -5
  501. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
  502. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts +10 -0
  503. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  504. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js +21 -2
  505. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  506. package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  507. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +4 -1
  508. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  509. package/dist/rendering/webgpu-device-entry.d.ts +25 -0
  510. package/dist/rendering/webgpu-device-entry.d.ts.map +1 -0
  511. package/dist/rendering/webgpu-device-entry.js +24 -0
  512. package/dist/rendering/webgpu-device-entry.js.map +1 -0
  513. package/dist/rendering/webgpu.d.ts +25 -0
  514. package/dist/rendering/webgpu.d.ts.map +1 -0
  515. package/dist/rendering/webgpu.js +24 -0
  516. package/dist/rendering/webgpu.js.map +1 -0
  517. package/dist/scene/MathTypes.d.ts +1 -0
  518. package/dist/scene/MathTypes.d.ts.map +1 -1
  519. package/dist/scene/MathTypes.js +3 -0
  520. package/dist/scene/MathTypes.js.map +1 -1
  521. package/dist/scene/Renderable.d.ts +6 -0
  522. package/dist/scene/Renderable.d.ts.map +1 -1
  523. package/dist/scene/Renderable.js +8 -2
  524. package/dist/scene/Renderable.js.map +1 -1
  525. package/dist/scripting/index.d.ts +0 -16
  526. package/dist/scripting/index.d.ts.map +1 -1
  527. package/dist/scripting/index.js +0 -8
  528. package/dist/scripting/index.js.map +1 -1
  529. package/dist/workflows/production-runtime/ProductionExampleRuntime.d.ts +2 -2
  530. package/dist/workflows/production-runtime/ProductionExampleRuntime.d.ts.map +1 -1
  531. package/dist/workflows/production-runtime/ProductionExampleRuntime.js +2 -2
  532. package/dist/workflows/production-runtime/ProductionExampleRuntime.js.map +1 -1
  533. package/package.json +243 -127
  534. package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +8 -0
  535. package/templates/cinematic-scene/node_modules/.vite/deps/package.json +3 -0
  536. package/templates/cinematic-scene/package.json +1 -1
  537. package/templates/cinematic-scene/test-results/.last-run.json +6 -0
  538. package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +64 -0
  539. package/templates/mini-game/README.md +3 -2
  540. package/templates/mini-game/package.json +1 -1
  541. package/templates/mini-game/src/aura-assets.ts +1 -1
  542. package/templates/mini-game/src/main.ts +69 -141
  543. package/templates/product-viewer/README.md +7 -5
  544. package/templates/product-viewer/index.html +1 -1
  545. package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +8 -0
  546. package/templates/product-viewer/node_modules/.vite/deps/package.json +3 -0
  547. package/templates/product-viewer/package.json +1 -1
  548. package/templates/product-viewer/src/aura-assets.ts +1 -1
  549. package/templates/product-viewer/src/main.ts +29 -23
@@ -0,0 +1,619 @@
1
+ /**
2
+ * Public physics runtime: the seam that turns declared bodies into a simulation a
3
+ * developer can actually drive.
4
+ *
5
+ * ## The defect this addresses
6
+ *
7
+ * `@aura3d/physics` already wraps a real engine. `PhysicsWorld` has `createRigidBody`,
8
+ * `createCollider`, `createConstraint`, `step()` returning `CollisionEvent[]`,
9
+ * `raycast`/`raycastAll`, configurable solver iterations and sleeping, over the one
10
+ * production Rapier adapter. `RigidBody` already has `applyForce`,
11
+ * `applyTorque`, `applyImpulse`, `setVelocity`, `wake` and `sleep`.
12
+ *
13
+ * None of it was reachable. Across ~47k lines of the public agent API there were zero
14
+ * occurrences of `applyForce`, zero of `onCollision`, zero of a public `rigidBody`
15
+ * type, and exactly one `applyImpulse` — buried inside the canned mini-golf helper and
16
+ * unreachable to any other route. The public surface let a developer *declare*
17
+ * `.physics({ type: "dynamic", mass: 1 })` and watch a box fall. They could not push
18
+ * it, could not know when it hit anything, and could not read its velocity.
19
+ *
20
+ * Declaring a simulation you cannot interact with is not a physics API. That is why the
21
+ * library had four hardcoded genre kits and no path to a fifth: every genre outside
22
+ * racing, platformer, falling-blocks and locomotion had to reach into internals.
23
+ *
24
+ * This module is the answer. It mirrors the existing `app.nodes` registry shape so the
25
+ * ergonomics are already familiar, and it deliberately exposes only what the backend
26
+ * genuinely supports — an unsupported shape throws with an actionable message rather
27
+ * than silently doing nothing.
28
+ */
29
+ // Solver-free values only. `PhysicsWorld` stays a type below, so this file is not a
30
+ // static consumer of the solver — the world is handed to it, never constructed here.
31
+ import { PhysicsDebugDraw, Shape } from "../../physics/solverless.js";
32
+ export function createCollisionLayers(matrix) {
33
+ const names = Object.keys(matrix);
34
+ if (names.length === 0)
35
+ throw new Error("createCollisionLayers requires at least one layer.");
36
+ if (names.length > 32)
37
+ throw new Error("createCollisionLayers supports at most 32 layers.");
38
+ for (const [layer, against] of Object.entries(matrix)) {
39
+ for (const other of against) {
40
+ if (!names.includes(other)) {
41
+ throw new Error(`Collision layer "${layer}" references unknown layer "${other}".`);
42
+ }
43
+ }
44
+ }
45
+ return { names, matrix };
46
+ }
47
+ /** True when two layers may generate contacts. Symmetric: either side may allow it. */
48
+ export function layersCollide(layers, a, b) {
49
+ return (layers.matrix[a]?.includes(b) ?? false) || (layers.matrix[b]?.includes(a) ?? false);
50
+ }
51
+ /** Bitmask for a layer name, for backends that take masks directly. */
52
+ export function layerMask(layers, name) {
53
+ const index = layers.names.indexOf(name);
54
+ if (index < 0)
55
+ throw new Error(`Unknown collision layer "${name}".`);
56
+ return 1 << index;
57
+ }
58
+ export function collisionMaskFor(layers, name) {
59
+ const against = layers.matrix[name];
60
+ if (!against)
61
+ throw new Error(`Unknown collision layer "${name}".`);
62
+ let mask = 0;
63
+ for (const other of against)
64
+ mask |= layerMask(layers, other);
65
+ // Symmetry: include layers that name this one, so a one-sided declaration still works.
66
+ for (const [layer, list] of Object.entries(layers.matrix)) {
67
+ if (list.includes(name))
68
+ mask |= layerMask(layers, layer);
69
+ }
70
+ return mask;
71
+ }
72
+ export function validateJointSpec(spec) {
73
+ if (spec.kind === "spring") {
74
+ if (spec.stiffness !== undefined && !(spec.stiffness > 0)) {
75
+ throw new Error("Spring joint stiffness must be positive.");
76
+ }
77
+ if (spec.damping !== undefined && spec.damping < 0) {
78
+ throw new Error("Spring joint damping must be non-negative.");
79
+ }
80
+ }
81
+ if (spec.kind === "motorised-hinge" && spec.motorSpeed === undefined) {
82
+ throw new Error("A motorised-hinge joint requires motorSpeed.");
83
+ }
84
+ if (spec.limits) {
85
+ const [lower, upper] = spec.limits;
86
+ if (!(lower <= upper))
87
+ throw new Error("Joint limits must be ordered [lower, upper].");
88
+ if (spec.kind !== "hinge" && spec.kind !== "motorised-hinge") {
89
+ throw new Error(`Joint limits are only supported on hinge joints, not "${spec.kind}".`);
90
+ }
91
+ }
92
+ }
93
+ /**
94
+ * Shapes the active backend can actually simulate as a *dynamic* body.
95
+ *
96
+ * `trimesh` and `heightfield` are static-only in every backend here: a concave
97
+ * triangle soup has no well-defined inertia tensor, and treating one as dynamic
98
+ * produces a body that falls through thin geometry. Declaring one dynamic is a
99
+ * mistake worth an error rather than a silent fallback, because the failure mode
100
+ * looks like a physics bug rather than an authoring bug.
101
+ */
102
+ export const AURA_DYNAMIC_CAPABLE_SHAPES = [
103
+ "box",
104
+ "sphere",
105
+ "capsule",
106
+ "convexHull"
107
+ ];
108
+ export const AURA_STATIC_ONLY_SHAPES = ["plane", "mesh", "heightfield"];
109
+ /** Shapes {@link AuraPhysicsRuntime.createBody} can build from dimensions alone. */
110
+ export const AURA_SPEC_CONSTRUCTIBLE_SHAPES = [
111
+ "box",
112
+ "sphere",
113
+ "capsule",
114
+ "plane"
115
+ ];
116
+ export function assertShapeSupported(shape, bodyType) {
117
+ if (bodyType === "dynamic" && AURA_STATIC_ONLY_SHAPES.includes(shape)) {
118
+ throw new Error(`Collider shape "${shape}" cannot be dynamic: it has no well-defined inertia tensor. ` +
119
+ `Declare it { type: "static" }, or use one of ${AURA_DYNAMIC_CAPABLE_SHAPES.join(", ")} for a moving body.`);
120
+ }
121
+ }
122
+ /**
123
+ * Approach speed along the contact normal.
124
+ *
125
+ * Exposed on every collision event because it is what separates a landing from a
126
+ * crash, a tap from a hit. Without it, gameplay code has to cache last-frame
127
+ * velocities to tell the difference.
128
+ */
129
+ export function contactRelativeSpeed(velocityA, velocityB, normal) {
130
+ const rx = velocityA[0] - velocityB[0];
131
+ const ry = velocityA[1] - velocityB[1];
132
+ const rz = velocityA[2] - velocityB[2];
133
+ return Math.abs(rx * normal[0] + ry * normal[1] + rz * normal[2]);
134
+ }
135
+ /** Internal: adapt a `@aura3d/physics` body to the public handle. */
136
+ export function createBodyHandle(body, nodeName) {
137
+ const snapshot = () => body.snapshot();
138
+ const handle = {
139
+ id: body.id,
140
+ nodeName,
141
+ type: body.type,
142
+ mass: body.mass,
143
+ position: () => [...snapshot().position],
144
+ velocity: () => [...snapshot().velocity],
145
+ angularVelocity: () => [...snapshot().angularVelocity],
146
+ sleeping: () => snapshot().sleeping,
147
+ applyForce: (force) => { body.applyForce([...force]); return handle; },
148
+ applyTorque: (torque) => { body.applyTorque([...torque]); return handle; },
149
+ applyImpulse: (impulse) => { body.wake(); body.applyImpulse([...impulse]); return handle; },
150
+ applyAngularImpulse: (impulse) => { body.wake(); body.applyAngularImpulse([...impulse]); return handle; },
151
+ applyImpulseAtPoint: (impulse, point) => {
152
+ body.wake();
153
+ body.applyImpulseAtPoint([...impulse], [...point]);
154
+ return handle;
155
+ },
156
+ setVelocity: (velocity) => { body.wake(); body.setVelocity([...velocity]); return handle; },
157
+ setAngularVelocity: (velocity) => { body.wake(); body.setAngularVelocity([...velocity]); return handle; },
158
+ setPosition: (position) => { body.setPosition([...position]); return handle; },
159
+ teleport: (position) => {
160
+ body.setPosition([...position]);
161
+ body.setVelocity([0, 0, 0]);
162
+ body.setAngularVelocity([0, 0, 0]);
163
+ return handle;
164
+ },
165
+ wake: () => { body.wake(); return handle; },
166
+ sleep: () => { body.sleep(); return handle; }
167
+ };
168
+ return handle;
169
+ }
170
+ /** Internal: translate a solver collision event into the public shape. */
171
+ export function toAuraCollisionEvent(event, resolveBody) {
172
+ const contact = event.contact;
173
+ const bodyA = resolveBody(contact.bodyA);
174
+ const bodyB = resolveBody(contact.bodyB);
175
+ if (!bodyA || !bodyB)
176
+ return undefined;
177
+ return {
178
+ phase: event.type,
179
+ bodyA,
180
+ bodyB,
181
+ nodeA: bodyA.nodeName,
182
+ nodeB: bodyB.nodeName,
183
+ normal: [...contact.normal],
184
+ point: contact.point ? [...contact.point] : undefined,
185
+ penetration: contact.penetration,
186
+ sensor: contact.sensor,
187
+ relativeSpeed: contactRelativeSpeed(bodyA.velocity(), bodyB.velocity(), contact.normal)
188
+ };
189
+ }
190
+ /** Internal: translate a solver raycast hit into the public shape. */
191
+ export function toAuraRaycastResult(hit, resolveBody) {
192
+ const body = resolveBody(hit.bodyId);
193
+ if (!body)
194
+ return undefined;
195
+ return {
196
+ body,
197
+ nodeName: body.nodeName,
198
+ point: [...hit.point],
199
+ normal: [...hit.normal],
200
+ distance: hit.distance
201
+ };
202
+ }
203
+ /**
204
+ * Build the public physics runtime over a `PhysicsWorld`.
205
+ *
206
+ * This is the function that closes the reachability gap described at the top of this
207
+ * file. Everything above it was type declarations and pure helpers; without an
208
+ * implementation that a live app hands out, `AuraPhysicsRuntime` was an interface no
209
+ * value ever satisfied, and no developer could obtain one.
210
+ */
211
+ export function createPhysicsRuntime(world, options = {}) {
212
+ const layers = options.layers;
213
+ const debugDraw = new PhysicsDebugDraw();
214
+ const handles = new Map();
215
+ const namesById = new Map();
216
+ const idsByName = new Map();
217
+ const layerByBodyId = new Map();
218
+ const collisionHandlers = new Set();
219
+ const namedHandlers = new Map();
220
+ const triggerEnterHandlers = new Set();
221
+ const triggerExitHandlers = new Set();
222
+ let lastEvents = [];
223
+ function nodeNameFor(bodyId) {
224
+ return namesById.get(bodyId) ?? options.nodeNameFor?.(bodyId);
225
+ }
226
+ function resolveBody(id) {
227
+ const existing = handles.get(id);
228
+ if (existing)
229
+ return existing;
230
+ const body = world.getBody(id);
231
+ if (!body)
232
+ return undefined;
233
+ const handle = createBodyHandle(body, nodeNameFor(id));
234
+ handles.set(id, handle);
235
+ return handle;
236
+ }
237
+ function resolveId(id) {
238
+ if (typeof id === "number")
239
+ return id;
240
+ const known = idsByName.get(id);
241
+ if (known !== undefined)
242
+ return known;
243
+ /*
244
+ * Fall back to the host's node-name resolver for bodies this runtime did not create.
245
+ *
246
+ * `idsByName` is only populated by `createBody`, so a body registered externally — which is
247
+ * exactly what `createAuraApp` does for every node declaring `.physics({...})` — was invisible to
248
+ * name lookup. `app.physics.bodies.get(1).nodeName` correctly returned "declared" while
249
+ * `bodies.has("declared")` returned **false**, so the documented ergonomic
250
+ * (`app.physics.bodies.require("crate").applyImpulse(...)`) silently failed for the one case the
251
+ * docs use as its example: a body declared on a scene node.
252
+ *
253
+ * Resolving through `nodeNameFor` closes it without a second source of truth: the host already
254
+ * owns the id-to-name mapping, so this asks it rather than duplicating it.
255
+ */
256
+ for (const body of world.bodies()) {
257
+ if (nodeNameFor(body.id) === id) {
258
+ idsByName.set(id, body.id);
259
+ return body.id;
260
+ }
261
+ }
262
+ return undefined;
263
+ }
264
+ /** Translate the public layer-name filter into the numeric mask the solver takes. */
265
+ function toRaycastOptions(options) {
266
+ if (!options)
267
+ return {};
268
+ let mask;
269
+ if (options.layers && layers) {
270
+ mask = 0;
271
+ for (const name of options.layers)
272
+ mask |= layerMask(layers, name);
273
+ }
274
+ const ignoreColliders = [];
275
+ for (const bodyId of options.ignore ?? []) {
276
+ for (const collider of world.colliders()) {
277
+ if (collider.bodyId === bodyId)
278
+ ignoreColliders.push(collider.id);
279
+ }
280
+ }
281
+ return {
282
+ ...(options.maxDistance === undefined ? {} : { maxDistance: options.maxDistance }),
283
+ ...(mask === undefined ? {} : { mask }),
284
+ ...(ignoreColliders.length === 0 ? {} : { ignore: ignoreColliders })
285
+ };
286
+ }
287
+ const queries = {
288
+ raycast(origin, direction, opts) {
289
+ const hit = world.raycast([...origin], [...direction], toRaycastOptions(opts));
290
+ return hit ? toAuraRaycastResult(hit, resolveBody) : undefined;
291
+ },
292
+ raycastAll(origin, direction, opts) {
293
+ const hits = world.raycastAll([...origin], [...direction], toRaycastOptions(opts));
294
+ const out = [];
295
+ for (const hit of hits) {
296
+ const result = toAuraRaycastResult(hit, resolveBody);
297
+ if (result)
298
+ out.push(result);
299
+ }
300
+ return out;
301
+ },
302
+ sphereCast(origin, radius, direction, opts) {
303
+ const hit = world.sphereCast([...origin], radius, [...direction], toRaycastOptions(opts));
304
+ return hit ? toAuraRaycastResult(hit, resolveBody) : undefined;
305
+ },
306
+ overlapSphere(center, radius, opts) {
307
+ // Implemented as a bounds test against every collider rather than a solver query,
308
+ // because `PhysicsWorld` exposes casts but not a standing overlap test. Filtering by
309
+ // layer here keeps the public semantics identical to the cast paths.
310
+ const allowed = opts?.layers && layers
311
+ ? new Set(opts.layers)
312
+ : undefined;
313
+ const ignore = new Set(opts?.ignore ?? []);
314
+ const out = [];
315
+ const r2 = radius * radius;
316
+ for (const body of world.bodies()) {
317
+ if (ignore.has(body.id))
318
+ continue;
319
+ if (allowed) {
320
+ const layerName = layerByBodyId.get(body.id);
321
+ if (!layerName || !allowed.has(layerName))
322
+ continue;
323
+ }
324
+ const dx = body.position[0] - center[0];
325
+ const dy = body.position[1] - center[1];
326
+ const dz = body.position[2] - center[2];
327
+ if (dx * dx + dy * dy + dz * dz <= r2) {
328
+ const handle = resolveBody(body.id);
329
+ if (handle)
330
+ out.push(handle);
331
+ }
332
+ }
333
+ return out;
334
+ },
335
+ overlapBox(center, halfExtents, opts) {
336
+ const allowed = opts?.layers && layers ? new Set(opts.layers) : undefined;
337
+ const ignore = new Set(opts?.ignore ?? []);
338
+ const out = [];
339
+ for (const body of world.bodies()) {
340
+ if (ignore.has(body.id))
341
+ continue;
342
+ if (allowed) {
343
+ const layerName = layerByBodyId.get(body.id);
344
+ if (!layerName || !allowed.has(layerName))
345
+ continue;
346
+ }
347
+ if (Math.abs(body.position[0] - center[0]) <= halfExtents[0] &&
348
+ Math.abs(body.position[1] - center[1]) <= halfExtents[1] &&
349
+ Math.abs(body.position[2] - center[2]) <= halfExtents[2]) {
350
+ const handle = resolveBody(body.id);
351
+ if (handle)
352
+ out.push(handle);
353
+ }
354
+ }
355
+ return out;
356
+ }
357
+ };
358
+ const bodies = {
359
+ get(id) {
360
+ const resolved = resolveId(id);
361
+ return resolved === undefined ? undefined : resolveBody(resolved);
362
+ },
363
+ require(id) {
364
+ const handle = bodies.get(id);
365
+ if (!handle) {
366
+ throw new Error(`No physics body "${id}". Create one with app.physics.createBody({ name: "${id}" }), ` +
367
+ `or declare .physics({...}) on the scene node of that name.`);
368
+ }
369
+ return handle;
370
+ },
371
+ has(id) {
372
+ return bodies.get(id) !== undefined;
373
+ },
374
+ ids() {
375
+ return world.bodies().map((body) => body.id);
376
+ },
377
+ all() {
378
+ const out = [];
379
+ for (const body of world.bodies()) {
380
+ const handle = resolveBody(body.id);
381
+ if (handle)
382
+ out.push(handle);
383
+ }
384
+ return out;
385
+ }
386
+ };
387
+ function dispatch(events) {
388
+ for (const event of events) {
389
+ if (event.sensor) {
390
+ const set = event.phase === "end" ? triggerExitHandlers : triggerEnterHandlers;
391
+ // Only `begin` and `end` are meaningful for a trigger; a `stay` overlap would
392
+ // re-fire "entered" every frame, which is the classic pickup-collected-twice bug.
393
+ if (event.phase === "begin" || event.phase === "end") {
394
+ for (const handler of [...set])
395
+ handler(event);
396
+ }
397
+ continue;
398
+ }
399
+ for (const handler of [...collisionHandlers])
400
+ handler(event);
401
+ for (const name of [event.nodeA, event.nodeB]) {
402
+ if (!name)
403
+ continue;
404
+ const set = namedHandlers.get(name);
405
+ if (!set)
406
+ continue;
407
+ for (const handler of [...set])
408
+ handler(event);
409
+ }
410
+ }
411
+ }
412
+ const runtime = {
413
+ bodies,
414
+ queries,
415
+ layers,
416
+ createBody(spec = {}) {
417
+ const type = spec.type ?? "dynamic";
418
+ const shape = spec.shape ?? "box";
419
+ assertShapeSupported(shape, type);
420
+ const body = world.createRigidBody({
421
+ type,
422
+ position: spec.position ? [...spec.position] : [0, 0, 0],
423
+ ...(spec.mass === undefined ? {} : { mass: spec.mass }),
424
+ ...(spec.friction === undefined ? {} : { friction: spec.friction }),
425
+ ...(spec.restitution === undefined ? {} : { restitution: spec.restitution }),
426
+ ...(spec.linearDamping === undefined ? {} : { linearDamping: spec.linearDamping }),
427
+ ...(spec.angularDamping === undefined ? {} : { angularDamping: spec.angularDamping })
428
+ });
429
+ const filter = spec.layer && layers
430
+ ? { layer: layerMask(layers, spec.layer), mask: collisionMaskFor(layers, spec.layer) }
431
+ : undefined;
432
+ if (spec.layer) {
433
+ if (!layers) {
434
+ throw new Error(`Body layer "${spec.layer}" was declared, but the runtime has no layers. ` +
435
+ "Pass layers: createCollisionLayers({...}) when creating the app.");
436
+ }
437
+ layerByBodyId.set(body.id, spec.layer);
438
+ }
439
+ world.createCollider(body, {
440
+ shape: toPhysicsShape(shape, spec),
441
+ ...(spec.sensor === undefined ? {} : { sensor: spec.sensor }),
442
+ ...(filter ? { filter } : {}),
443
+ material: {
444
+ friction: spec.friction ?? 0.5,
445
+ restitution: spec.restitution ?? 0
446
+ }
447
+ });
448
+ if (spec.name) {
449
+ namesById.set(body.id, spec.name);
450
+ idsByName.set(spec.name, body.id);
451
+ }
452
+ const handle = createBodyHandle(body, spec.name);
453
+ handles.set(body.id, handle);
454
+ return handle;
455
+ },
456
+ removeBody(id) {
457
+ const resolved = resolveId(id);
458
+ if (resolved === undefined)
459
+ return;
460
+ world.removeRigidBody(resolved);
461
+ handles.delete(resolved);
462
+ layerByBodyId.delete(resolved);
463
+ const name = namesById.get(resolved);
464
+ if (name)
465
+ idsByName.delete(name);
466
+ namesById.delete(resolved);
467
+ },
468
+ createJoint(spec) {
469
+ validateJointSpec(spec);
470
+ const idA = resolveId(spec.bodyA);
471
+ const idB = resolveId(spec.bodyB);
472
+ const bodyA = idA === undefined ? undefined : world.getBody(idA);
473
+ const bodyB = idB === undefined ? undefined : world.getBody(idB);
474
+ if (!bodyA || !bodyB) {
475
+ throw new Error(`createJoint needs two existing bodies; got "${spec.bodyA}" and "${spec.bodyB}".`);
476
+ }
477
+ // Anchors are given in world space by the public API because that is what a level
478
+ // author knows — the hinge is at the door frame. Convert to each body's local frame.
479
+ const anchor = spec.anchor ?? [
480
+ (bodyA.position[0] + bodyB.position[0]) / 2,
481
+ (bodyA.position[1] + bodyB.position[1]) / 2,
482
+ (bodyA.position[2] + bodyB.position[2]) / 2
483
+ ];
484
+ const constraint = world.createConstraint({
485
+ type: spec.kind,
486
+ bodyA,
487
+ bodyB,
488
+ localAnchorA: [anchor[0] - bodyA.position[0], anchor[1] - bodyA.position[1], anchor[2] - bodyA.position[2]],
489
+ localAnchorB: [anchor[0] - bodyB.position[0], anchor[1] - bodyB.position[1], anchor[2] - bodyB.position[2]],
490
+ ...(spec.axis ? { axis: [...spec.axis] } : {}),
491
+ ...(spec.stiffness === undefined ? {} : { stiffness: Math.min(1, spec.stiffness) }),
492
+ ...(spec.damping === undefined ? {} : { damping: spec.damping }),
493
+ ...(spec.restLength === undefined ? {} : { restLength: spec.restLength }),
494
+ ...(spec.motorSpeed === undefined ? {} : { motorSpeed: spec.motorSpeed }),
495
+ ...(spec.maxMotorTorque === undefined ? {} : { maxMotorTorque: spec.maxMotorTorque }),
496
+ ...(spec.limits ? { limits: spec.limits } : {})
497
+ });
498
+ let jointId = 0;
499
+ for (const [index, candidate] of world.constraints().entries()) {
500
+ if (candidate === constraint)
501
+ jointId = index + 1;
502
+ }
503
+ const handle = {
504
+ id: jointId,
505
+ kind: spec.kind,
506
+ setEnabled(enabled) {
507
+ constraint.setEnabled(enabled);
508
+ return handle;
509
+ },
510
+ setMotorSpeed(speed) {
511
+ if (spec.kind !== "motorised-hinge") {
512
+ throw new Error(`setMotorSpeed is only valid on a motorised-hinge joint, not "${spec.kind}".`);
513
+ }
514
+ constraint.setMotorSpeed(speed);
515
+ return handle;
516
+ },
517
+ remove() {
518
+ constraint.setEnabled(false);
519
+ }
520
+ };
521
+ return handle;
522
+ },
523
+ step(dt) {
524
+ const events = dt === undefined ? world.step() : world.step(dt);
525
+ const out = [];
526
+ for (const event of events) {
527
+ const mapped = toAuraCollisionEvent(event, resolveBody);
528
+ if (mapped)
529
+ out.push(mapped);
530
+ }
531
+ lastEvents = out;
532
+ dispatch(out);
533
+ return out;
534
+ },
535
+ contacts() {
536
+ return lastEvents;
537
+ },
538
+ onCollision(handler) {
539
+ collisionHandlers.add(handler);
540
+ return () => collisionHandlers.delete(handler);
541
+ },
542
+ onCollisionWith(nodeName, handler) {
543
+ const set = namedHandlers.get(nodeName) ?? new Set();
544
+ set.add(handler);
545
+ namedHandlers.set(nodeName, set);
546
+ return () => {
547
+ set.delete(handler);
548
+ if (set.size === 0)
549
+ namedHandlers.delete(nodeName);
550
+ };
551
+ },
552
+ onTriggerEnter(handler) {
553
+ triggerEnterHandlers.add(handler);
554
+ return () => triggerEnterHandlers.delete(handler);
555
+ },
556
+ onTriggerExit(handler) {
557
+ triggerExitHandlers.add(handler);
558
+ return () => triggerExitHandlers.delete(handler);
559
+ },
560
+ debugLines(debugOptions) {
561
+ const lines = debugDraw.buildLines(world, {
562
+ ...(debugOptions?.contacts === undefined ? {} : { contacts: debugOptions.contacts }),
563
+ ...(debugOptions?.joints === undefined ? {} : { joints: debugOptions.joints }),
564
+ ...(debugOptions?.sleeping === undefined ? {} : { sleeping: debugOptions.sleeping }),
565
+ ...(debugOptions?.normalLength === undefined ? {} : { normalLength: debugOptions.normalLength }),
566
+ ...(debugOptions?.raycasts === undefined
567
+ ? {}
568
+ : {
569
+ raycasts: debugOptions.raycasts.map((ray) => ({
570
+ origin: [...ray.origin],
571
+ direction: [...ray.direction],
572
+ distance: ray.distance,
573
+ ...(ray.hit === undefined ? {} : { hit: ray.hit })
574
+ }))
575
+ })
576
+ });
577
+ return lines.map((line) => ({
578
+ from: [...line.from],
579
+ to: [...line.to],
580
+ color: [...line.color],
581
+ category: line.category
582
+ }));
583
+ },
584
+ gravity() {
585
+ return [...world.gravity];
586
+ },
587
+ setGravity(gravity) {
588
+ world.setGravity([...gravity]);
589
+ }
590
+ };
591
+ return runtime;
592
+ }
593
+ /**
594
+ * Map a declared shape name onto a solver shape.
595
+ *
596
+ * Kept private to this module: the public surface takes a name plus dimensions, so a route
597
+ * never constructs a `PhysicsShape` and never needs a deep import into `@aura3d/physics`.
598
+ */
599
+ function toPhysicsShape(shape, spec) {
600
+ const half = spec.halfExtents ?? [0.5, 0.5, 0.5];
601
+ switch (shape) {
602
+ case "sphere":
603
+ return Shape.sphere(spec.radius ?? 0.5);
604
+ case "capsule":
605
+ return Shape.capsule(spec.radius ?? 0.25, spec.halfHeight ?? 0.5);
606
+ case "plane":
607
+ return Shape.plane([0, 1, 0], spec.position?.[1] ?? 0);
608
+ case "box":
609
+ return Shape.box(half[0], half[1], half[2]);
610
+ default:
611
+ // `convexHull`, `trimesh` and `heightfield` need geometry the declaration form does
612
+ // not carry. Failing loudly beats silently substituting a box, which would look like
613
+ // a physics bug rather than a missing argument.
614
+ throw new Error(`Shape "${shape}" cannot be created from a body spec because it needs geometry. ` +
615
+ `Constructible from a spec: ${AURA_SPEC_CONSTRUCTIBLE_SHAPES.join(", ")}. ` +
616
+ "For mesh-backed ground use createMeshSurfaceQuery instead.");
617
+ }
618
+ }
619
+ //# sourceMappingURL=PhysicsRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhysicsRuntime.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/PhysicsRuntime.ts"],"names":[],"mappings":"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"}