@aura3d/engine 4.0.8 → 4.1.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 (329) hide show
  1. package/dist/audio/index.d.ts +1 -0
  2. package/dist/audio/index.d.ts.map +1 -1
  3. package/dist/audio/index.js +1 -0
  4. package/dist/audio/index.js.map +1 -1
  5. package/dist/audio/synth/SampleSlices.d.ts +88 -0
  6. package/dist/audio/synth/SampleSlices.d.ts.map +1 -0
  7. package/dist/audio/synth/SampleSlices.js +185 -0
  8. package/dist/audio/synth/SampleSlices.js.map +1 -0
  9. package/dist/audio/synth/SynthCueBank.d.ts +102 -0
  10. package/dist/audio/synth/SynthCueBank.d.ts.map +1 -0
  11. package/dist/audio/synth/SynthCueBank.js +323 -0
  12. package/dist/audio/synth/SynthCueBank.js.map +1 -0
  13. package/dist/audio/synth/SynthLoops.d.ts +77 -0
  14. package/dist/audio/synth/SynthLoops.d.ts.map +1 -0
  15. package/dist/audio/synth/SynthLoops.js +147 -0
  16. package/dist/audio/synth/SynthLoops.js.map +1 -0
  17. package/dist/audio/synth/index.d.ts +9 -0
  18. package/dist/audio/synth/index.d.ts.map +1 -0
  19. package/dist/audio/synth/index.js +5 -0
  20. package/dist/audio/synth/index.js.map +1 -0
  21. package/dist/audio/synth/notes.d.ts +18 -0
  22. package/dist/audio/synth/notes.d.ts.map +1 -0
  23. package/dist/audio/synth/notes.js +35 -0
  24. package/dist/audio/synth/notes.js.map +1 -0
  25. package/dist/audio/synth/types.d.ts +84 -0
  26. package/dist/audio/synth/types.d.ts.map +1 -0
  27. package/dist/audio/synth/types.js +2 -0
  28. package/dist/audio/synth/types.js.map +1 -0
  29. package/dist/aura3d-cli/cli-help.d.ts.map +1 -1
  30. package/dist/aura3d-cli/cli-help.js +6 -0
  31. package/dist/aura3d-cli/cli-help.js.map +1 -1
  32. package/dist/aura3d-cli/cli.js +33 -0
  33. package/dist/aura3d-cli/cli.js.map +1 -1
  34. package/dist/aura3d-cli/commands/assets/gltfToolkit.d.ts +25 -0
  35. package/dist/aura3d-cli/commands/assets/gltfToolkit.d.ts.map +1 -0
  36. package/dist/aura3d-cli/commands/assets/gltfToolkit.js +59 -0
  37. package/dist/aura3d-cli/commands/assets/gltfToolkit.js.map +1 -0
  38. package/dist/aura3d-cli/commands/assets/importMeshy.d.ts +50 -0
  39. package/dist/aura3d-cli/commands/assets/importMeshy.d.ts.map +1 -0
  40. package/dist/aura3d-cli/commands/assets/importMeshy.js +112 -0
  41. package/dist/aura3d-cli/commands/assets/importMeshy.js.map +1 -0
  42. package/dist/aura3d-cli/commands/assets/index.d.ts +6 -0
  43. package/dist/aura3d-cli/commands/assets/index.d.ts.map +1 -0
  44. package/dist/aura3d-cli/commands/assets/index.js +54 -0
  45. package/dist/aura3d-cli/commands/assets/index.js.map +1 -0
  46. package/dist/aura3d-cli/commands/assets/mergeClips.d.ts +44 -0
  47. package/dist/aura3d-cli/commands/assets/mergeClips.d.ts.map +1 -0
  48. package/dist/aura3d-cli/commands/assets/mergeClips.js +103 -0
  49. package/dist/aura3d-cli/commands/assets/mergeClips.js.map +1 -0
  50. package/dist/aura3d-cli/commands/assets/optimize.d.ts +54 -0
  51. package/dist/aura3d-cli/commands/assets/optimize.d.ts.map +1 -0
  52. package/dist/aura3d-cli/commands/assets/optimize.js +76 -0
  53. package/dist/aura3d-cli/commands/assets/optimize.js.map +1 -0
  54. package/dist/aura3d-cli/commands/assets/optimizeVerb.d.ts +9 -0
  55. package/dist/aura3d-cli/commands/assets/optimizeVerb.d.ts.map +1 -0
  56. package/dist/aura3d-cli/commands/assets/optimizeVerb.js +40 -0
  57. package/dist/aura3d-cli/commands/assets/optimizeVerb.js.map +1 -0
  58. package/dist/aura3d-cli/commands/meshyLedger.d.ts +103 -0
  59. package/dist/aura3d-cli/commands/meshyLedger.d.ts.map +1 -0
  60. package/dist/aura3d-cli/commands/meshyLedger.js +308 -0
  61. package/dist/aura3d-cli/commands/meshyLedger.js.map +1 -0
  62. package/dist/aura3d-cli/commands/prd05/index.d.ts.map +1 -1
  63. package/dist/aura3d-cli/commands/prd05/index.js +8 -2
  64. package/dist/aura3d-cli/commands/prd05/index.js.map +1 -1
  65. package/dist/aura3d-cli/commands/registry.d.ts +1 -0
  66. package/dist/aura3d-cli/commands/registry.d.ts.map +1 -1
  67. package/dist/aura3d-cli/commands/registry.js +1 -0
  68. package/dist/aura3d-cli/commands/registry.js.map +1 -1
  69. package/dist/create-aura3d/index.js +1 -1
  70. package/dist/debug/index.d.ts +2 -0
  71. package/dist/debug/index.d.ts.map +1 -1
  72. package/dist/debug/index.js +1 -0
  73. package/dist/debug/index.js.map +1 -1
  74. package/dist/debug/safety/blackFrame.d.ts +119 -0
  75. package/dist/debug/safety/blackFrame.d.ts.map +1 -0
  76. package/dist/debug/safety/blackFrame.js +326 -0
  77. package/dist/debug/safety/blackFrame.js.map +1 -0
  78. package/dist/debug/safety/diagnosticsPanel.d.ts +70 -0
  79. package/dist/debug/safety/diagnosticsPanel.d.ts.map +1 -0
  80. package/dist/debug/safety/diagnosticsPanel.js +123 -0
  81. package/dist/debug/safety/diagnosticsPanel.js.map +1 -0
  82. package/dist/debug/safety/guard.d.ts +51 -0
  83. package/dist/debug/safety/guard.d.ts.map +1 -0
  84. package/dist/debug/safety/guard.js +64 -0
  85. package/dist/debug/safety/guard.js.map +1 -0
  86. package/dist/debug/safety/index.d.ts +50 -0
  87. package/dist/debug/safety/index.d.ts.map +1 -0
  88. package/dist/debug/safety/index.js +71 -0
  89. package/dist/debug/safety/index.js.map +1 -0
  90. package/dist/debug/safety/switches.d.ts +27 -0
  91. package/dist/debug/safety/switches.d.ts.map +1 -0
  92. package/dist/debug/safety/switches.js +23 -0
  93. package/dist/debug/safety/switches.js.map +1 -0
  94. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  95. package/dist/engine/agent-api/app/createAuraApp.js +6 -0
  96. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  97. package/dist/engine/agent-api/app/frameLoop.d.ts +1 -1
  98. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  99. package/dist/engine/agent-api/app/frameLoop.js +8 -1
  100. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  101. package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
  102. package/dist/engine/agent-api/app/runtimeNodes.js +15 -0
  103. package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
  104. package/dist/engine/agent-api/assets/productionModels.d.ts +58 -0
  105. package/dist/engine/agent-api/assets/productionModels.d.ts.map +1 -0
  106. package/dist/engine/agent-api/assets/productionModels.js +103 -0
  107. package/dist/engine/agent-api/assets/productionModels.js.map +1 -0
  108. package/dist/engine/agent-api/compiler/customMaterial.d.ts +12 -0
  109. package/dist/engine/agent-api/compiler/customMaterial.d.ts.map +1 -1
  110. package/dist/engine/agent-api/compiler/customMaterial.js +23 -17
  111. package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -1
  112. package/dist/engine/agent-api/compiler/errors.d.ts +1 -1
  113. package/dist/engine/agent-api/compiler/errors.d.ts.map +1 -1
  114. package/dist/engine/agent-api/compiler/errors.js.map +1 -1
  115. package/dist/engine/agent-api/compiler/lines.d.ts.map +1 -1
  116. package/dist/engine/agent-api/compiler/lines.js +10 -1
  117. package/dist/engine/agent-api/compiler/lines.js.map +1 -1
  118. package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
  119. package/dist/engine/agent-api/compiler/renderInput.js +8 -0
  120. package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
  121. package/dist/engine/agent-api/diagnostics.d.ts +5 -0
  122. package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
  123. package/dist/engine/agent-api/diagnostics.js +15 -1
  124. package/dist/engine/agent-api/diagnostics.js.map +1 -1
  125. package/dist/engine/agent-api/game-kits/ballFlight.d.ts +145 -0
  126. package/dist/engine/agent-api/game-kits/ballFlight.d.ts.map +1 -0
  127. package/dist/engine/agent-api/game-kits/ballFlight.js +308 -0
  128. package/dist/engine/agent-api/game-kits/ballFlight.js.map +1 -0
  129. package/dist/engine/agent-api/game-kits/index.d.ts +9 -5
  130. package/dist/engine/agent-api/game-kits/index.d.ts.map +1 -1
  131. package/dist/engine/agent-api/game-kits/index.js +1 -0
  132. package/dist/engine/agent-api/game-kits/index.js.map +1 -1
  133. package/dist/engine/agent-api/game-kits/racketAthleteRig.d.ts +107 -0
  134. package/dist/engine/agent-api/game-kits/racketAthleteRig.d.ts.map +1 -0
  135. package/dist/engine/agent-api/game-kits/racketAthleteRig.js +178 -0
  136. package/dist/engine/agent-api/game-kits/racketAthleteRig.js.map +1 -0
  137. package/dist/engine/agent-api/game-kits/racketGeometry.d.ts +8 -0
  138. package/dist/engine/agent-api/game-kits/racketGeometry.d.ts.map +1 -0
  139. package/dist/engine/agent-api/game-kits/racketGeometry.js +73 -0
  140. package/dist/engine/agent-api/game-kits/racketGeometry.js.map +1 -0
  141. package/dist/engine/agent-api/game-kits/racketScoring.d.ts +53 -0
  142. package/dist/engine/agent-api/game-kits/racketScoring.d.ts.map +1 -0
  143. package/dist/engine/agent-api/game-kits/racketScoring.js +69 -0
  144. package/dist/engine/agent-api/game-kits/racketScoring.js.map +1 -0
  145. package/dist/engine/agent-api/game-kits/racketSports.d.ts +20 -6
  146. package/dist/engine/agent-api/game-kits/racketSports.d.ts.map +1 -1
  147. package/dist/engine/agent-api/game-kits/racketSports.js +15 -74
  148. package/dist/engine/agent-api/game-kits/racketSports.js.map +1 -1
  149. package/dist/engine/agent-api/index.d.ts +7 -0
  150. package/dist/engine/agent-api/index.d.ts.map +1 -1
  151. package/dist/engine/agent-api/index.js +5 -0
  152. package/dist/engine/agent-api/index.js.map +1 -1
  153. package/dist/engine/agent-api/nodes/batched.d.ts.map +1 -1
  154. package/dist/engine/agent-api/nodes/batched.js +63 -3
  155. package/dist/engine/agent-api/nodes/batched.js.map +1 -1
  156. package/dist/engine/agent-api/nodes/batchedState.d.ts +5 -0
  157. package/dist/engine/agent-api/nodes/batchedState.d.ts.map +1 -1
  158. package/dist/engine/agent-api/nodes/batchedState.js +10 -0
  159. package/dist/engine/agent-api/nodes/batchedState.js.map +1 -1
  160. package/dist/engine/agent-api/nodes/instances.js +1 -2
  161. package/dist/engine/agent-api/nodes/instances.js.map +1 -1
  162. package/dist/engine/agent-api/nodes/lines.d.ts.map +1 -1
  163. package/dist/engine/agent-api/nodes/lines.js +2 -1
  164. package/dist/engine/agent-api/nodes/lines.js.map +1 -1
  165. package/dist/engine/agent-api/nodes/mergeStatic.d.ts +26 -0
  166. package/dist/engine/agent-api/nodes/mergeStatic.d.ts.map +1 -0
  167. package/dist/engine/agent-api/nodes/mergeStatic.js +126 -0
  168. package/dist/engine/agent-api/nodes/mergeStatic.js.map +1 -0
  169. package/dist/engine/agent-api/nodes/scatter.d.ts +116 -0
  170. package/dist/engine/agent-api/nodes/scatter.d.ts.map +1 -0
  171. package/dist/engine/agent-api/nodes/scatter.js +211 -0
  172. package/dist/engine/agent-api/nodes/scatter.js.map +1 -0
  173. package/dist/engine/agent-api/nodes/scene.d.ts +9 -1
  174. package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
  175. package/dist/engine/agent-api/nodes/scene.js +28 -2
  176. package/dist/engine/agent-api/nodes/scene.js.map +1 -1
  177. package/dist/engine/agent-api/nodes/types.d.ts +8 -0
  178. package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
  179. package/dist/engine/contracts/stubs/game.d.ts +0 -8
  180. package/dist/engine/contracts/stubs/game.d.ts.map +1 -1
  181. package/dist/engine/contracts/stubs/game.js +6 -0
  182. package/dist/engine/contracts/stubs/game.js.map +1 -1
  183. package/dist/engine/deprecated/advanced-runtime.js +2 -2
  184. package/dist/engine/deprecated/apps.js +2 -2
  185. package/dist/engine/deprecated/assets-browser.js +2 -2
  186. package/dist/engine/deprecated/contracts.js +2 -2
  187. package/dist/engine/deprecated/media-node.js +2 -2
  188. package/dist/engine/deprecated/production-runtime.js +2 -2
  189. package/dist/engine/deprecated/rendering-production-runtime.js +2 -2
  190. package/dist/engine/deprecated/rendering-webgpu.js +2 -2
  191. package/dist/engine/deprecated/rendering.js +2 -2
  192. package/dist/engine/deprecated/workflows-production.js +2 -2
  193. package/dist/engine/index.d.ts +1 -0
  194. package/dist/engine/index.d.ts.map +1 -1
  195. package/dist/engine/index.js +1 -0
  196. package/dist/engine/index.js.map +1 -1
  197. package/dist/engine/instances-model/InstancedModel.d.ts.map +1 -1
  198. package/dist/engine/instances-model/InstancedModel.js +2 -5
  199. package/dist/engine/instances-model/InstancedModel.js.map +1 -1
  200. package/dist/engine/production-runtime/TypedGLBActor.d.ts +6 -0
  201. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  202. package/dist/engine/production-runtime/TypedGLBActor.js +8 -1
  203. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  204. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts +38 -0
  205. package/dist/engine/production-runtime/actor/ModelTextureShare.d.ts.map +1 -0
  206. package/dist/engine/production-runtime/actor/ModelTextureShare.js +65 -0
  207. package/dist/engine/production-runtime/actor/ModelTextureShare.js.map +1 -0
  208. package/dist/engine/public/index.d.ts +71 -67
  209. package/dist/engine/public/index.d.ts.map +1 -1
  210. package/dist/engine/public/index.js +59 -54
  211. package/dist/engine/public/index.js.map +1 -1
  212. package/dist/engine/qa/countedRng.d.ts +16 -0
  213. package/dist/engine/qa/countedRng.d.ts.map +1 -0
  214. package/dist/engine/qa/countedRng.js +40 -0
  215. package/dist/engine/qa/countedRng.js.map +1 -0
  216. package/dist/engine/qa/fixedStepLoop.d.ts +43 -0
  217. package/dist/engine/qa/fixedStepLoop.d.ts.map +1 -0
  218. package/dist/engine/qa/fixedStepLoop.js +83 -0
  219. package/dist/engine/qa/fixedStepLoop.js.map +1 -0
  220. package/dist/engine/qa/hooks.d.ts +80 -0
  221. package/dist/engine/qa/hooks.d.ts.map +1 -0
  222. package/dist/engine/qa/hooks.js +95 -0
  223. package/dist/engine/qa/hooks.js.map +1 -0
  224. package/dist/engine/qa/index.d.ts +10 -0
  225. package/dist/engine/qa/index.d.ts.map +1 -0
  226. package/dist/engine/qa/index.js +6 -0
  227. package/dist/engine/qa/index.js.map +1 -0
  228. package/dist/engine/qa/params.d.ts +38 -0
  229. package/dist/engine/qa/params.d.ts.map +1 -0
  230. package/dist/engine/qa/params.js +35 -0
  231. package/dist/engine/qa/params.js.map +1 -0
  232. package/dist/game/capture/captureFromUrl.d.ts +1 -1
  233. package/dist/game/capture/captureFromUrl.d.ts.map +1 -1
  234. package/dist/game/capture/index.d.ts +1 -1
  235. package/dist/game/capture/index.d.ts.map +1 -1
  236. package/dist/game/components.d.ts +1 -1
  237. package/dist/game/components.d.ts.map +1 -1
  238. package/dist/game/createGame.d.ts +1 -1
  239. package/dist/game/createGame.d.ts.map +1 -1
  240. package/dist/game/createGame.js +1 -1
  241. package/dist/game/createGame.js.map +1 -1
  242. package/dist/game/evidence/beacon.d.ts +1 -1
  243. package/dist/game/evidence/beacon.d.ts.map +1 -1
  244. package/dist/game/flagDefault.d.ts +8 -0
  245. package/dist/game/flagDefault.d.ts.map +1 -0
  246. package/dist/game/flagDefault.js +28 -0
  247. package/dist/game/flagDefault.js.map +1 -0
  248. package/dist/game/index.d.ts +4 -2
  249. package/dist/game/index.d.ts.map +1 -1
  250. package/dist/game/index.js +10 -3
  251. package/dist/game/index.js.map +1 -1
  252. package/dist/game/input/bindingStore.d.ts +87 -0
  253. package/dist/game/input/bindingStore.d.ts.map +1 -0
  254. package/dist/game/input/bindingStore.js +164 -0
  255. package/dist/game/input/bindingStore.js.map +1 -0
  256. package/dist/game/session/GameSession.d.ts +2 -2
  257. package/dist/game/session/GameSession.d.ts.map +1 -1
  258. package/dist/game/session/GameSession.js +1 -1
  259. package/dist/game/session/GameSession.js.map +1 -1
  260. package/dist/rendering/ForwardPass.d.ts +5 -0
  261. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  262. package/dist/rendering/ForwardPass.js +75 -2
  263. package/dist/rendering/ForwardPass.js.map +1 -1
  264. package/dist/rendering/ShaderFailures.d.ts +77 -0
  265. package/dist/rendering/ShaderFailures.d.ts.map +1 -0
  266. package/dist/rendering/ShaderFailures.js +141 -0
  267. package/dist/rendering/ShaderFailures.js.map +1 -0
  268. package/dist/rendering/ShaderLibrary.js +5 -5
  269. package/dist/rendering/ShaderLibraryCore.js +1 -1
  270. package/dist/rendering/WebGL2Device.js +1 -1
  271. package/dist/rendering/WebGL2Device.js.map +1 -1
  272. package/dist/rendering/WebGPUDevice.js +1 -1
  273. package/dist/rendering/index.d.ts +2 -0
  274. package/dist/rendering/index.d.ts.map +1 -1
  275. package/dist/rendering/index.js +2 -0
  276. package/dist/rendering/index.js.map +1 -1
  277. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts +1 -1
  278. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts.map +1 -1
  279. package/dist/rendering/output/ToneMappingOperators.glsl.js +2 -0
  280. package/dist/rendering/output/ToneMappingOperators.glsl.js.map +1 -1
  281. package/dist/rendering/post/v2Stages.d.ts.map +1 -1
  282. package/dist/rendering/post/v2Stages.js +4 -0
  283. package/dist/rendering/post/v2Stages.js.map +1 -1
  284. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +2 -2
  285. package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
  286. package/dist/rendering/program/chunks/shadow_forward.glsl.js +1 -1
  287. package/dist/rendering/shaders/chunks/author/colorspace.glsl.d.ts +8 -0
  288. package/dist/rendering/shaders/chunks/author/colorspace.glsl.d.ts.map +1 -0
  289. package/dist/rendering/shaders/chunks/author/colorspace.glsl.js +20 -0
  290. package/dist/rendering/shaders/chunks/author/colorspace.glsl.js.map +1 -0
  291. package/dist/rendering/shaders/chunks/author/fog.glsl.d.ts +3 -0
  292. package/dist/rendering/shaders/chunks/author/fog.glsl.d.ts.map +1 -0
  293. package/dist/rendering/shaders/chunks/author/fog.glsl.js +18 -0
  294. package/dist/rendering/shaders/chunks/author/fog.glsl.js.map +1 -0
  295. package/dist/rendering/shaders/chunks/author/index.d.ts +16 -0
  296. package/dist/rendering/shaders/chunks/author/index.d.ts.map +1 -0
  297. package/dist/rendering/shaders/chunks/author/index.js +77 -0
  298. package/dist/rendering/shaders/chunks/author/index.js.map +1 -0
  299. package/dist/rendering/shaders/chunks/author/math.glsl.d.ts +3 -0
  300. package/dist/rendering/shaders/chunks/author/math.glsl.d.ts.map +1 -0
  301. package/dist/rendering/shaders/chunks/author/math.glsl.js +43 -0
  302. package/dist/rendering/shaders/chunks/author/math.glsl.js.map +1 -0
  303. package/dist/rendering/shaders/chunks/author/noise.glsl.d.ts +3 -0
  304. package/dist/rendering/shaders/chunks/author/noise.glsl.d.ts.map +1 -0
  305. package/dist/rendering/shaders/chunks/author/noise.glsl.js +94 -0
  306. package/dist/rendering/shaders/chunks/author/noise.glsl.js.map +1 -0
  307. package/dist/rendering/shaders/chunks/author/sky.glsl.d.ts +3 -0
  308. package/dist/rendering/shaders/chunks/author/sky.glsl.d.ts.map +1 -0
  309. package/dist/rendering/shaders/chunks/author/sky.glsl.js +28 -0
  310. package/dist/rendering/shaders/chunks/author/sky.glsl.js.map +1 -0
  311. package/dist/rendering/shaders/chunks/author/toon.glsl.d.ts +3 -0
  312. package/dist/rendering/shaders/chunks/author/toon.glsl.d.ts.map +1 -0
  313. package/dist/rendering/shaders/chunks/author/toon.glsl.js +21 -0
  314. package/dist/rendering/shaders/chunks/author/toon.glsl.js.map +1 -0
  315. package/dist/rendering/shaders/chunks/author/triplanar.glsl.d.ts +3 -0
  316. package/dist/rendering/shaders/chunks/author/triplanar.glsl.d.ts.map +1 -0
  317. package/dist/rendering/shaders/chunks/author/triplanar.glsl.js +14 -0
  318. package/dist/rendering/shaders/chunks/author/triplanar.glsl.js.map +1 -0
  319. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  320. package/dist/rendering/webgl2/LegacyPost.js +3 -2
  321. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  322. package/package.json +29 -26
  323. package/templates/cinematic-scene/package.json +2 -2
  324. package/templates/mini-game/package.json +2 -2
  325. package/templates/product-viewer/package.json +2 -2
  326. package/templates/production-asset-inspector/package.json +1 -1
  327. package/templates/production-material-studio/package.json +1 -1
  328. package/templates/production-product-configurator/package.json +1 -1
  329. package/templates/production-product-viewer/package.json +1 -1
@@ -0,0 +1,116 @@
1
+ import type { AuraTransformSpec, AuraVec3 } from "./types.js";
2
+ export type AuraScatterRange = readonly [min: number, max: number];
3
+ export type AuraScatterSide = "both" | "left" | "right";
4
+ export type AuraScatterExclusion = {
5
+ readonly kind: "circle";
6
+ readonly center: readonly [number, number];
7
+ readonly radius: number;
8
+ } | {
9
+ readonly kind: "box";
10
+ readonly min: readonly [number, number];
11
+ readonly max: readonly [number, number];
12
+ };
13
+ export type AuraScatterArea = {
14
+ readonly kind: "rect";
15
+ readonly min: readonly [number, number];
16
+ readonly max: readonly [number, number];
17
+ } | {
18
+ readonly kind: "disc";
19
+ readonly center: readonly [number, number];
20
+ readonly radius: number;
21
+ };
22
+ export interface AuraScatterPoint {
23
+ readonly position: AuraVec3;
24
+ /** Rotation about +Y in radians. */
25
+ readonly yaw: number;
26
+ /** Uniform scale along X and Y, `scale * depthScale` along Z (`depthScale` is 1 unless `scaleDepth` is set). */
27
+ readonly scale: number;
28
+ readonly depthScale: number;
29
+ /** Variant index in `[0, kinds)`; 0 when `kinds` is unset. */
30
+ readonly kind: number;
31
+ /** Arc length along the path (path scatter) or 0 (area scatter). */
32
+ readonly along: number;
33
+ /** Signed lateral offset from the path (path scatter) or 0 (area scatter). */
34
+ readonly lateral: number;
35
+ }
36
+ interface AuraScatterCommon {
37
+ /** Seed for the built-in generator (a 32-bit LCG). Ignored when `random` is given. Default 1. */
38
+ readonly seed?: number;
39
+ /** Share one random stream across several calls (chunked worlds). Overrides `seed`. */
40
+ readonly random?: () => number;
41
+ /** Number of model/mesh variants; each placement draws `kind` in `[0, kinds)`. Unset draws nothing and gives kind 0. */
42
+ readonly kinds?: number;
43
+ /** Extra height added to the base height, drawn uniformly from the range. */
44
+ readonly yOffset?: AuraScatterRange;
45
+ /** Uniform scale drawn from the range. Unset gives scale 1 and draws nothing. */
46
+ readonly scale?: AuraScatterRange;
47
+ /** Multiplier on the Z scale drawn from the range (squash/stretch variety). */
48
+ readonly scaleDepth?: AuraScatterRange;
49
+ /** Yaw in radians: a number (fixed), or a range drawn uniformly. Default `[0, 2π)`. */
50
+ readonly yaw?: number | AuraScatterRange;
51
+ /** Placements inside any zone are rejected (XZ plane). */
52
+ readonly exclude?: readonly AuraScatterExclusion[];
53
+ /** Reject a placement closer than this (XZ) to an already accepted one. */
54
+ readonly minDistance?: number;
55
+ /** Reject placements whose final height is outside the range. */
56
+ readonly heightRange?: AuraScatterRange;
57
+ /** With `maxSlope`, rejects placements where the ground gradient magnitude (rise over run) exceeds it. */
58
+ readonly ground?: (x: number, z: number) => number;
59
+ readonly maxSlope?: number;
60
+ /** Final custom filter. Runs after every built-in filter. */
61
+ readonly accept?: (point: AuraScatterPoint) => boolean;
62
+ /** Stop after this many accepted placements. */
63
+ readonly maxCount?: number;
64
+ }
65
+ export interface AuraScatterAlongPathOptions extends AuraScatterCommon {
66
+ /** World position at arc length `s` and signed lateral offset (positive is the side `side: "right"` uses). */
67
+ readonly path: (s: number, lateral: number) => AuraVec3;
68
+ readonly start: number;
69
+ readonly end: number;
70
+ /** Arc-length spacing between rows, drawn uniformly from the range after each row. */
71
+ readonly step: AuraScatterRange;
72
+ /** Absolute lateral distance from the path, drawn uniformly. Both sides mirror it. */
73
+ readonly lateral: AuraScatterRange;
74
+ readonly side?: AuraScatterSide;
75
+ /** Probability in `[0, 1)` of skipping a placement; draws once per placement when set. */
76
+ readonly skipChance?: number;
77
+ /** Total width of random arc-length jitter applied to each placement; draws once when set. */
78
+ readonly alongJitter?: number;
79
+ /** Base height for `yOffset`, called with the row's arc length (before `alongJitter`) and the placed position, e.g. the centreline height. Default is the path position's Y. */
80
+ readonly baseHeight?: (row: number, position: AuraVec3) => number;
81
+ }
82
+ export interface AuraScatterInAreaOptions extends AuraScatterCommon {
83
+ readonly area: AuraScatterArea;
84
+ /** Target number of accepted placements. */
85
+ readonly count: number;
86
+ /** Attempts per requested placement before giving up (default 12), so filters cannot loop forever. */
87
+ readonly attemptsPerPoint?: number;
88
+ }
89
+ /** The 32-bit LCG the ported games share (Numerical Recipes constants); one number in `[0, 1)` per call. */
90
+ export declare function createScatterRandom(seed?: number): () => number;
91
+ /**
92
+ * Scatter placements along a path (roads, rails, rivers, corridors). Draw order per placement is fixed and
93
+ * documented so a given seed always yields the same layout: skip chance, lateral distance, along-path jitter,
94
+ * kind, yOffset, scale, scaleDepth, yaw; then one `step` draw per row. Filters run after the draws, so adding a
95
+ * filter never shifts the random stream and never moves the placements that survive.
96
+ */
97
+ export declare function scatterAlongPath(options: AuraScatterAlongPathOptions): AuraScatterPoint[];
98
+ /**
99
+ * Scatter placements over a rectangle or disc. Draw order per attempt: position (x then z, or angle then
100
+ * radius for discs), kind, yOffset, scale, scaleDepth, yaw. Stops at `count` accepted placements or after
101
+ * `count * attemptsPerPoint` attempts, so impossible filters return fewer placements instead of hanging.
102
+ */
103
+ export declare function scatterInArea(options: AuraScatterInAreaOptions): AuraScatterPoint[];
104
+ /**
105
+ * Radius LOD: split placements into bands by XZ distance from `origin`. `radii` ascend; the result has
106
+ * `radii.length + 1` arrays: `[0]` is closest (e.g. instanced Meshy models), the last is beyond every radius
107
+ * (e.g. the cheap procedural fallback). Order inside each band is preserved.
108
+ */
109
+ export declare function splitScatterByDistance(points: readonly AuraScatterPoint[], origin: readonly [number, number], radii: readonly number[]): AuraScatterPoint[][];
110
+ /** Turn placements into `instances.*` transforms. `kind` keeps only that variant. `baseScale` multiplies the stored scale. */
111
+ export declare function scatterTransforms(points: readonly AuraScatterPoint[], options?: {
112
+ readonly kind?: number;
113
+ readonly baseScale?: number | AuraVec3;
114
+ }): AuraTransformSpec[];
115
+ export {};
116
+ //# sourceMappingURL=scatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatter.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/scatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,211 @@
1
+ /** The 32-bit LCG the ported games share (Numerical Recipes constants); one number in `[0, 1)` per call. */
2
+ export function createScatterRandom(seed = 1) {
3
+ let state = seed >>> 0;
4
+ return () => ((state = (Math.imul(state, 1664525) + 1013904223) >>> 0), state / 4294967296);
5
+ }
6
+ const TAU = Math.PI * 2;
7
+ const draw = (random, range) => range[0] + random() * (range[1] - range[0]);
8
+ function finiteRange(range, label) {
9
+ if (!range)
10
+ return;
11
+ if (!Number.isFinite(range[0]) || !Number.isFinite(range[1]) || range[1] < range[0])
12
+ throw new Error(`Aura3D scatter ${label} must be a finite [min, max] range with max >= min.`);
13
+ }
14
+ function validateCommon(options) {
15
+ finiteRange(options.yOffset, "yOffset");
16
+ finiteRange(options.scale, "scale");
17
+ finiteRange(options.scaleDepth, "scaleDepth");
18
+ finiteRange(options.heightRange, "heightRange");
19
+ if (typeof options.yaw === "object")
20
+ finiteRange(options.yaw, "yaw");
21
+ if (options.kinds !== undefined && (!Number.isInteger(options.kinds) || options.kinds < 1))
22
+ throw new Error("Aura3D scatter kinds must be a positive integer.");
23
+ if (options.minDistance !== undefined && !(options.minDistance >= 0))
24
+ throw new Error("Aura3D scatter minDistance must be zero or positive.");
25
+ if (options.maxSlope !== undefined && !options.ground)
26
+ throw new Error("Aura3D scatter maxSlope needs a ground(x, z) height function.");
27
+ }
28
+ function inZone(zone, x, z) {
29
+ if (zone.kind === "circle") {
30
+ const dx = x - zone.center[0];
31
+ const dz = z - zone.center[1];
32
+ return dx * dx + dz * dz <= zone.radius * zone.radius;
33
+ }
34
+ return x >= zone.min[0] && x <= zone.max[0] && z >= zone.min[1] && z <= zone.max[1];
35
+ }
36
+ function slopeAt(ground, x, z) {
37
+ const e = 0.5;
38
+ const gx = (ground(x + e, z) - ground(x - e, z)) / (2 * e);
39
+ const gz = (ground(x, z + e) - ground(x, z - e)) / (2 * e);
40
+ return Math.hypot(gx, gz);
41
+ }
42
+ /** Spatial hash for the minimum-distance rule: O(1) neighbour lookups instead of an O(n^2) scan. */
43
+ class SpacingIndex {
44
+ distance;
45
+ cells = new Map();
46
+ constructor(distance) {
47
+ this.distance = distance;
48
+ }
49
+ key(cx, cz) { return `${cx},${cz}`; }
50
+ cell(v) { return Math.floor(v / this.distance); }
51
+ blocked(x, z) {
52
+ if (this.distance <= 0)
53
+ return false;
54
+ const cx = this.cell(x);
55
+ const cz = this.cell(z);
56
+ for (let ix = cx - 1; ix <= cx + 1; ix += 1)
57
+ for (let iz = cz - 1; iz <= cz + 1; iz += 1) {
58
+ const bucket = this.cells.get(this.key(ix, iz));
59
+ if (!bucket)
60
+ continue;
61
+ for (const p of bucket)
62
+ if ((p[0] - x) ** 2 + (p[1] - z) ** 2 < this.distance * this.distance)
63
+ return true;
64
+ }
65
+ return false;
66
+ }
67
+ add(x, z) {
68
+ if (this.distance <= 0)
69
+ return;
70
+ const k = this.key(this.cell(x), this.cell(z));
71
+ const bucket = this.cells.get(k);
72
+ if (bucket)
73
+ bucket.push([x, z]);
74
+ else
75
+ this.cells.set(k, [[x, z]]);
76
+ }
77
+ }
78
+ function makeFilter(options) {
79
+ const spacing = new SpacingIndex(options.minDistance ?? 0);
80
+ return {
81
+ accepts(c) {
82
+ const [x, y, z] = c.position;
83
+ if (options.exclude?.some((zone) => inZone(zone, x, z)))
84
+ return false;
85
+ if (options.heightRange && (y < options.heightRange[0] || y > options.heightRange[1]))
86
+ return false;
87
+ if (options.maxSlope !== undefined && options.ground && slopeAt(options.ground, x, z) > options.maxSlope)
88
+ return false;
89
+ if (spacing.blocked(x, z))
90
+ return false;
91
+ return options.accept ? options.accept(c) : true;
92
+ },
93
+ commit(c) { spacing.add(c.position[0], c.position[2]); }
94
+ };
95
+ }
96
+ /**
97
+ * Scatter placements along a path (roads, rails, rivers, corridors). Draw order per placement is fixed and
98
+ * documented so a given seed always yields the same layout: skip chance, lateral distance, along-path jitter,
99
+ * kind, yOffset, scale, scaleDepth, yaw; then one `step` draw per row. Filters run after the draws, so adding a
100
+ * filter never shifts the random stream and never moves the placements that survive.
101
+ */
102
+ export function scatterAlongPath(options) {
103
+ validateCommon(options);
104
+ finiteRange(options.step, "step");
105
+ finiteRange(options.lateral, "lateral");
106
+ if (!(options.step[1] > 0) || !(options.step[0] + options.step[1] > 0))
107
+ throw new Error("Aura3D scatter step must advance (max > 0).");
108
+ const random = options.random ?? createScatterRandom(options.seed ?? 1);
109
+ const sides = options.side === "left" ? [-1] : options.side === "right" ? [1] : [-1, 1];
110
+ const filter = makeFilter(options);
111
+ const out = [];
112
+ const limit = options.maxCount ?? Infinity;
113
+ for (let s = options.start; s < options.end && out.length < limit; s += options.step[0] + random() * (options.step[1] - options.step[0])) {
114
+ for (const side of sides) {
115
+ if (out.length >= limit)
116
+ break;
117
+ if (options.skipChance !== undefined && random() < options.skipChance)
118
+ continue;
119
+ const lateral = side * draw(random, options.lateral);
120
+ const sAt = options.alongJitter !== undefined ? s + (random() - 0.5) * options.alongJitter : s;
121
+ const base = options.path(sAt, lateral);
122
+ const kind = options.kinds !== undefined ? Math.floor(random() * options.kinds) : 0;
123
+ const baseY = options.baseHeight ? options.baseHeight(s, base) : base[1];
124
+ const y = baseY + (options.yOffset ? draw(random, options.yOffset) : 0);
125
+ const scale = options.scale ? draw(random, options.scale) : 1;
126
+ const depthScale = options.scaleDepth ? draw(random, options.scaleDepth) : 1;
127
+ const yaw = options.yaw === undefined ? random() * TAU : typeof options.yaw === "number" ? options.yaw : draw(random, options.yaw);
128
+ const candidate = { position: [base[0], y, base[2]], yaw, scale, depthScale, kind, along: sAt, lateral };
129
+ if (!filter.accepts(candidate))
130
+ continue;
131
+ filter.commit(candidate);
132
+ out.push(candidate);
133
+ }
134
+ }
135
+ return out;
136
+ }
137
+ /**
138
+ * Scatter placements over a rectangle or disc. Draw order per attempt: position (x then z, or angle then
139
+ * radius for discs), kind, yOffset, scale, scaleDepth, yaw. Stops at `count` accepted placements or after
140
+ * `count * attemptsPerPoint` attempts, so impossible filters return fewer placements instead of hanging.
141
+ */
142
+ export function scatterInArea(options) {
143
+ validateCommon(options);
144
+ if (!Number.isInteger(options.count) || options.count < 0)
145
+ throw new Error("Aura3D scatterInArea count must be a non-negative integer.");
146
+ const random = options.random ?? createScatterRandom(options.seed ?? 1);
147
+ const filter = makeFilter(options);
148
+ const out = [];
149
+ const maxAttempts = options.count * (options.attemptsPerPoint ?? 12);
150
+ const area = options.area;
151
+ for (let attempt = 0; attempt < maxAttempts && out.length < Math.min(options.count, options.maxCount ?? Infinity); attempt += 1) {
152
+ let x;
153
+ let z;
154
+ if (area.kind === "rect") {
155
+ x = area.min[0] + random() * (area.max[0] - area.min[0]);
156
+ z = area.min[1] + random() * (area.max[1] - area.min[1]);
157
+ }
158
+ else {
159
+ const angle = random() * TAU;
160
+ const radius = area.radius * Math.sqrt(random());
161
+ x = area.center[0] + Math.cos(angle) * radius;
162
+ z = area.center[1] + Math.sin(angle) * radius;
163
+ }
164
+ const kind = options.kinds !== undefined ? Math.floor(random() * options.kinds) : 0;
165
+ const y = (options.ground ? options.ground(x, z) : 0) + (options.yOffset ? draw(random, options.yOffset) : 0);
166
+ const scale = options.scale ? draw(random, options.scale) : 1;
167
+ const depthScale = options.scaleDepth ? draw(random, options.scaleDepth) : 1;
168
+ const yaw = options.yaw === undefined ? random() * TAU : typeof options.yaw === "number" ? options.yaw : draw(random, options.yaw);
169
+ const candidate = { position: [x, y, z], yaw, scale, depthScale, kind, along: 0, lateral: 0 };
170
+ if (!filter.accepts(candidate))
171
+ continue;
172
+ filter.commit(candidate);
173
+ out.push(candidate);
174
+ }
175
+ return out;
176
+ }
177
+ /**
178
+ * Radius LOD: split placements into bands by XZ distance from `origin`. `radii` ascend; the result has
179
+ * `radii.length + 1` arrays: `[0]` is closest (e.g. instanced Meshy models), the last is beyond every radius
180
+ * (e.g. the cheap procedural fallback). Order inside each band is preserved.
181
+ */
182
+ export function splitScatterByDistance(points, origin, radii) {
183
+ for (let i = 0; i < radii.length; i += 1) {
184
+ if (!(radii[i] >= 0) || (i > 0 && radii[i] < radii[i - 1]))
185
+ throw new Error("Aura3D scatter radii must be non-negative and ascending.");
186
+ }
187
+ const bands = Array.from({ length: radii.length + 1 }, () => []);
188
+ for (const point of points) {
189
+ const d = Math.hypot(point.position[0] - origin[0], point.position[2] - origin[1]);
190
+ let band = radii.length;
191
+ for (let i = 0; i < radii.length; i += 1)
192
+ if (d <= radii[i]) {
193
+ band = i;
194
+ break;
195
+ }
196
+ bands[band].push(point);
197
+ }
198
+ return bands;
199
+ }
200
+ /** Turn placements into `instances.*` transforms. `kind` keeps only that variant. `baseScale` multiplies the stored scale. */
201
+ export function scatterTransforms(points, options = {}) {
202
+ const base = options.baseScale === undefined ? [1, 1, 1] : typeof options.baseScale === "number" ? [options.baseScale, options.baseScale, options.baseScale] : options.baseScale;
203
+ const out = [];
204
+ for (const p of points) {
205
+ if (options.kind !== undefined && p.kind !== options.kind)
206
+ continue;
207
+ out.push({ position: p.position, rotation: [0, p.yaw, 0], scale: [p.scale * base[0], p.scale * base[1], p.scale * p.depthScale * base[2]] });
208
+ }
209
+ return out;
210
+ }
211
+ //# sourceMappingURL=scatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatter.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/scatter.ts"],"names":[],"mappings":"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"}
@@ -43,5 +43,13 @@ export declare class AuraSceneBuilder {
43
43
  toJSON(): AuraSceneSnapshot;
44
44
  getPhysicsController(): AuraPhysicsWorldController | undefined;
45
45
  }
46
- export declare function scene(): AuraSceneBuilder;
46
+ /** Optional one-shot construction for `scene({ ... })`; every field has a builder method with the same meaning. */
47
+ export interface AuraSceneInit {
48
+ readonly children?: readonly (AuraNodeBuilder<AuraSceneNode> | AuraSceneNode)[];
49
+ readonly background?: AuraColor | AuraSceneBackgroundImage;
50
+ readonly camera?: AuraCameraSpec;
51
+ readonly timeline?: AuraTimelineSpec;
52
+ readonly diagnostics?: boolean;
53
+ }
54
+ export declare function scene(init?: AuraSceneInit): AuraSceneBuilder;
47
55
  //# sourceMappingURL=scene.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/scene.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,aAAa,EAAE,0BAA0B,EAAE,cAAc,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErN,OAAO,EAAuC,eAAe,EAAgD,MAAM,2BAA2B,CAAC;AAC/I,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAsC/C,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,2BAA2B,GAAG,MAAM,CASrI;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,oBAAoB,CAAQ;IAGpC,OAAO,CAAC,mBAAmB,CAAuC;IAClE,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,oBAAoB,CAA+B;IAE3D;;;;;;;;OAQG;IACH,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAUrD;;;;;;;OAOG;IACH,UAAU,CACR,KAAK,EAAE,SAAS,GAAG,wBAAwB,EAC3C,OAAO,GAAE;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GAC9C,IAAI;IAcP,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,IAAI;IAK/D,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,EAAE,GAAG,IAAI;IAKjF,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAMlC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAKtC,OAAO,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI;IAK/C,WAAW,CAAC,OAAO,UAAO,GAAG,IAAI;IAKjC,MAAM,IAAI,iBAAiB;IAiB3B,oBAAoB,IAAI,0BAA0B,GAAG,SAAS;CAG/D;AAED,wBAAgB,KAAK,IAAI,gBAAgB,CAExC"}
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/scene.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,aAAa,EAAE,0BAA0B,EAAE,cAAc,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErN,OAAO,EAAuC,eAAe,EAAgD,MAAM,2BAA2B,CAAC;AAC/I,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAuC/C,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,2BAA2B,GAAG,MAAM,CASrI;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,oBAAoB,CAAQ;IAGpC,OAAO,CAAC,mBAAmB,CAAuC;IAClE,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,oBAAoB,CAA+B;IAE3D;;;;;;;;OAQG;IACH,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAUrD;;;;;;;OAOG;IACH,UAAU,CACR,KAAK,EAAE,SAAS,GAAG,wBAAwB,EAC3C,OAAO,GAAE;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO,GAC9C,IAAI;IAcP,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,aAAa,CAAC,GAAG,aAAa,GAAG,IAAI;IAK/D,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,EAAE,GAAG,IAAI;IAKjF,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAMlC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAKtC,OAAO,CAAC,IAAI,EAAE,0BAA0B,GAAG,IAAI;IAK/C,WAAW,CAAC,OAAO,UAAO,GAAG,IAAI;IAKjC,MAAM,IAAI,iBAAiB;IAiB3B,oBAAoB,IAAI,0BAA0B,GAAG,SAAS;CAG/D;AAED,mHAAmH;AACnH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;IAChF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,wBAAwB,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAID,wBAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,gBAAgB,CAoB5D"}
@@ -8,6 +8,7 @@ import { physics } from "./physics.js";
8
8
  import { resolveCameraClipping } from "../RootRuntimeSupport.js";
9
9
  import { timeline } from "./timeline.js";
10
10
  import { resolveQrFlags } from "../../contracts/flags.js";
11
+ import { AuraRuntimeError } from "../compiler/errors.js";
11
12
  const DEFAULT_SCENE_BACKGROUND = "#070b12";
12
13
  /**
13
14
  * A3D_QR_LOOKS (lane 13, #1142 follow-up): a look group carries its
@@ -146,7 +147,32 @@ export class AuraSceneBuilder {
146
147
  return this.physicsController;
147
148
  }
148
149
  }
149
- export function scene() {
150
- return new AuraSceneBuilder();
150
+ const SCENE_INIT_KEYS = new Set(["children", "background", "camera", "timeline", "diagnostics"]);
151
+ export function scene(init) {
152
+ const builder = new AuraSceneBuilder();
153
+ if (init === undefined)
154
+ return builder;
155
+ if (init === null || typeof init !== "object" || Array.isArray(init)) {
156
+ throw new AuraRuntimeError("invalid-scene-options", "scene(init) takes an options object ({ children, background, camera, timeline, diagnostics }) or nothing. Suggested fix: scene().add(node) for one node, scene({ children: [...] }) for many.");
157
+ }
158
+ // `scene({ children })` used to return a silently empty scene (the argument was ignored); unknown keys now fail by name.
159
+ const unknown = Object.keys(init).filter((key) => !SCENE_INIT_KEYS.has(key));
160
+ if (unknown.length > 0) {
161
+ throw new AuraRuntimeError("invalid-scene-options", `scene(init) does not understand ${unknown.map((key) => `"${key}"`).join(", ")}. Supported: children, background, camera, timeline, diagnostics.`);
162
+ }
163
+ if (init.children !== undefined) {
164
+ if (!Array.isArray(init.children))
165
+ throw new AuraRuntimeError("invalid-scene-options", "scene({ children }) needs an array of nodes.");
166
+ builder.addMany(init.children);
167
+ }
168
+ if (init.background !== undefined)
169
+ builder.background(init.background);
170
+ if (init.camera !== undefined)
171
+ builder.camera(init.camera);
172
+ if (init.timeline !== undefined)
173
+ builder.timeline(init.timeline);
174
+ if (init.diagnostics !== undefined)
175
+ builder.diagnostics(init.diagnostics);
176
+ return builder;
151
177
  }
152
178
  //# sourceMappingURL=scene.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/scene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../../../../packages/engine/src/agent-api/nodes/scene.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAG/G,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,mCAAmC,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC/I,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,wBAAwB,GAAc,SAAS,CAAC;AAEtD;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,KAA+B;IACnD,IAAI,KAA4B,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,uEAAuE;QACvE,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAgE,CAAC;QAC/E,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACtI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,GAAG,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,OAAO,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAA0C,EAAE,OAAoC;IAC3H,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC;IACjF,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC;QAAE,OAAO,OAAO,CAAC,YAAY,GAAG,gBAAgB,CAAC;IAC3F,IAAI,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAAE,OAAO,OAAO,CAAC,kBAAkB,GAAG,YAAY,CAAC;IACnG,OAAO,mCAAmC,GAAG,YAAY,CAAC;AAC5D,CAAC;AAED,MAAM,OAAO,gBAAgB;IACV,KAAK,GAAoB,EAAE,CAAC;IACrC,eAAe,GAAc,wBAAwB,CAAC;IACtD,kBAAkB,GAAG,KAAK,CAAC;IAC3B,oBAAoB,GAAG,IAAI,CAAC;IACpC,sEAAsE;IACtE,sEAAsE;IAC9D,mBAAmB,CAAuC;IAC1D,UAAU,GAAmB,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5C,YAAY,CAA+B;IAC3C,iBAAiB,CAAyC;IAC1D,kBAAkB,GAAG,KAAK,CAAC;IAC3B,oBAAoB,CAA+B;IAE3D;;;;;;;;OAQG;IACH,gBAAgB,CAAC,IAA6B;QAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CACR,KAA2C,EAC3C,UAA6C,EAAE;QAE/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3F,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,KAAkB,CAAC;QAC1C,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,IAAoD;QACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,KAAkE;QACxE,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAoB;QACzB,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAsB;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAgC;QACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,OAAO,GAAG,IAAI;QACxB,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO;YACL,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,eAAe;YAC3I,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAc,EAAE,CAAC;YAC9E,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE;YAC3C,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACjH,WAAW,EAAE;gBACX,OAAO,EAAE,IAAI,CAAC,kBAAkB;aACjC;SACF,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;CACF;AAWD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAEjG,MAAM,UAAU,KAAK,CAAC,IAAoB;IACxC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,+LAA+L,CAAC,CAAC;IACvP,CAAC;IACD,yHAAyH;IACzH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,mCAAmC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IACzM,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,8CAA8C,CAAC,CAAC;QACvI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1E,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -972,6 +972,8 @@ export interface AuraCreateAppRendererOptions {
972
972
  readonly morph?: "gpu" | "cpu";
973
973
  readonly skinnedPbr?: "unified" | "fork";
974
974
  readonly materialStrictness?: "warn" | "strict";
975
+ /** What to do with a draw whose shader failed to compile/link: `skip` (default, plus a diagnostic), `magenta` (flat debug colour; default with `?diag=1`) or `throw` (strict). */
976
+ readonly shaderFailures?: "skip" | "magenta" | "throw";
975
977
  readonly materialModel?: "legacy" | "physical-r185";
976
978
  readonly transmission?: "auto" | "env" | "off";
977
979
  readonly alphaToCoverage?: boolean;
@@ -2140,6 +2142,12 @@ export interface AuraDiagnostics {
2140
2142
  readonly renderer?: AuraRendererDiagnosticReport;
2141
2143
  readonly warnings: readonly string[];
2142
2144
  readonly errors: readonly string[];
2145
+ /**
2146
+ * Custom shaders that failed to compile or link (or have no WGSL twin on WebGPU): stable code, material name,
2147
+ * stage, the driver log and the offending source lines. Each also appears once in `errors`; the failing item
2148
+ * is skipped (or drawn magenta with `?diag=1`) while every other draw continues. Present only when non-empty.
2149
+ */
2150
+ readonly shaderFailures?: readonly import("../../../rendering/index.js").ShaderFailureRecord[];
2143
2151
  /**
2144
2152
  * Labels the world-label layer actually placed on screen this frame, with their
2145
2153
  * projected pixel positions and visibility.