@aura3d/engine 4.1.2 → 4.2.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 (268) hide show
  1. package/README.md +52 -730
  2. package/dist/audio/synth/SynthCueBank.d.ts.map +1 -1
  3. package/dist/audio/synth/SynthCueBank.js +11 -2
  4. package/dist/audio/synth/SynthCueBank.js.map +1 -1
  5. package/dist/audio/synth/types.d.ts +4 -0
  6. package/dist/audio/synth/types.d.ts.map +1 -1
  7. package/dist/aura3d-cli/cli.d.ts.map +1 -1
  8. package/dist/aura3d-cli/cli.js +49 -17
  9. package/dist/aura3d-cli/cli.js.map +1 -1
  10. package/dist/aura3d-cli/commands/evidence/index.d.ts +3 -0
  11. package/dist/aura3d-cli/commands/evidence/index.d.ts.map +1 -0
  12. package/dist/aura3d-cli/commands/evidence/index.js +12 -0
  13. package/dist/aura3d-cli/commands/evidence/index.js.map +1 -0
  14. package/dist/aura3d-cli/commands/evidence/judge.d.ts +18 -0
  15. package/dist/aura3d-cli/commands/evidence/judge.d.ts.map +1 -0
  16. package/dist/aura3d-cli/commands/evidence/judge.js +194 -0
  17. package/dist/aura3d-cli/commands/evidence/judge.js.map +1 -0
  18. package/dist/aura3d-cli/commands/evidence/judgeLib.d.ts +84 -0
  19. package/dist/aura3d-cli/commands/evidence/judgeLib.d.ts.map +1 -0
  20. package/dist/aura3d-cli/commands/evidence/judgeLib.js +178 -0
  21. package/dist/aura3d-cli/commands/evidence/judgeLib.js.map +1 -0
  22. package/dist/aura3d-cli/commands/registry.d.ts +1 -0
  23. package/dist/aura3d-cli/commands/registry.d.ts.map +1 -1
  24. package/dist/aura3d-cli/commands/registry.js +1 -0
  25. package/dist/aura3d-cli/commands/registry.js.map +1 -1
  26. package/dist/aura3d-cli/look/capture.d.ts +15 -7
  27. package/dist/aura3d-cli/look/capture.d.ts.map +1 -1
  28. package/dist/aura3d-cli/look/capture.js +85 -13
  29. package/dist/aura3d-cli/look/capture.js.map +1 -1
  30. package/dist/aura3d-cli/pull-bridge/adapters.d.ts +9 -1
  31. package/dist/aura3d-cli/pull-bridge/adapters.d.ts.map +1 -1
  32. package/dist/aura3d-cli/pull-bridge/adapters.js +30 -7
  33. package/dist/aura3d-cli/pull-bridge/adapters.js.map +1 -1
  34. package/dist/aura3d-cli/pull-bridge/search.d.ts +5 -0
  35. package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -1
  36. package/dist/aura3d-cli/pull-bridge/search.js +7 -1
  37. package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
  38. package/dist/aura3d-cli/pull-bridge.js +1 -1
  39. package/dist/aura3d-cli/pull-bridge.js.map +1 -1
  40. package/dist/aura3d-cli/resolve-ladder.d.ts +123 -0
  41. package/dist/aura3d-cli/resolve-ladder.d.ts.map +1 -0
  42. package/dist/aura3d-cli/resolve-ladder.js +410 -0
  43. package/dist/aura3d-cli/resolve-ladder.js.map +1 -0
  44. package/dist/create-aura3d/index.js +1 -1
  45. package/dist/debug/index.d.ts +2 -2
  46. package/dist/debug/index.d.ts.map +1 -1
  47. package/dist/debug/index.js +1 -1
  48. package/dist/debug/index.js.map +1 -1
  49. package/dist/debug/safety/frameBoundary.d.ts +33 -0
  50. package/dist/debug/safety/frameBoundary.d.ts.map +1 -0
  51. package/dist/debug/safety/frameBoundary.js +40 -0
  52. package/dist/debug/safety/frameBoundary.js.map +1 -0
  53. package/dist/debug/safety/index.d.ts +1 -0
  54. package/dist/debug/safety/index.d.ts.map +1 -1
  55. package/dist/debug/safety/index.js +1 -0
  56. package/dist/debug/safety/index.js.map +1 -1
  57. package/dist/engine/agent-api/app/actorBoneMatrixLookup.d.ts +22 -0
  58. package/dist/engine/agent-api/app/actorBoneMatrixLookup.d.ts.map +1 -0
  59. package/dist/engine/agent-api/app/actorBoneMatrixLookup.js +24 -0
  60. package/dist/engine/agent-api/app/actorBoneMatrixLookup.js.map +1 -0
  61. package/dist/engine/agent-api/app/canvas.d.ts +16 -0
  62. package/dist/engine/agent-api/app/canvas.d.ts.map +1 -1
  63. package/dist/engine/agent-api/app/canvas.js +15 -0
  64. package/dist/engine/agent-api/app/canvas.js.map +1 -1
  65. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  66. package/dist/engine/agent-api/app/createAuraApp.js +21 -3
  67. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  68. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  69. package/dist/engine/agent-api/app/frameLoop.js +21 -3
  70. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  71. package/dist/engine/agent-api/app/mountFailure.d.ts +6 -0
  72. package/dist/engine/agent-api/app/mountFailure.d.ts.map +1 -0
  73. package/dist/engine/agent-api/app/mountFailure.js +9 -0
  74. package/dist/engine/agent-api/app/mountFailure.js.map +1 -0
  75. package/dist/engine/agent-api/app/parentFit.d.ts +35 -0
  76. package/dist/engine/agent-api/app/parentFit.d.ts.map +1 -0
  77. package/dist/engine/agent-api/app/parentFit.js +36 -0
  78. package/dist/engine/agent-api/app/parentFit.js.map +1 -0
  79. package/dist/engine/agent-api/compiler/customMaterial.js +3 -2
  80. package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -1
  81. package/dist/engine/agent-api/compiler/geometry.d.ts +13 -0
  82. package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
  83. package/dist/engine/agent-api/compiler/geometry.js +30 -3
  84. package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
  85. package/dist/engine/agent-api/compiler/primitives.d.ts +1 -2
  86. package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
  87. package/dist/engine/agent-api/compiler/primitives.js +21 -4
  88. package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
  89. package/dist/engine/agent-api/index.d.ts +4 -0
  90. package/dist/engine/agent-api/index.d.ts.map +1 -1
  91. package/dist/engine/agent-api/index.js +1 -0
  92. package/dist/engine/agent-api/index.js.map +1 -1
  93. package/dist/engine/agent-api/nodes/batched.d.ts +10 -0
  94. package/dist/engine/agent-api/nodes/batched.d.ts.map +1 -1
  95. package/dist/engine/agent-api/nodes/batched.js +7 -5
  96. package/dist/engine/agent-api/nodes/batched.js.map +1 -1
  97. package/dist/engine/agent-api/nodes/builder.d.ts +13 -0
  98. package/dist/engine/agent-api/nodes/builder.d.ts.map +1 -1
  99. package/dist/engine/agent-api/nodes/builder.js +7 -3
  100. package/dist/engine/agent-api/nodes/builder.js.map +1 -1
  101. package/dist/engine/agent-api/nodes/cameras.d.ts +7 -0
  102. package/dist/engine/agent-api/nodes/cameras.d.ts.map +1 -1
  103. package/dist/engine/agent-api/nodes/cameras.js +7 -0
  104. package/dist/engine/agent-api/nodes/cameras.js.map +1 -1
  105. package/dist/engine/agent-api/nodes/chaseCamera.d.ts +122 -0
  106. package/dist/engine/agent-api/nodes/chaseCamera.d.ts.map +1 -0
  107. package/dist/engine/agent-api/nodes/chaseCamera.js +130 -0
  108. package/dist/engine/agent-api/nodes/chaseCamera.js.map +1 -0
  109. package/dist/engine/agent-api/nodes/effects.composite.d.ts +1 -0
  110. package/dist/engine/agent-api/nodes/effects.composite.d.ts.map +1 -1
  111. package/dist/engine/agent-api/nodes/effects.composite.js +2 -0
  112. package/dist/engine/agent-api/nodes/effects.composite.js.map +1 -1
  113. package/dist/engine/agent-api/nodes/effects.toon.d.ts +26 -0
  114. package/dist/engine/agent-api/nodes/effects.toon.d.ts.map +1 -0
  115. package/dist/engine/agent-api/nodes/effects.toon.js +70 -0
  116. package/dist/engine/agent-api/nodes/effects.toon.js.map +1 -0
  117. package/dist/engine/agent-api/nodes/instancedMesh.d.ts +10 -0
  118. package/dist/engine/agent-api/nodes/instancedMesh.d.ts.map +1 -1
  119. package/dist/engine/agent-api/nodes/instancedMesh.js +7 -5
  120. package/dist/engine/agent-api/nodes/instancedMesh.js.map +1 -1
  121. package/dist/engine/agent-api/nodes/prefabs/index.d.ts +3 -0
  122. package/dist/engine/agent-api/nodes/prefabs/index.d.ts.map +1 -1
  123. package/dist/engine/agent-api/nodes/prefabs/index.js +3 -0
  124. package/dist/engine/agent-api/nodes/prefabs/index.js.map +1 -1
  125. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.d.ts +32 -0
  126. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.d.ts.map +1 -0
  127. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.js +77 -0
  128. package/dist/engine/agent-api/nodes/prefabs/objectiveMarker.js.map +1 -0
  129. package/dist/engine/lanes/prd06.d.ts.map +1 -1
  130. package/dist/engine/lanes/prd06.js +1 -16
  131. package/dist/engine/lanes/prd06.js.map +1 -1
  132. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts +1 -1
  133. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts.map +1 -1
  134. package/dist/engine/production-runtime/actor/ModelTextureShare.js +1 -1
  135. package/dist/engine/production-runtime/actor/ModelTextureShare.js.map +1 -1
  136. package/dist/engine/public/index.d.ts +52 -67
  137. package/dist/engine/public/index.d.ts.map +1 -1
  138. package/dist/engine/public/index.js +59 -56
  139. package/dist/engine/public/index.js.map +1 -1
  140. package/dist/engine/qa/countedRng.d.ts +2 -0
  141. package/dist/engine/qa/countedRng.d.ts.map +1 -1
  142. package/dist/engine/qa/countedRng.js +3 -0
  143. package/dist/engine/qa/countedRng.js.map +1 -1
  144. package/dist/engine/qa/fixedStepLoop.d.ts +4 -0
  145. package/dist/engine/qa/fixedStepLoop.d.ts.map +1 -1
  146. package/dist/engine/qa/fixedStepLoop.js +6 -0
  147. package/dist/engine/qa/fixedStepLoop.js.map +1 -1
  148. package/dist/engine/qa/hooks.js +1 -1
  149. package/dist/engine/qa/hooks.js.map +1 -1
  150. package/dist/game/evidence/beacon.d.ts +16 -6
  151. package/dist/game/evidence/beacon.d.ts.map +1 -1
  152. package/dist/game/evidence/beacon.js +32 -14
  153. package/dist/game/evidence/beacon.js.map +1 -1
  154. package/dist/game/evidence/textureStatus.d.ts +24 -0
  155. package/dist/game/evidence/textureStatus.d.ts.map +1 -0
  156. package/dist/game/evidence/textureStatus.js +27 -0
  157. package/dist/game/evidence/textureStatus.js.map +1 -0
  158. package/dist/game/hud/canvasMinimap.d.ts +60 -0
  159. package/dist/game/hud/canvasMinimap.d.ts.map +1 -0
  160. package/dist/game/hud/canvasMinimap.js +62 -0
  161. package/dist/game/hud/canvasMinimap.js.map +1 -0
  162. package/dist/game/hud/compass.d.ts +16 -0
  163. package/dist/game/hud/compass.d.ts.map +1 -0
  164. package/dist/game/hud/compass.js +15 -0
  165. package/dist/game/hud/compass.js.map +1 -0
  166. package/dist/game/index.d.ts +9 -0
  167. package/dist/game/index.d.ts.map +1 -1
  168. package/dist/game/index.js +5 -0
  169. package/dist/game/index.js.map +1 -1
  170. package/dist/game/motion/boneAttach.d.ts +42 -0
  171. package/dist/game/motion/boneAttach.d.ts.map +1 -0
  172. package/dist/game/motion/boneAttach.js +166 -0
  173. package/dist/game/motion/boneAttach.js.map +1 -0
  174. package/dist/game/motion/cameraClear.d.ts +35 -0
  175. package/dist/game/motion/cameraClear.d.ts.map +1 -0
  176. package/dist/game/motion/cameraClear.js +64 -0
  177. package/dist/game/motion/cameraClear.js.map +1 -0
  178. package/dist/game/motion/doubleFrame.d.ts +37 -0
  179. package/dist/game/motion/doubleFrame.d.ts.map +1 -0
  180. package/dist/game/motion/doubleFrame.js +59 -0
  181. package/dist/game/motion/doubleFrame.js.map +1 -0
  182. package/dist/game/motion/footSlide.d.ts +32 -0
  183. package/dist/game/motion/footSlide.d.ts.map +1 -0
  184. package/dist/game/motion/footSlide.js +59 -0
  185. package/dist/game/motion/footSlide.js.map +1 -0
  186. package/dist/game/motion/impact.d.ts +113 -0
  187. package/dist/game/motion/impact.d.ts.map +1 -0
  188. package/dist/game/motion/impact.js +233 -0
  189. package/dist/game/motion/impact.js.map +1 -0
  190. package/dist/game/motion/index.d.ts +19 -0
  191. package/dist/game/motion/index.d.ts.map +1 -0
  192. package/dist/game/motion/index.js +10 -0
  193. package/dist/game/motion/index.js.map +1 -0
  194. package/dist/game/motion/locomotion.d.ts +55 -0
  195. package/dist/game/motion/locomotion.d.ts.map +1 -0
  196. package/dist/game/motion/locomotion.js +107 -0
  197. package/dist/game/motion/locomotion.js.map +1 -0
  198. package/dist/game/motion/motionGate.d.ts +41 -0
  199. package/dist/game/motion/motionGate.d.ts.map +1 -0
  200. package/dist/game/motion/motionGate.js +71 -0
  201. package/dist/game/motion/motionGate.js.map +1 -0
  202. package/dist/game/motion/presenter.d.ts +37 -0
  203. package/dist/game/motion/presenter.d.ts.map +1 -0
  204. package/dist/game/motion/presenter.js +72 -0
  205. package/dist/game/motion/presenter.js.map +1 -0
  206. package/dist/game/motion/smoothing.d.ts +34 -0
  207. package/dist/game/motion/smoothing.d.ts.map +1 -0
  208. package/dist/game/motion/smoothing.js +92 -0
  209. package/dist/game/motion/smoothing.js.map +1 -0
  210. package/dist/game/session/warmPrograms.d.ts +58 -0
  211. package/dist/game/session/warmPrograms.d.ts.map +1 -0
  212. package/dist/game/session/warmPrograms.js +63 -0
  213. package/dist/game/session/warmPrograms.js.map +1 -0
  214. package/dist/math/Random.d.ts +3 -0
  215. package/dist/math/Random.d.ts.map +1 -1
  216. package/dist/math/Random.js +7 -0
  217. package/dist/math/Random.js.map +1 -1
  218. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  219. package/dist/rendering/WebGL2Device.js +3 -4
  220. package/dist/rendering/WebGL2Device.js.map +1 -1
  221. package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
  222. package/dist/rendering/environment/EnvironmentCache.js +6 -1
  223. package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
  224. package/dist/rendering/environment/neutralEmbedded.d.ts +5 -0
  225. package/dist/rendering/environment/neutralEmbedded.d.ts.map +1 -0
  226. package/dist/rendering/environment/neutralEmbedded.js +1118 -0
  227. package/dist/rendering/environment/neutralEmbedded.js.map +1 -0
  228. package/dist/rendering/environment/neutralEmbeddedLoader.d.ts +5 -0
  229. package/dist/rendering/environment/neutralEmbeddedLoader.d.ts.map +1 -0
  230. package/dist/rendering/environment/neutralEmbeddedLoader.js +32 -0
  231. package/dist/rendering/environment/neutralEmbeddedLoader.js.map +1 -0
  232. package/dist/rendering/geometry/Primitives.d.ts +4 -1
  233. package/dist/rendering/geometry/Primitives.d.ts.map +1 -1
  234. package/dist/rendering/geometry/Primitives.js +5 -1
  235. package/dist/rendering/geometry/Primitives.js.map +1 -1
  236. package/dist/rendering/renderer/CullingBatching.d.ts.map +1 -1
  237. package/dist/rendering/renderer/CullingBatching.js +3 -7
  238. package/dist/rendering/renderer/CullingBatching.js.map +1 -1
  239. package/dist/rendering/renderer/InstanceBounds.d.ts +18 -0
  240. package/dist/rendering/renderer/InstanceBounds.d.ts.map +1 -0
  241. package/dist/rendering/renderer/InstanceBounds.js +68 -0
  242. package/dist/rendering/renderer/InstanceBounds.js.map +1 -0
  243. package/dist/rendering/renderer/RenderShared.d.ts.map +1 -1
  244. package/dist/rendering/renderer/RenderShared.js +3 -7
  245. package/dist/rendering/renderer/RenderShared.js.map +1 -1
  246. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
  247. package/dist/rendering/shadows/DirectionalCascadeFitter.js +19 -10
  248. package/dist/rendering/shadows/DirectionalCascadeFitter.js.map +1 -1
  249. package/dist/rendering/webgl2/LdrPostprocessShader.d.ts +24 -0
  250. package/dist/rendering/webgl2/LdrPostprocessShader.d.ts.map +1 -0
  251. package/dist/rendering/webgl2/LdrPostprocessShader.js +233 -0
  252. package/dist/rendering/webgl2/LdrPostprocessShader.js.map +1 -0
  253. package/dist/rendering/webgl2/LegacyPost.d.ts +5 -3
  254. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  255. package/dist/rendering/webgl2/LegacyPost.js +23 -191
  256. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  257. package/package.json +25 -25
  258. package/templates/cinematic-scene/package.json +4 -3
  259. package/templates/mini-game/index.html +3 -1
  260. package/templates/mini-game/package.json +4 -3
  261. package/templates/mini-game/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  262. package/templates/mini-game/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  263. package/templates/mini-game/src/main.ts +1 -1
  264. package/templates/product-viewer/package.json +4 -3
  265. package/templates/production-asset-inspector/package.json +1 -1
  266. package/templates/production-material-studio/package.json +1 -1
  267. package/templates/production-product-configurator/package.json +1 -1
  268. package/templates/production-product-viewer/package.json +1 -1
@@ -3,8 +3,9 @@
3
3
  * Explicit named exports only: the §6.6 keep-set (game/template/benchmark
4
4
  * import tally + contracts + lane contracts) as live exports, plus the
5
5
  * union of still-consumed names as @deprecated re-exports kept at 4.0.0
6
- * (§6.6 step 3). Generated by tools/export-surface/scaffold.ts — regenerate with
7
- * `pnpm exec tsx --tsconfig tsconfig.base.json tools/export-surface/scaffold.ts --write`.
6
+ * (§6.6 step 3). Originally generated by tools/export-surface/scaffold.ts; since 4.1.3 the
7
+ * deprecation annotations are hand-maintained (live public paths un-deprecated, every message
8
+ * names a replacement that exists or says there is none). Do not regenerate over them.
8
9
  */
9
10
  // Lane provide() side-effects — how lane contract implementations reach ".".
10
11
  import "../lanes/index.js";
@@ -12,115 +13,117 @@ import "../lanes/index.js";
12
13
  export { AnimationController, appExtensionsAll, asRuntimeCompiled, atmosphere, auditArtDirection, AuraColorParseError, AuraSceneBuilder, batched, bindGameTouchControls, bindRuntimeCompiled, blendSkyBandColor, camera, cameras, captionCueAtTime, captureFromUrl, characterAssembly, characters, charts, checkSpatialInvariants, city, clearFocus, Clock, cloneSkinned, combatFrameAdvantage, compilePromptEpisodePlan, compilePromptPlanV2, compilerSlot, compileScene, composeWorldMatrix, compute, computeLineDistances, createAnimationPerformanceCoverage, createAnimationRenderOutputPackageMetadata, createArchitectureKit, createAssetDiagnostics, createAudioStemManifest, createAuraApp, createAuraRouteHealthSnapshot, createAuraText3DGeometry, createAuraVoiceBridgePackage, createAuraVoiceVisemeTrack, createCameraPathFromPreset, createCinematicKit, createCollisionLayers, createCombatAi, createDiagnosticsPanel, createDigitalTwinKit, createEnvironment, createFightingGameKit, createFrameLoop, createGame, createGameApp, createGameArcadeVehicle, createGameAudio, createGlbBlendshapeVisemeCue, createInitialDiagnostics, createMeshSurfaceQuery, createPrimitiveMouthVisemeCues, createProductConfiguratorKit, createProductionRuntimeCollectedLights, createPromptAnimationDeterministicScreenshotFixtureMetadata, createShotPlaybackPlan, createSmartCityKit, createVehicleChassis, createVehicleDriverAi, decomposeMatrix, defineAuraAssets, defineDubMap, defineModelAssets, definePromptPlan, DIAGNOSTIC_ONLY_FIELDS, DIAGNOSTICS_SECTION_KEYS, diagnosticsSectionsAll, distanceLod, distributeInRegion, effects, enforceFrameBudget, environments, eulerToQuaternion, fat, fitSizeToRegion, focusCameraIntent, focusObject, focusSemanticRegion, game, gameFeel, games, geometry, glbVisemeBlendshapeExample, groundedFittedModelPosition, groundedRenderedAssetPlacement, group, groups, helpers, installShotPlayback, instances, interactions, labels, lights, line, lines, lookLint, looks, loop, material, model, modelsEnabledFromUrl, nodeHandleExtensionFor, nodeHandleExtensionsAll, nodeHandlerFor, nodeHandlersAll, normalizeLinePositions, optionCoverageRows, parseAuraColor, parseAuraColorSrgb, particles, physics, placedBounds, placedBoundsFromAsset, planLayeredSceneComposition, planScatterInstances, planSkyBackdrop, platformerCompositionSpec, points, postPresets, prefabs, primitiveMouthVisemeExample, primitives, product, promptPlanToScene, promptRecipes, raycast, raycastFirst, registerAppExtension, registerDiagnosticsSection, registerEnvironmentSource, registerLookLintRule, registerNodeHandleExtension, registerNodeHandler, registerOptionCoverage, renderer, resolveBoundsAnchor, resolveCameraFrame, resolveChaseFraming, resolveEnvironment, resolveQrFlags, resolveSemanticRegion, sampleAuraVoiceBridgeAtTime, sampleCameraPath, sampleShotPlaybackPlan, sampleVisemeTrack, scatterWindOffset, scene, sceneKits, SCREEN_FEEL_BLACKBOARD_KEY, segments, setCompilerImpl, shadows, skyBandCountForRamp, snapshotDiagnostics, solar, solveCombatFrameData, solvePlatformerMotion, sprite, sprites, StubActorAnimationApi, StubAppAtmosphere, StubAppEffects, stubCameraRigFactories, StubFeelBus, StubLightingRuntime, StubModelMaterialHandle, StubPostSurface, StubTimeController, surfaces, text3D, timeline, tsl, ui, updateCompiledScene, validateAuraVoiceBridgePackage, validateCombatFrameData, vehicleChassisSpecFromBounds, WIND_CHUNK, workflows, worldQueriesSlot } from "../agent-api/index.js";
13
14
  // QA and replay kit (docs/api/qa-kit.md).
14
15
  export { createCountedRng, createFixedStepLoop, fixedStepLoop, installQaHooks, qaErrorGlobalName, qaHookGlobalName, readQaParams } from "../qa/index.js";
16
+ // Skinned and typed GLB actors: attach them to the app render loop (docs/api/skinned-actors.md).
17
+ export { attachRootRenderSource } from "../agent-api/index.js";
15
18
  // ── Deprecated union (kept at 4.0.0 per §6.6 step 3 — removes in 5.0.0; each names its destination) ──
16
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
19
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
17
20
  export { createScatterRandom, mergeStatic, mergeStaticByKey, scatterAlongPath, scatterInArea, scatterTransforms, splitScatterByDistance } from "../agent-api/index.js";
18
- /** @deprecated Use `@aura3d/engine/renderer`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
21
+ /** @deprecated Use `@aura3d/engine/renderer`. Removal from the root planned for 5.0.0. */
19
22
  export { A3DRenderer } from "../agent-api/index.js";
20
- /** @deprecated Use `@aura3d/engine/animation`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
23
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
21
24
  export { A3DAppLifecycle } from "../agent-api/index.js";
22
25
  export { AnimationAction } from "../agent-api/index.js";
23
- /** @deprecated Use `@aura3d/engine/animation`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
26
+ /** @deprecated Use `@aura3d/animation`. Removal from the root planned for 5.0.0. */
24
27
  export { AnimationClip } from "../agent-api/index.js";
25
- /** @deprecated Use `@aura3d/engine/animation`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
28
+ /** @deprecated Use `@aura3d/animation`. Removal from the root planned for 5.0.0. */
26
29
  export { AnimationLayer } from "../agent-api/index.js";
27
- /** @deprecated Use `@aura3d/engine/animation`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
30
+ /** @deprecated Use `@aura3d/animation`. Removal from the root planned for 5.0.0. */
28
31
  export { AnimationMixer } from "../agent-api/index.js";
29
- /** @deprecated Use `@aura3d/engine/animation`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
32
+ /** @deprecated Use `@aura3d/animation`. Removal from the root planned for 5.0.0. */
30
33
  export { AnimationTrack } from "../agent-api/index.js";
31
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
34
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
32
35
  export { AuraNodeBuilder } from "../agent-api/index.js";
33
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
36
+ /** @deprecated Use `@aura3d/engine/devtools`. Removal from the root planned for 5.0.0. */
34
37
  export { captureAuraAppScreenshot } from "../agent-api/index.js";
35
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
38
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
36
39
  export { captureScreenshot } from "../agent-api/index.js";
37
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
40
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
38
41
  export { character } from "../agent-api/index.js";
39
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
42
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
40
43
  export { collectAuraSceneEvidence } from "../agent-api/index.js";
41
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
44
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
42
45
  export { collectPromptAnimationEvidence } from "../agent-api/index.js";
43
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
46
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
44
47
  export { compilePromptPlan } from "../agent-api/index.js";
45
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
48
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
46
49
  export { compositeMetallicRoughnessPixels } from "../agent-api/index.js";
47
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
50
+ /** @deprecated Use `createAuraApp`. Removal from the root planned for 5.0.0. */
48
51
  export { createA3DApp } from "../agent-api/index.js";
49
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
52
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
50
53
  export { createAnimationController } from "../agent-api/index.js";
51
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
54
+ /** @deprecated Use `@aura3d/engine/devtools`. Removal from the root planned for 5.0.0. */
52
55
  export { createAssetCompatibilityReport } from "../agent-api/index.js";
53
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
56
+ /** @deprecated Use `@aura3d/workflows`. Removal from the root planned for 5.0.0. */
54
57
  export { createAssetViewerWorkflow } from "../agent-api/index.js";
55
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
58
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
56
59
  export { createCaptionTimingProof } from "../agent-api/index.js";
57
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
60
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
58
61
  export { createExternalParityEnvironmentPipeline } from "../agent-api/index.js";
59
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
62
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
60
63
  export { createGameAppRuntime } from "../agent-api/index.js";
61
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
64
+ /** @deprecated Use `@aura3d/workflows`. Removal from the root planned for 5.0.0. */
62
65
  export { createInteractiveSceneWorkflow } from "../agent-api/index.js";
63
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
66
+ /** @deprecated Use `@aura3d/workflows`. Removal from the root planned for 5.0.0. */
64
67
  export { createProductConfiguratorWorkflow } from "../agent-api/index.js";
65
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
68
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
66
69
  export { createProductionPrimitiveTextureIntent } from "../agent-api/index.js";
67
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
70
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
68
71
  export { crowds } from "../agent-api/index.js";
69
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
72
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
70
73
  export { decals } from "../agent-api/index.js";
71
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
74
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
72
75
  export { describeProductionSpotShadow } from "../agent-api/index.js";
73
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
76
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
74
77
  export { editor } from "../agent-api/index.js";
75
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
78
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
76
79
  export { evaluatePromptAnimationPublishReadiness } from "../agent-api/index.js";
77
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
80
+ /** @deprecated Use `@aura3d/engine/devtools`. Removal from the root planned for 5.0.0. */
78
81
  export { gameAssetValidation } from "../agent-api/index.js";
79
- /** @deprecated Use `@aura3d/engine/assets`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
82
+ /** @deprecated Use `@aura3d/assets`. Removal from the root planned for 5.0.0. */
80
83
  export { GLTFLoader } from "../agent-api/index.js";
81
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
84
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
82
85
  export { inspectAsset } from "../agent-api/index.js";
83
- /** @deprecated Use `@aura3d/engine/assets`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
86
+ /** @deprecated Use `@aura3d/assets`. Removal from the root planned for 5.0.0. */
84
87
  export { inspectGLTFAsset } from "../agent-api/index.js";
85
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
88
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
86
89
  export { listExternalParityEnvironmentTargets } from "../agent-api/index.js";
87
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
90
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
88
91
  export { loadAsset } from "../agent-api/index.js";
89
- /** @deprecated Use `@aura3d/engine/assets`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
92
+ /** @deprecated Use `@aura3d/assets`. Removal from the root planned for 5.0.0. */
90
93
  export { loadRenderableAsset } from "../agent-api/index.js";
91
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
94
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
92
95
  export { meshVehicleSurface } from "../agent-api/index.js";
93
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
96
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
94
97
  export { mipChainBytesCoarseToFine } from "../agent-api/index.js";
95
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
98
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
96
99
  export { navigation } from "../agent-api/index.js";
97
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
100
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
98
101
  export { normalizeSceneSnapshot } from "../agent-api/index.js";
99
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
102
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
100
103
  export { normalizeTextureBudgetBytes } from "../agent-api/index.js";
101
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
104
+ /** @deprecated Use `@aura3d/engine/devtools`. Removal from the root planned for 5.0.0. */
102
105
  export { quaterniusGameReadyFighterValidationContract } from "../agent-api/index.js";
103
- /** @deprecated Use `@aura3d/engine/renderer`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
106
+ /** @deprecated Use `@aura3d/engine/renderer`. Removal from the root planned for 5.0.0. */
104
107
  export { Renderer } from "../agent-api/index.js";
105
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
108
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
106
109
  export { resolveProductionRuntimeShadowTuning } from "../agent-api/index.js";
107
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
110
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
108
111
  export { resolveProductionShadowCasterIndex } from "../agent-api/index.js";
109
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
112
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
110
113
  export { sky } from "../agent-api/index.js";
111
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
114
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
112
115
  export { summarizeExternalParityGLTFCorpus } from "../agent-api/index.js";
113
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
116
+ /** @deprecated Use typed `model(assets.x)`; raw model URLs are rejected in public examples. Removal from the root planned for 5.0.0. */
114
117
  export { unsafeModelUrl } from "../agent-api/index.js";
115
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
118
+ /** @deprecated Internal or advanced helper outside the supported authoring path; no replacement. Removal from the root planned for 5.0.0. */
116
119
  export { upgradeProductionPrimitiveTextures } from "../agent-api/index.js";
117
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
120
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
118
121
  export { validatePlatformerMotion } from "../agent-api/index.js";
119
- /** @deprecated Use `@aura3d/engine/devtools`. Kept at 4.0.0 — removes in 5.0.0 once its blocking lane's request lands. */
122
+ /** @deprecated Use `@aura3d/engine/devtools`. Removal from the root planned for 5.0.0. */
120
123
  export { validateQuaterniusGameReadyFighterAsset } from "../agent-api/index.js";
121
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
124
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
122
125
  export { water } from "../agent-api/index.js";
123
- /** @deprecated No replacement — removes in 5.0.0. Kept at 4.0.0 once its blocking lane's request lands. */
126
+ // Live public path (not deprecated): documented and used by shipped templates, games or skills.
124
127
  export { weather } from "../agent-api/index.js";
125
128
  // ── Lane-facing leaves consumed by shipped tests (prd02/prd03 contract
126
129
  // impls) — these names live on leaf modules, not the agent-api barrel, so
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/engine/src/public/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/engine/src/public/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export interface QaCountedRng {
3
3
  readonly seed: number;
4
4
  /** Number of draws taken since the last `reset`. */
5
5
  readonly count: number;
6
+ /** Alias of `count`: draws taken since the last `reset`. */
7
+ readonly draws: number;
6
8
  /** Uniform float in [0, 1). */
7
9
  next(): number;
8
10
  /** Uniform float in [min, max). */
@@ -1 +1 @@
1
- {"version":3,"file":"countedRng.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/countedRng.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,IAAI,IAAI,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,sCAAsC;IACtC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C,iFAAiF;IACjF,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,SAAI,GAAG,YAAY,CAoCvD"}
1
+ {"version":3,"file":"countedRng.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/countedRng.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,IAAI,IAAI,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACxC,sCAAsC;IACtC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/C,iFAAiF;IACjF,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,SAAI,GAAG,YAAY,CAuCvD"}
@@ -17,6 +17,9 @@ export function createCountedRng(seed = 1) {
17
17
  get count() {
18
18
  return count;
19
19
  },
20
+ get draws() {
21
+ return count;
22
+ },
20
23
  next,
21
24
  range(min, max) {
22
25
  if (min > max)
@@ -1 +1 @@
1
- {"version":3,"file":"countedRng.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/countedRng.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,CAAC;IACvC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;IACvB,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,GAAW,EAAE;QACxB,KAAK,EAAE,CAAC;QACR,KAAK,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC,CAAC;IACF,OAAO;QACL,IAAI,IAAI;YACN,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI;QACJ,KAAK,CAAC,GAAG,EAAE,GAAG;YACZ,IAAI,GAAG,GAAG,GAAG;gBAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAC1D,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QACpC,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,YAAY;YACnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBACrF,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,IAAI,QAAQ,KAAK,SAAS;gBAAE,WAAW,GAAG,QAAQ,CAAC;YACnD,KAAK,GAAG,WAAW,KAAK,CAAC,CAAC;YAC1B,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"countedRng.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/countedRng.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,CAAC;IACvC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;IACvB,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,GAAW,EAAE;QACxB,KAAK,EAAE,CAAC;QACR,KAAK,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC,CAAC;IACF,OAAO;QACL,IAAI,IAAI;YACN,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI;QACJ,KAAK,CAAC,GAAG,EAAE,GAAG;YACZ,IAAI,GAAG,GAAG,GAAG;gBAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;YAC1D,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QACpC,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,YAAY;YACnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;gBACrF,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,IAAI,QAAQ,KAAK,SAAS;gBAAE,WAAW,GAAG,QAAQ,CAAC;YACnD,KAAK,GAAG,WAAW,KAAK,CAAC,CAAC;YAC1B,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -30,6 +30,10 @@ export interface FixedStepLoop {
30
30
  readonly steps: number;
31
31
  /** Seconds of unsimulated time carried to the next frame. */
32
32
  readonly accumulator: number;
33
+ /** Progress through the current step, `accumulator / stepSeconds` clamped to 0..1: the blend factor for render interpolation. */
34
+ readonly alpha: number;
35
+ /** Drop the carried time so a restart does not inherit a partial step from before it. */
36
+ resetAccumulator(): void;
33
37
  /** Run one animation frame at `nowMs` (what the scheduler calls); returns the steps it executed. */
34
38
  tick(nowMs: number): number;
35
39
  /** Run exactly `count` steps now, ignoring the clock, then render once. Returns the step count. */
@@ -1 +1 @@
1
- {"version":3,"file":"fixedStepLoop.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,qHAAqH;IACrH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,kDAAkD;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,wFAAwF;IACxF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,uGAAuG;IACvG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oGAAoG;IACpG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,mGAAmG;IACnG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;CAC7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA0EhF"}
1
+ {"version":3,"file":"fixedStepLoop.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,qHAAqH;IACrH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,kDAAkD;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,oFAAoF;IACpF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,wFAAwF;IACxF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,sGAAsG;IACtG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,uGAAuG;IACvG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iIAAiI;IACjI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yFAAyF;IACzF,gBAAgB,IAAI,IAAI,CAAC;IACzB,oGAAoG;IACpG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,mGAAmG;IACnG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;CAC7E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAgFhF"}
@@ -32,6 +32,9 @@ export function createFixedStepLoop(options) {
32
32
  get accumulator() {
33
33
  return accumulator;
34
34
  },
35
+ get alpha() {
36
+ return Math.max(0, Math.min(1, accumulator / stepSeconds));
37
+ },
35
38
  tick(nowMs) {
36
39
  const frameSeconds = Math.min(maxFrame, Math.max(minFrame, (nowMs - last) / 1000));
37
40
  last = nowMs;
@@ -49,6 +52,9 @@ export function createFixedStepLoop(options) {
49
52
  options.render?.(frameSeconds);
50
53
  return executed;
51
54
  },
55
+ resetAccumulator() {
56
+ accumulator = 0;
57
+ },
52
58
  advance(count, beforeStep) {
53
59
  const n = Math.max(0, Math.trunc(count));
54
60
  for (let i = 0; i < n; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"fixedStepLoop.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,IAAI,GAAG,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;IAClD,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,EAA2B,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,MAAe,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAgB,CAAC,CAAC,CAAC;IAE/F,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,MAAe,CAAC;IACpB,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACjC,KAAK,EAAE,CAAC;IACV,CAAC,CAAC;IAEF,MAAM,IAAI,GAAkB;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,IAAI,OAAO;YACT,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,KAAK;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,WAAW;YACb,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,KAAK;YACR,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACnF,IAAI,GAAG,KAAK,CAAC;YACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAAE,OAAO,CAAC,CAAC;YACvE,WAAW,IAAI,YAAY,CAAC;YAC5B,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,WAAW,IAAI,WAAW,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;gBAC3D,WAAW,IAAI,WAAW,CAAC;gBAC3B,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,CAAC;YACb,CAAC;YACD,IAAI,QAAQ,KAAK,UAAU,IAAI,WAAW,IAAI,WAAW;gBAAE,WAAW,GAAG,CAAC,CAAC;YAC3E,OAAO,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;YAC/B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,UAAU;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;YAC9B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK;YACH,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,CAAC,KAAa,EAAQ,EAAE;gBACpC,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;YACF,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI;YACF,OAAO,GAAG,KAAK,CAAC;YAChB,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;KACF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"fixedStepLoop.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/fixedStepLoop.ts"],"names":[],"mappings":"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"}
@@ -74,7 +74,7 @@ export function installQaHooks(name, options) {
74
74
  routeHealth: () => options.routeHealth?.() ?? null,
75
75
  nodeCount: () => options.nodeCount?.() ?? 0
76
76
  };
77
- const hooks = { ...standard, ...(options.extras ?? {}) };
77
+ const hooks = Object.defineProperties({ ...standard }, Object.getOwnPropertyDescriptors(options.extras ?? {}));
78
78
  target[globalName] = hooks;
79
79
  return {
80
80
  hooks,
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../packages/engine/src/qa/hooks.ts"],"names":[],"mappings":"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"}
@@ -8,18 +8,28 @@
8
8
  import type { GameBeacon, GameSessionState } from "../../engine/index.js";
9
9
  export interface BeaconOptions {
10
10
  readonly route: string;
11
- readonly getState: () => GameSessionState;
12
- readonly getFrame: () => number;
13
- readonly getFirstFrameAt: () => number | null;
11
+ /** Defaults to "playing" for routes that do not use a game session. */
12
+ readonly getState?: () => GameSessionState;
13
+ readonly getFrame?: () => number;
14
+ readonly getFirstFrameAt?: () => number | null;
14
15
  /** Live mounted app for audit lanes (beacon.app.scene / app.diagnostics()). */
15
16
  readonly getApp?: () => GameBeacon["app"] | undefined;
16
17
  readonly getSession?: () => unknown;
18
+ /** Window globals that receive the raw evidence object on every `publishEvidence` (legacy readers such as `__AURA3D_GAME_EVIDENCE__`). */
19
+ readonly evidenceGlobals?: readonly string[];
17
20
  readonly win?: {
18
21
  __AURA3D_GAME__?: GameBeacon;
19
- };
22
+ } & Record<string, unknown>;
20
23
  }
21
- export declare function installGameBeacon(options: BeaconOptions): {
24
+ export interface BeaconHandle {
22
25
  refresh(): void;
26
+ /**
27
+ * Publish a route evidence snapshot on the beacon: the beacon fields (route, state, frame, ...) plus the
28
+ * evidence fields, evidence winning on a shared key. Getters on the evidence object stay lazy. The snapshot
29
+ * is also assigned to `evidenceGlobals`. Call once per frame (or per change); each call replaces the beacon.
30
+ */
31
+ publishEvidence(evidence: object): void;
23
32
  dispose(): void;
24
- };
33
+ }
34
+ export declare function installGameBeacon(options: BeaconOptions): BeaconHandle;
25
35
  //# sourceMappingURL=beacon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"beacon.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/beacon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,gBAAgB,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC9C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;CACjD;AAQD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG;IAAE,OAAO,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAqD9F"}
1
+ {"version":3,"file":"beacon.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/beacon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC/C,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;IACpC,0IAA0I;IAC1I,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,UAAU,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,IAAI,IAAI,CAAC;CACjB;AAQD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAmEtE"}
@@ -9,34 +9,51 @@ const FRAME_REFRESH_MS = 250; // <= 4 Hz
9
9
  export function installGameBeacon(options) {
10
10
  const win = options.win ?? (typeof window !== "undefined" ? window : undefined);
11
11
  if (win === undefined) {
12
- return { refresh() { }, dispose() { } };
12
+ return { refresh() { }, publishEvidence() { }, dispose() { } };
13
13
  }
14
14
  const sessionStartedAt = Date.now();
15
15
  let firstFrameAt = null;
16
16
  let frame = 0;
17
- let state = options.getState();
17
+ const readState = options.getState ?? (() => "playing");
18
+ const readFrame = options.getFrame ?? (() => 0);
19
+ const readFirstFrameAt = options.getFirstFrameAt ?? (() => null);
20
+ let evidence = null;
21
+ let state = readState();
18
22
  let timer = null;
19
23
  const publish = () => {
20
24
  const app = options.getApp?.();
21
- win.__AURA3D_GAME__ = Object.freeze({
22
- route: options.route,
23
- state,
24
- frame,
25
- firstFrameAt,
26
- sessionStartedAt,
27
- ...(app !== undefined ? { app, scene: app.scene } : {}),
28
- ...(options.getSession !== undefined ? { session: options.getSession() } : {})
29
- });
25
+ const beacon = { route: options.route, state, frame, firstFrameAt, sessionStartedAt };
26
+ if (evidence !== null)
27
+ Object.defineProperties(beacon, Object.getOwnPropertyDescriptors(evidence));
28
+ // Live handles stay reachable for audit lanes but are not enumerable, so JSON.stringify and remote capture serialize the beacon (app.post is circular).
29
+ const hidden = (value) => ({ value, enumerable: false, writable: false, configurable: false });
30
+ const free = (key) => !Object.prototype.hasOwnProperty.call(beacon, key);
31
+ if (app !== undefined && free("app"))
32
+ Object.defineProperty(beacon, "app", hidden(app));
33
+ if (app !== undefined && free("scene"))
34
+ Object.defineProperty(beacon, "scene", hidden(app.scene));
35
+ if (options.getSession !== undefined && free("session"))
36
+ Object.defineProperty(beacon, "session", hidden(options.getSession()));
37
+ win.__AURA3D_GAME__ = Object.freeze(beacon);
30
38
  };
31
39
  /** Re-publish now — call from session "state" events and first-frame. */
32
40
  const refresh = () => {
33
- state = options.getState();
34
- firstFrameAt = options.getFirstFrameAt();
41
+ state = readState();
42
+ firstFrameAt = readFirstFrameAt();
43
+ publish();
44
+ };
45
+ const publishEvidence = (next) => {
46
+ evidence = next;
47
+ for (const name of options.evidenceGlobals ?? [])
48
+ win[name] = next;
49
+ state = readState();
50
+ frame = readFrame();
51
+ firstFrameAt = readFirstFrameAt();
35
52
  publish();
36
53
  };
37
54
  if (typeof setInterval === "function") {
38
55
  timer = setInterval(() => {
39
- const next = options.getFrame();
56
+ const next = readFrame();
40
57
  if (next !== frame) {
41
58
  frame = next;
42
59
  publish();
@@ -49,6 +66,7 @@ export function installGameBeacon(options) {
49
66
  publish();
50
67
  return {
51
68
  refresh,
69
+ publishEvidence,
52
70
  dispose() {
53
71
  if (timer !== null)
54
72
  clearInterval(timer);
@@ -1 +1 @@
1
- {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/beacon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,UAAU;AAExC,MAAM,UAAU,iBAAiB,CAAC,OAAsB;IACtD,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAE,MAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,KAAI,CAAC,EAAE,OAAO,KAAI,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAqB,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjD,IAAI,KAAK,GAA0C,IAAI,CAAC;IAExD,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/B,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK;YACL,KAAK;YACL,YAAY;YACZ,gBAAgB;YAChB,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/E,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,yEAAyE;IACzE,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3B,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QACzC,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YACvB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACnE,KAA2B,CAAC,KAAK,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;IACV,OAAO;QACL,OAAO;QACP,OAAO;YACL,IAAI,KAAK,KAAK,IAAI;gBAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"beacon.js","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/beacon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /** One textured-material row of `app.diagnostics().renderer.runtime.texturedMaterials`. */
2
+ export interface TexturedMaterialRow {
3
+ readonly nodeName: string;
4
+ readonly status: string;
5
+ }
6
+ export interface TextureUpgradeSummary {
7
+ readonly total: number;
8
+ readonly textured: number;
9
+ readonly pending: number;
10
+ readonly fallback: number;
11
+ /** Rows the upgrade pass has not reached yet, or that carry no texture. */
12
+ readonly none: number;
13
+ /** Node name to status, for waiting on specific nodes. */
14
+ readonly byNode: Readonly<Record<string, string>>;
15
+ }
16
+ /** Reads the engine's per-material texture upgrade status. Textures upgrade one material at a time after mount, so a frame taken early shows untextured (white) models. */
17
+ export declare function summarizeTextureUpgrade(diagnostics: unknown): TextureUpgradeSummary;
18
+ /** True when every node whose name matches `test` is textured (or has settled on its scalar fallback), and at least one matches. */
19
+ export declare function texturedNodesReady(summary: TextureUpgradeSummary, test: (nodeName: string) => boolean): {
20
+ readonly ready: boolean;
21
+ readonly waiting: readonly string[];
22
+ readonly matched: number;
23
+ };
24
+ //# sourceMappingURL=textureStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textureStatus.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/textureStatus.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAED,2KAA2K;AAC3K,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAcnF;AAED,oIAAoI;AACpI,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAIlM"}
@@ -0,0 +1,27 @@
1
+ /** Reads the engine's per-material texture upgrade status. Textures upgrade one material at a time after mount, so a frame taken early shows untextured (white) models. */
2
+ export function summarizeTextureUpgrade(diagnostics) {
3
+ const rows = (diagnostics?.renderer?.runtime?.texturedMaterials) ?? [];
4
+ const byNode = {};
5
+ let textured = 0, pending = 0, fallback = 0, none = 0;
6
+ for (const row of rows) {
7
+ const previous = byNode[row.nodeName];
8
+ // A node with several resources is as ready as its least ready resource.
9
+ byNode[row.nodeName] = previous === undefined || previous === "textured" ? row.status : previous;
10
+ if (row.status === "textured")
11
+ textured += 1;
12
+ else if (row.status === "pending")
13
+ pending += 1;
14
+ else if (row.status === "fallback")
15
+ fallback += 1;
16
+ else
17
+ none += 1;
18
+ }
19
+ return { total: rows.length, textured, pending, fallback, none, byNode };
20
+ }
21
+ /** True when every node whose name matches `test` is textured (or has settled on its scalar fallback), and at least one matches. */
22
+ export function texturedNodesReady(summary, test) {
23
+ const names = Object.keys(summary.byNode).filter(test);
24
+ const waiting = names.filter((name) => summary.byNode[name] !== "textured" && summary.byNode[name] !== "fallback");
25
+ return { ready: names.length > 0 && waiting.length === 0, waiting, matched: names.length };
26
+ }
27
+ //# sourceMappingURL=textureStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textureStatus.js","sourceRoot":"","sources":["../../../../../packages/game/src/evidence/textureStatus.ts"],"names":[],"mappings":"AAiBA,2KAA2K;AAC3K,MAAM,UAAU,uBAAuB,CAAC,WAAoB;IAC1D,MAAM,IAAI,GAAG,CAAE,WAAsH,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;IACnL,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,yEAAyE;QACzE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjG,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;YAAE,QAAQ,IAAI,CAAC,CAAC;aACxC,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,CAAC;aAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU;YAAE,QAAQ,IAAI,CAAC,CAAC;;YAC7C,IAAI,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED,oIAAoI;AACpI,MAAM,UAAU,kBAAkB,CAAC,OAA8B,EAAE,IAAmC;IACpG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;IACnH,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AAC7F,CAAC"}