@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,81 @@
1
+ /**
2
+ * Reusable touch/pointer bindings for on-screen game controls.
3
+ *
4
+ * ## Why this is in the reusable layer
5
+ *
6
+ * The replicability metric's repeated-cluster detector (added in defect 113) found this code duplicated
7
+ * **byte-for-byte** between Skyline Runner and Turbo Drift Circuit: a `bindHoldControl` that translates
8
+ * pointer press/release into synthetic keyboard events, plus a `pulseKey` for momentary buttons. Two routes
9
+ * had independently authored the same 13 lines, and a third would have copied them again.
10
+ *
11
+ * That is precisely the duplication the brief asks the metric to surface and the reusable layer to absorb.
12
+ * Every public game route needs on-screen controls -- the route-primary probe gates
13
+ * `interactive-controls-outside-viewport` -- so this is genre-independent infrastructure, not art direction.
14
+ *
15
+ * ## Why synthetic keyboard events rather than a direct input API
16
+ *
17
+ * The routes already own a keyboard action map (`game.input({ actions: ... })`) that is the single source of
18
+ * truth for what a key does. Dispatching real `KeyboardEvent`s means a touch press and a physical key press
19
+ * travel the *same* path, so the gameplay proof that keyboard input changes state also covers the buttons.
20
+ * A parallel input path would need its own proof and could drift from the keyboard behaviour.
21
+ *
22
+ * Bindings are additive and idempotent per element: re-binding the same id replaces its listeners rather than
23
+ * stacking them, because a route that re-runs setup after a reset would otherwise fire one keydown per bind.
24
+ */
25
+ /** A control that holds its key down while pressed, e.g. throttle or move-left. */
26
+ export interface HoldControlBinding {
27
+ /** DOM id of the button element. Missing elements are skipped, not thrown on. */
28
+ readonly elementId: string;
29
+ /** `KeyboardEvent.code` to synthesise, e.g. `"KeyA"`. */
30
+ readonly code: string;
31
+ }
32
+ /** A control that fires one press-and-release, e.g. jump or reset. */
33
+ export interface PulseControlBinding extends HoldControlBinding {
34
+ /** Milliseconds the synthetic key stays down. Defaults to 40ms. */
35
+ readonly holdMs?: number | undefined;
36
+ }
37
+ /**
38
+ * Minimal DOM surface this module needs.
39
+ *
40
+ * Declared structurally so the module is testable without a DOM environment. This repository runs its unit
41
+ * suite in plain Node with no `jsdom`, which is a deliberate convention: browser behaviour is proven in
42
+ * Playwright against a real browser, not against a DOM emulator. Accepting an injectable host keeps the
43
+ * *binding logic* -- press/release pairing, idempotence, teardown -- under fast unit coverage without
44
+ * pretending a shim is a browser.
45
+ */
46
+ export interface TouchControlHost {
47
+ getElementById(id: string): TouchControlElement | null;
48
+ dispatchKey(code: string, type: "keydown" | "keyup"): void;
49
+ setTimer(callback: () => void, delayMs: number): unknown;
50
+ clearTimer(handle: unknown): void;
51
+ }
52
+ /** The element operations a control binding performs. */
53
+ export interface TouchControlElement {
54
+ addEventListener(type: string, listener: () => void): void;
55
+ removeEventListener(type: string, listener: () => void): void;
56
+ }
57
+ export interface GameControlBindingSpec {
58
+ readonly hold?: readonly HoldControlBinding[] | undefined;
59
+ readonly pulse?: readonly PulseControlBinding[] | undefined;
60
+ /**
61
+ * Override the DOM/timer host. Defaults to `window`/`document`, so routes pass nothing.
62
+ * Exists for unit coverage of the binding logic; see `TouchControlHost`.
63
+ */
64
+ readonly host?: TouchControlHost | undefined;
65
+ }
66
+ export interface GameControlBindingResult {
67
+ /** Element ids that were found and bound. */
68
+ readonly bound: readonly string[];
69
+ /** Element ids named in the spec but absent from the DOM, so a typo is visible rather than silent. */
70
+ readonly missing: readonly string[];
71
+ /** Remove every listener this call attached. */
72
+ dispose(): void;
73
+ }
74
+ /**
75
+ * Bind on-screen controls to synthetic keyboard events.
76
+ *
77
+ * Returns which ids were bound and which were missing, so a route can assert its own control contract
78
+ * instead of discovering a typo through a failing probe.
79
+ */
80
+ export declare function bindGameTouchControls(spec: GameControlBindingSpec): GameControlBindingResult;
81
+ //# sourceMappingURL=TouchControlBinding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TouchControlBinding.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/TouchControlBinding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAED,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC3D,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC5D;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,6CAA6C;IAC7C,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sGAAsG;IACtG,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gDAAgD;IAChD,OAAO,IAAI,IAAI,CAAC;CACjB;AAeD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,wBAAwB,CAyE5F"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Reusable touch/pointer bindings for on-screen game controls.
3
+ *
4
+ * ## Why this is in the reusable layer
5
+ *
6
+ * The replicability metric's repeated-cluster detector (added in defect 113) found this code duplicated
7
+ * **byte-for-byte** between Skyline Runner and Turbo Drift Circuit: a `bindHoldControl` that translates
8
+ * pointer press/release into synthetic keyboard events, plus a `pulseKey` for momentary buttons. Two routes
9
+ * had independently authored the same 13 lines, and a third would have copied them again.
10
+ *
11
+ * That is precisely the duplication the brief asks the metric to surface and the reusable layer to absorb.
12
+ * Every public game route needs on-screen controls -- the route-primary probe gates
13
+ * `interactive-controls-outside-viewport` -- so this is genre-independent infrastructure, not art direction.
14
+ *
15
+ * ## Why synthetic keyboard events rather than a direct input API
16
+ *
17
+ * The routes already own a keyboard action map (`game.input({ actions: ... })`) that is the single source of
18
+ * truth for what a key does. Dispatching real `KeyboardEvent`s means a touch press and a physical key press
19
+ * travel the *same* path, so the gameplay proof that keyboard input changes state also covers the buttons.
20
+ * A parallel input path would need its own proof and could drift from the keyboard behaviour.
21
+ *
22
+ * Bindings are additive and idempotent per element: re-binding the same id replaces its listeners rather than
23
+ * stacking them, because a route that re-runs setup after a reset would otherwise fire one keydown per bind.
24
+ */
25
+ /** Tracks attached listeners per element id so a re-bind replaces rather than stacks. */
26
+ const attached = new Map();
27
+ /** The real browser host: synthetic keyboard events on `window`, elements from `document`. */
28
+ function browserHost() {
29
+ return {
30
+ getElementById: (id) => (typeof document === "undefined" ? null : document.getElementById(id)),
31
+ dispatchKey: (code, type) => window.dispatchEvent(new KeyboardEvent(type, { code, bubbles: true })),
32
+ setTimer: (callback, delayMs) => setTimeout(callback, delayMs),
33
+ clearTimer: (handle) => clearTimeout(handle)
34
+ };
35
+ }
36
+ /**
37
+ * Bind on-screen controls to synthetic keyboard events.
38
+ *
39
+ * Returns which ids were bound and which were missing, so a route can assert its own control contract
40
+ * instead of discovering a typo through a failing probe.
41
+ */
42
+ export function bindGameTouchControls(spec) {
43
+ const host = spec.host ?? browserHost();
44
+ const bound = [];
45
+ const missing = [];
46
+ const teardown = [];
47
+ const claim = (elementId) => {
48
+ const element = host.getElementById(elementId);
49
+ if (!element) {
50
+ missing.push(elementId);
51
+ return undefined;
52
+ }
53
+ // Replace any previous binding for this id; see the note on idempotence above.
54
+ attached.get(elementId)?.();
55
+ bound.push(elementId);
56
+ return element;
57
+ };
58
+ for (const control of spec.hold ?? []) {
59
+ const element = claim(control.elementId);
60
+ if (!element)
61
+ continue;
62
+ const press = () => host.dispatchKey(control.code, "keydown");
63
+ const release = () => host.dispatchKey(control.code, "keyup");
64
+ element.addEventListener("pointerdown", press);
65
+ element.addEventListener("pointerup", release);
66
+ // `pointercancel` and `pointerleave` both matter: a finger sliding off a button must not latch the key on.
67
+ element.addEventListener("pointercancel", release);
68
+ element.addEventListener("pointerleave", release);
69
+ const remove = () => {
70
+ element.removeEventListener("pointerdown", press);
71
+ element.removeEventListener("pointerup", release);
72
+ element.removeEventListener("pointercancel", release);
73
+ element.removeEventListener("pointerleave", release);
74
+ // Release on teardown, so disposing mid-press cannot leave the key stuck down.
75
+ release();
76
+ attached.delete(control.elementId);
77
+ };
78
+ attached.set(control.elementId, remove);
79
+ teardown.push(remove);
80
+ }
81
+ for (const control of spec.pulse ?? []) {
82
+ const element = claim(control.elementId);
83
+ if (!element)
84
+ continue;
85
+ const holdMs = Math.max(1, control.holdMs ?? 40);
86
+ const timers = new Set();
87
+ const press = () => {
88
+ host.dispatchKey(control.code, "keydown");
89
+ const timer = host.setTimer(() => {
90
+ timers.delete(timer);
91
+ host.dispatchKey(control.code, "keyup");
92
+ }, holdMs);
93
+ timers.add(timer);
94
+ };
95
+ element.addEventListener("click", press);
96
+ const remove = () => {
97
+ element.removeEventListener("click", press);
98
+ // Clear pending release timers, or a disposed control can still dispatch after teardown.
99
+ for (const timer of timers)
100
+ host.clearTimer(timer);
101
+ timers.clear();
102
+ attached.delete(control.elementId);
103
+ };
104
+ attached.set(control.elementId, remove);
105
+ teardown.push(remove);
106
+ }
107
+ return {
108
+ bound,
109
+ missing,
110
+ dispose: () => {
111
+ for (const remove of teardown)
112
+ remove();
113
+ }
114
+ };
115
+ }
116
+ //# sourceMappingURL=TouchControlBinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TouchControlBinding.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/TouchControlBinding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Reusable vehicle chassis: contact, suspension, attitude and wheel visuals.
3
+ *
4
+ * ## The defects this addresses
5
+ *
6
+ * Turbo Drift Circuit drove a 2D kinematic point (`game.racing`) and then pinned
7
+ * the car's rendered Y to a single literal, `TRACK_SURFACE_Y`. That has three
8
+ * visible consequences:
9
+ *
10
+ * 1. **The car sinks into the tarmac.** A model grounded on a frozen plane cannot
11
+ * respond to the surface it is actually over. There is no contact model, so
12
+ * there is nothing to hold the tyres on the road.
13
+ * 2. **No suspension.** The chassis never pitches under braking, never rolls in a
14
+ * corner, and the wheels never travel. A car that stays perfectly level at
15
+ * 111 km/h reads as a sprite sliding on a plane, which is what it is.
16
+ * 3. **Wheels do not turn or steer.** Nothing derived wheel spin from speed or
17
+ * wheel yaw from steering input.
18
+ *
19
+ * This module is the reusable answer. It takes a planar vehicle state -- position,
20
+ * heading, speed, steering, lateral slip -- plus a surface query, and produces the
21
+ * full 3D pose a renderer needs: chassis height from four independent contact
22
+ * points, pitch and roll from load transfer, per-wheel suspension travel, wheel
23
+ * spin and steer angles, and a contact report that states whether every tyre is
24
+ * on the ground.
25
+ *
26
+ * It is pure: no renderer, no DOM, no asset loading. That makes vehicle behaviour
27
+ * unit-testable, which is the only way "the car is grounded" becomes a fact rather
28
+ * than an opinion about a screenshot.
29
+ */
30
+ export type VehicleVec3 = readonly [number, number, number];
31
+ /** Surface sample under one contact point. */
32
+ export interface VehicleSurfaceSample {
33
+ /** World Y of the surface at the queried point. */
34
+ readonly height: number;
35
+ /** Surface normal. Defaults to world up when a track is flat. */
36
+ readonly normal?: VehicleVec3 | undefined;
37
+ /** Grip multiplier, 1 on tarmac and lower off-track. */
38
+ readonly grip?: number | undefined;
39
+ }
40
+ /**
41
+ * Surface the vehicle drives on.
42
+ *
43
+ * A route supplies this from its own track topology. Because the chassis asks the
44
+ * surface for a height at each wheel rather than being told one number, swapping
45
+ * the track asset cannot leave the car buried: there is no frozen plane to be
46
+ * wrong about.
47
+ */
48
+ export interface VehicleSurface {
49
+ sample(x: number, z: number): VehicleSurfaceSample;
50
+ }
51
+ /** Flat surface at a fixed height, for prototypes and tests. */
52
+ export declare function flatVehicleSurface(height?: number, grip?: number): VehicleSurface;
53
+ export interface VehicleChassisSpec {
54
+ /** Distance between front and rear axles, world units. */
55
+ readonly wheelbase: number;
56
+ /** Distance between left and right wheels, world units. */
57
+ readonly trackWidth: number;
58
+ /** Rolling radius of a wheel, world units. Drives visual spin rate. */
59
+ readonly wheelRadius: number;
60
+ /**
61
+ * Ride height: distance from the wheel contact patch to the chassis origin at
62
+ * rest. Derived from the asset's own bounds by the caller, never guessed.
63
+ */
64
+ readonly rideHeight: number;
65
+ /** Suspension travel available above and below rest, world units. */
66
+ readonly suspensionTravel?: number | undefined;
67
+ /**
68
+ * Spring stiffness as a normalized rate. Higher is firmer: the chassis resists
69
+ * pitch and roll more and settles faster.
70
+ */
71
+ readonly springRate?: number | undefined;
72
+ /** Damping ratio. 1 is critically damped; below 1 oscillates. */
73
+ readonly dampingRatio?: number | undefined;
74
+ /** Maximum steering angle at the front wheels, radians. */
75
+ readonly maxSteerAngle?: number | undefined;
76
+ /** Maximum chassis pitch under full braking or acceleration, radians. */
77
+ readonly maxPitch?: number | undefined;
78
+ /** Maximum chassis roll at full lateral load, radians. */
79
+ readonly maxRoll?: number | undefined;
80
+ }
81
+ export interface VehiclePlanarState {
82
+ /** World X of the chassis centre. */
83
+ readonly x: number;
84
+ /** World Z of the chassis centre. */
85
+ readonly z: number;
86
+ /** Heading in radians, measured so that heading 0 faces +X. */
87
+ readonly heading: number;
88
+ /** Forward speed in world units per second. */
89
+ readonly speed: number;
90
+ /** Steering input, -1..1. */
91
+ readonly steer: number;
92
+ /** Throttle input, 0..1. */
93
+ readonly throttle?: number | undefined;
94
+ /** Brake input, 0..1. */
95
+ readonly brake?: number | undefined;
96
+ /** Lateral slip, 0..1, used for roll and tyre scrub. */
97
+ readonly slip?: number | undefined;
98
+ }
99
+ export type VehicleWheelId = "front-left" | "front-right" | "rear-left" | "rear-right";
100
+ export interface VehicleWheelPose {
101
+ readonly id: VehicleWheelId;
102
+ /** World position of the wheel centre. */
103
+ readonly position: VehicleVec3;
104
+ /** Steering angle applied to this wheel, radians. Zero for rear wheels. */
105
+ readonly steerAngle: number;
106
+ /** Accumulated rolling rotation, radians. */
107
+ readonly spin: number;
108
+ /** Suspension compression, 0 at full extension and 1 at full compression. */
109
+ readonly compression: number;
110
+ /** True when this wheel's contact patch is on the surface. */
111
+ readonly grounded: boolean;
112
+ /** Distance from the contact patch to the surface. Zero when grounded. */
113
+ readonly contactGap: number;
114
+ }
115
+ export interface VehiclePose {
116
+ /**
117
+ * Chassis origin in world space: the body's centre height, as a rigid body would
118
+ * report it.
119
+ *
120
+ * Use this for a model whose pivot is at its own centre. For a model rendered with
121
+ * `scaleMode: "fit"`, use {@link groundedPosition} instead -- the safe renderer grounds
122
+ * a fitted model's *lowest point* on its node position, so placing the body centre
123
+ * there lifts the whole vehicle by its ride height. That mismatch is visible as a car
124
+ * hovering above the road, which is the same class of defect as the sinking it
125
+ * replaced, in the opposite direction.
126
+ */
127
+ readonly position: VehicleVec3;
128
+ /**
129
+ * Contact-plane position: the height the lowest tyre contact patch sits at.
130
+ *
131
+ * This is what a `scaleMode: "fit"` model's node position should be set to.
132
+ */
133
+ readonly groundedPosition: VehicleVec3;
134
+ /** Euler rotation: pitch on X, yaw on Y, roll on Z. */
135
+ readonly rotation: VehicleVec3;
136
+ readonly wheels: readonly VehicleWheelPose[];
137
+ /** Height of the lowest contact patch above the surface. */
138
+ readonly contactGap: number;
139
+ /** True when every wheel is on the ground. */
140
+ readonly grounded: boolean;
141
+ /** Mean suspension compression across all four wheels. */
142
+ readonly averageCompression: number;
143
+ }
144
+ export interface VehicleChassisTelemetry {
145
+ readonly speed: number;
146
+ readonly speedKph: number;
147
+ readonly pitch: number;
148
+ readonly roll: number;
149
+ readonly steerAngle: number;
150
+ readonly wheelSpinRate: number;
151
+ readonly groundedWheels: number;
152
+ readonly maxContactGap: number;
153
+ readonly averageCompression: number;
154
+ readonly surfaceGrip: number;
155
+ }
156
+ export interface VehicleChassis {
157
+ readonly kind: "aura-vehicle-chassis";
158
+ readonly spec: Required<Omit<VehicleChassisSpec, never>>;
159
+ /** Advance suspension and wheel state, returning the resolved 3D pose. */
160
+ step(dt: number, state: VehiclePlanarState): VehiclePose;
161
+ /** Most recent pose without advancing. */
162
+ pose(): VehiclePose;
163
+ telemetry(): VehicleChassisTelemetry;
164
+ /** Return to rest at a planar state, clearing suspension and spin history. */
165
+ reset(state: VehiclePlanarState): VehiclePose;
166
+ }
167
+ /**
168
+ * Create a vehicle chassis.
169
+ *
170
+ * `rideHeight` and `wheelRadius` should be derived from the vehicle asset's own
171
+ * bounds. That is the difference between this and the constant it replaces: the
172
+ * caller states a proportion of a measured asset, not a number that happened to
173
+ * look right once.
174
+ */
175
+ export declare function createVehicleChassis(spec: VehicleChassisSpec, surface: VehicleSurface): VehicleChassis;
176
+ /**
177
+ * Derive chassis geometry from a vehicle asset's rendered bounds.
178
+ *
179
+ * This is what removes the need for a `CAR_SCENE_HEIGHT`-style constant. Given the
180
+ * size the asset actually renders at, the wheelbase, track width, wheel radius and
181
+ * ride height follow from standard automotive proportions, so a different car
182
+ * produces a different chassis instead of inheriting the old one's numbers.
183
+ */
184
+ export declare function vehicleChassisSpecFromBounds(size: VehicleVec3, options?: {
185
+ /** Fraction of the body length between the axles. Real cars sit near 0.6. */
186
+ readonly wheelbaseFraction?: number | undefined;
187
+ /** Fraction of the body width between the wheel centres. */
188
+ readonly trackFraction?: number | undefined;
189
+ /** Fraction of body height taken by wheel diameter. */
190
+ readonly wheelDiameterFraction?: number | undefined;
191
+ }): VehicleChassisSpec;
192
+ //# sourceMappingURL=VehicleChassis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VehicleChassis.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/VehicleChassis.ts"],"names":[],"mappings":"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"}