@aura3d/engine 4.0.3 → 4.0.4

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 (1028) hide show
  1. package/README.md +3 -3
  2. package/dist/animation/AnimationAction.d.ts +55 -1
  3. package/dist/animation/AnimationAction.d.ts.map +1 -1
  4. package/dist/animation/AnimationAction.js +156 -27
  5. package/dist/animation/AnimationAction.js.map +1 -1
  6. package/dist/animation/AnimationEvents.d.ts +1 -1
  7. package/dist/animation/AnimationEvents.d.ts.map +1 -1
  8. package/dist/animation/AnimationEvents.js +33 -14
  9. package/dist/animation/AnimationEvents.js.map +1 -1
  10. package/dist/animation/AnimationMixer.d.ts +35 -0
  11. package/dist/animation/AnimationMixer.d.ts.map +1 -1
  12. package/dist/animation/AnimationMixer.js +60 -10
  13. package/dist/animation/AnimationMixer.js.map +1 -1
  14. package/dist/animation/AnimationObjectGroup.d.ts +28 -0
  15. package/dist/animation/AnimationObjectGroup.d.ts.map +1 -0
  16. package/dist/animation/AnimationObjectGroup.js +242 -0
  17. package/dist/animation/AnimationObjectGroup.js.map +1 -0
  18. package/dist/animation/AnimationTrack.d.ts +18 -2
  19. package/dist/animation/AnimationTrack.d.ts.map +1 -1
  20. package/dist/animation/AnimationTrack.js +62 -0
  21. package/dist/animation/AnimationTrack.js.map +1 -1
  22. package/dist/animation/AnimationUtils.d.ts +56 -0
  23. package/dist/animation/AnimationUtils.d.ts.map +1 -0
  24. package/dist/animation/AnimationUtils.js +202 -0
  25. package/dist/animation/AnimationUtils.js.map +1 -0
  26. package/dist/animation/PropertyBinding.d.ts +93 -0
  27. package/dist/animation/PropertyBinding.d.ts.map +1 -0
  28. package/dist/animation/PropertyBinding.js +393 -0
  29. package/dist/animation/PropertyBinding.js.map +1 -0
  30. package/dist/animation/SceneAnimationBridge.d.ts +23 -1
  31. package/dist/animation/SceneAnimationBridge.d.ts.map +1 -1
  32. package/dist/animation/SceneAnimationBridge.js +152 -14
  33. package/dist/animation/SceneAnimationBridge.js.map +1 -1
  34. package/dist/animation/browser-index.d.ts +3 -0
  35. package/dist/animation/browser-index.d.ts.map +1 -1
  36. package/dist/animation/browser-index.js +3 -0
  37. package/dist/animation/browser-index.js.map +1 -1
  38. package/dist/animation/index.d.ts +3 -0
  39. package/dist/animation/index.d.ts.map +1 -1
  40. package/dist/animation/index.js +3 -0
  41. package/dist/animation/index.js.map +1 -1
  42. package/dist/animation/pose/blendKernels.d.ts +1 -1
  43. package/dist/animation/pose/blendKernels.d.ts.map +1 -1
  44. package/dist/animation/pose/blendKernels.js +3 -3
  45. package/dist/animation/pose/blendKernels.js.map +1 -1
  46. package/dist/assets/DataTextureLoader.d.ts +16 -0
  47. package/dist/assets/DataTextureLoader.d.ts.map +1 -0
  48. package/dist/assets/DataTextureLoader.js +29 -0
  49. package/dist/assets/DataTextureLoader.js.map +1 -0
  50. package/dist/assets/EXRLoader.d.ts +78 -0
  51. package/dist/assets/EXRLoader.d.ts.map +1 -0
  52. package/dist/assets/EXRLoader.js +1398 -0
  53. package/dist/assets/EXRLoader.js.map +1 -0
  54. package/dist/assets/FileLoader.d.ts +32 -0
  55. package/dist/assets/FileLoader.d.ts.map +1 -0
  56. package/dist/assets/FileLoader.js +79 -0
  57. package/dist/assets/FileLoader.js.map +1 -0
  58. package/dist/assets/GLTFRenderResources.d.ts +9 -0
  59. package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
  60. package/dist/assets/GLTFRenderResources.js +47 -4
  61. package/dist/assets/GLTFRenderResources.js.map +1 -1
  62. package/dist/assets/GLTFSharedTextureCache.d.ts +40 -0
  63. package/dist/assets/GLTFSharedTextureCache.d.ts.map +1 -0
  64. package/dist/assets/GLTFSharedTextureCache.js +68 -0
  65. package/dist/assets/GLTFSharedTextureCache.js.map +1 -0
  66. package/dist/assets/ImageBitmapLoader.d.ts +27 -0
  67. package/dist/assets/ImageBitmapLoader.d.ts.map +1 -0
  68. package/dist/assets/ImageBitmapLoader.js +51 -0
  69. package/dist/assets/ImageBitmapLoader.js.map +1 -0
  70. package/dist/assets/ImageLoader.d.ts.map +1 -1
  71. package/dist/assets/ImageLoader.js +12 -5
  72. package/dist/assets/ImageLoader.js.map +1 -1
  73. package/dist/assets/LoadContext.d.ts +4 -1
  74. package/dist/assets/LoadContext.d.ts.map +1 -1
  75. package/dist/assets/LoadContext.js +7 -2
  76. package/dist/assets/LoadContext.js.map +1 -1
  77. package/dist/assets/LoaderFetch.d.ts +12 -0
  78. package/dist/assets/LoaderFetch.d.ts.map +1 -0
  79. package/dist/assets/LoaderFetch.js +54 -0
  80. package/dist/assets/LoaderFetch.js.map +1 -0
  81. package/dist/assets/TextureLoader.d.ts.map +1 -1
  82. package/dist/assets/TextureLoader.js +3 -1
  83. package/dist/assets/TextureLoader.js.map +1 -1
  84. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts +6 -0
  85. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -1
  86. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js +2 -1
  87. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -1
  88. package/dist/assets/browser-index.d.ts +9 -0
  89. package/dist/assets/browser-index.d.ts.map +1 -1
  90. package/dist/assets/browser-index.js +5 -0
  91. package/dist/assets/browser-index.js.map +1 -1
  92. package/dist/assets/gltf-runtime.d.ts +2 -0
  93. package/dist/assets/gltf-runtime.d.ts.map +1 -1
  94. package/dist/assets/gltf-runtime.js +1 -0
  95. package/dist/assets/gltf-runtime.js.map +1 -1
  96. package/dist/assets/index.d.ts +11 -0
  97. package/dist/assets/index.d.ts.map +1 -1
  98. package/dist/assets/index.js +7 -0
  99. package/dist/assets/index.js.map +1 -1
  100. package/dist/assets/loaders/TextureLoader.d.ts +27 -1
  101. package/dist/assets/loaders/TextureLoader.d.ts.map +1 -1
  102. package/dist/assets/loaders/TextureLoader.js +62 -4
  103. package/dist/assets/loaders/TextureLoader.js.map +1 -1
  104. package/dist/audio/AudioAnalyser.d.ts +42 -0
  105. package/dist/audio/AudioAnalyser.d.ts.map +1 -0
  106. package/dist/audio/AudioAnalyser.js +75 -0
  107. package/dist/audio/AudioAnalyser.js.map +1 -0
  108. package/dist/audio/AudioContextManager.d.ts +6 -0
  109. package/dist/audio/AudioContextManager.d.ts.map +1 -1
  110. package/dist/audio/AudioContextManager.js.map +1 -1
  111. package/dist/audio/AudioListener.d.ts +27 -0
  112. package/dist/audio/AudioListener.d.ts.map +1 -1
  113. package/dist/audio/AudioListener.js +34 -0
  114. package/dist/audio/AudioListener.js.map +1 -1
  115. package/dist/audio/PositionalEmitter.d.ts +58 -2
  116. package/dist/audio/PositionalEmitter.d.ts.map +1 -1
  117. package/dist/audio/PositionalEmitter.js +111 -12
  118. package/dist/audio/PositionalEmitter.js.map +1 -1
  119. package/dist/audio/SpatialAudio.d.ts +24 -0
  120. package/dist/audio/SpatialAudio.d.ts.map +1 -1
  121. package/dist/audio/SpatialAudio.js +31 -2
  122. package/dist/audio/SpatialAudio.js.map +1 -1
  123. package/dist/audio/game-sound/SpatialVoice.d.ts +2 -2
  124. package/dist/audio/game-sound/SpatialVoice.d.ts.map +1 -1
  125. package/dist/audio/game-sound/SpatialVoice.js +1 -1
  126. package/dist/audio/index.d.ts +5 -3
  127. package/dist/audio/index.d.ts.map +1 -1
  128. package/dist/audio/index.js +2 -1
  129. package/dist/audio/index.js.map +1 -1
  130. package/dist/aura3d-cli/codemods/camera-cast.d.ts +34 -0
  131. package/dist/aura3d-cli/codemods/camera-cast.d.ts.map +1 -0
  132. package/dist/aura3d-cli/codemods/camera-cast.js +259 -0
  133. package/dist/aura3d-cli/codemods/camera-cast.js.map +1 -0
  134. package/dist/aura3d-cli/codemods/core-v2.d.ts +55 -0
  135. package/dist/aura3d-cli/codemods/core-v2.d.ts.map +1 -0
  136. package/dist/aura3d-cli/codemods/core-v2.js +371 -0
  137. package/dist/aura3d-cli/codemods/core-v2.js.map +1 -0
  138. package/dist/aura3d-cli/codemods/engine-entry-imports.js +3 -3
  139. package/dist/aura3d-cli/codemods/engine-entry-imports.js.map +1 -1
  140. package/dist/aura3d-cli/codemods/post-v2.d.ts +88 -0
  141. package/dist/aura3d-cli/codemods/post-v2.d.ts.map +1 -0
  142. package/dist/aura3d-cli/codemods/post-v2.js +379 -0
  143. package/dist/aura3d-cli/codemods/post-v2.js.map +1 -0
  144. package/dist/aura3d-cli/commands/prd01/index.js +1 -1
  145. package/dist/aura3d-cli/commands/prd01/index.js.map +1 -1
  146. package/dist/aura3d-cli/commands/prd02/environmentsBake.d.ts.map +1 -1
  147. package/dist/aura3d-cli/commands/prd02/environmentsBake.js +1 -1
  148. package/dist/aura3d-cli/commands/prd02/environmentsBake.js.map +1 -1
  149. package/dist/aura3d-cli/commands/prd03/index.d.ts +4 -2
  150. package/dist/aura3d-cli/commands/prd03/index.d.ts.map +1 -1
  151. package/dist/aura3d-cli/commands/prd03/index.js +4 -2
  152. package/dist/aura3d-cli/commands/prd03/index.js.map +1 -1
  153. package/dist/aura3d-cli/commands/prd08/feelLint.js +1 -1
  154. package/dist/aura3d-cli/commands/prd08/feelLint.js.map +1 -1
  155. package/dist/aura3d-cli/commands/prd08/index.js +1 -1
  156. package/dist/aura3d-cli/commands/prd08/index.js.map +1 -1
  157. package/dist/aura3d-cli/commands/prd10/index.js +8 -1
  158. package/dist/aura3d-cli/commands/prd10/index.js.map +1 -1
  159. package/dist/aura3d-cli/lint/feelSourceScan.d.ts +20 -0
  160. package/dist/aura3d-cli/lint/feelSourceScan.d.ts.map +1 -0
  161. package/dist/aura3d-cli/lint/feelSourceScan.js +91 -0
  162. package/dist/aura3d-cli/lint/feelSourceScan.js.map +1 -0
  163. package/dist/aura3d-cli/look/lint-static.js +1 -1
  164. package/dist/aura3d-cli/look/lint-static.js.map +1 -1
  165. package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.d.ts.map +1 -1
  166. package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.js +57 -12
  167. package/dist/aura3d-cli/migrate-three/CompatibilityWarnings.js.map +1 -1
  168. package/dist/aura3d-cli/migrate-three/ImportMap.d.ts +36 -12
  169. package/dist/aura3d-cli/migrate-three/ImportMap.d.ts.map +1 -1
  170. package/dist/aura3d-cli/migrate-three/ImportMap.js +120 -22
  171. package/dist/aura3d-cli/migrate-three/ImportMap.js.map +1 -1
  172. package/dist/aura3d-cli/migrate-three/ThreeToA3DAdapter.d.ts.map +1 -1
  173. package/dist/aura3d-cli/migrate-three/ThreeToA3DAdapter.js +3 -1
  174. package/dist/aura3d-cli/migrate-three/ThreeToA3DAdapter.js.map +1 -1
  175. package/dist/aura3d-cli/migrate-three/emit.d.ts +14 -1
  176. package/dist/aura3d-cli/migrate-three/emit.d.ts.map +1 -1
  177. package/dist/aura3d-cli/migrate-three/emit.js +670 -23
  178. package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
  179. package/dist/aura3d-cli/migrate-three/mappings.d.ts +24 -2
  180. package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
  181. package/dist/aura3d-cli/migrate-three/mappings.js +259 -12
  182. package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
  183. package/dist/aura3d-cli/migrate-three/parse.d.ts +2 -0
  184. package/dist/aura3d-cli/migrate-three/parse.d.ts.map +1 -1
  185. package/dist/aura3d-cli/migrate-three/parse.js +134 -19
  186. package/dist/aura3d-cli/migrate-three/parse.js.map +1 -1
  187. package/dist/aura3d-cli/migrate-three/report.d.ts +1 -0
  188. package/dist/aura3d-cli/migrate-three/report.d.ts.map +1 -1
  189. package/dist/aura3d-cli/migrate-three/report.js +1 -1
  190. package/dist/aura3d-cli/migrate-three/report.js.map +1 -1
  191. package/dist/create-aura3d/index.js +1 -1
  192. package/dist/create-aura3d/showcase-spec-artifacts.d.ts +1 -1
  193. package/dist/engine/agent-api/AnimationMixerBuilders.d.ts +4 -0
  194. package/dist/engine/agent-api/AnimationMixerBuilders.d.ts.map +1 -1
  195. package/dist/engine/agent-api/AnimationMixerBuilders.js +17 -7
  196. package/dist/engine/agent-api/AnimationMixerBuilders.js.map +1 -1
  197. package/dist/engine/agent-api/Clock.d.ts +37 -0
  198. package/dist/engine/agent-api/Clock.d.ts.map +1 -0
  199. package/dist/engine/agent-api/Clock.js +67 -0
  200. package/dist/engine/agent-api/Clock.js.map +1 -0
  201. package/dist/engine/agent-api/RootGeometry.d.ts +124 -4
  202. package/dist/engine/agent-api/RootGeometry.d.ts.map +1 -1
  203. package/dist/engine/agent-api/RootGeometry.js +426 -19
  204. package/dist/engine/agent-api/RootGeometry.js.map +1 -1
  205. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +14 -0
  206. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
  207. package/dist/engine/agent-api/RuntimeNodeHandle.js +22 -0
  208. package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
  209. package/dist/engine/agent-api/SceneQueries.d.ts +67 -1
  210. package/dist/engine/agent-api/SceneQueries.d.ts.map +1 -1
  211. package/dist/engine/agent-api/SceneQueries.js +211 -5
  212. package/dist/engine/agent-api/SceneQueries.js.map +1 -1
  213. package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
  214. package/dist/engine/agent-api/app/createAuraApp.js +93 -0
  215. package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
  216. package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
  217. package/dist/engine/agent-api/app/frameLoop.js +4 -0
  218. package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
  219. package/dist/engine/agent-api/app/routeState.d.ts +1 -0
  220. package/dist/engine/agent-api/app/routeState.d.ts.map +1 -1
  221. package/dist/engine/agent-api/app/routeState.js +14 -0
  222. package/dist/engine/agent-api/app/routeState.js.map +1 -1
  223. package/dist/engine/agent-api/app/runtimeNodes.d.ts +7 -0
  224. package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
  225. package/dist/engine/agent-api/app/runtimeNodes.js +340 -12
  226. package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
  227. package/dist/engine/agent-api/assetEvents.d.ts +25 -0
  228. package/dist/engine/agent-api/assetEvents.d.ts.map +1 -0
  229. package/dist/engine/agent-api/assetEvents.js +36 -0
  230. package/dist/engine/agent-api/assetEvents.js.map +1 -0
  231. package/dist/engine/agent-api/camera/Spline.d.ts +10 -4
  232. package/dist/engine/agent-api/camera/Spline.d.ts.map +1 -1
  233. package/dist/engine/agent-api/camera/Spline.js +28 -101
  234. package/dist/engine/agent-api/camera/Spline.js.map +1 -1
  235. package/dist/engine/agent-api/characters/clone.d.ts +55 -0
  236. package/dist/engine/agent-api/characters/clone.d.ts.map +1 -0
  237. package/dist/engine/agent-api/characters/clone.js +99 -0
  238. package/dist/engine/agent-api/characters/clone.js.map +1 -0
  239. package/dist/engine/agent-api/color.d.ts.map +1 -1
  240. package/dist/engine/agent-api/color.js +4 -18
  241. package/dist/engine/agent-api/color.js.map +1 -1
  242. package/dist/engine/agent-api/compiler/actors.d.ts.map +1 -1
  243. package/dist/engine/agent-api/compiler/actors.js +19 -7
  244. package/dist/engine/agent-api/compiler/actors.js.map +1 -1
  245. package/dist/engine/agent-api/compiler/backgroundImage.d.ts +24 -0
  246. package/dist/engine/agent-api/compiler/backgroundImage.d.ts.map +1 -0
  247. package/dist/engine/agent-api/compiler/backgroundImage.js +134 -0
  248. package/dist/engine/agent-api/compiler/backgroundImage.js.map +1 -0
  249. package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
  250. package/dist/engine/agent-api/compiler/compileScene.js +7 -2
  251. package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
  252. package/dist/engine/agent-api/compiler/customMaterial.d.ts +80 -0
  253. package/dist/engine/agent-api/compiler/customMaterial.d.ts.map +1 -0
  254. package/dist/engine/agent-api/compiler/customMaterial.js +628 -0
  255. package/dist/engine/agent-api/compiler/customMaterial.js.map +1 -0
  256. package/dist/engine/agent-api/compiler/environment.d.ts +1 -1
  257. package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
  258. package/dist/engine/agent-api/compiler/environment.js +10 -5
  259. package/dist/engine/agent-api/compiler/environment.js.map +1 -1
  260. package/dist/engine/agent-api/compiler/environmentSourcesState.d.ts +15 -0
  261. package/dist/engine/agent-api/compiler/environmentSourcesState.d.ts.map +1 -0
  262. package/dist/engine/agent-api/compiler/environmentSourcesState.js +13 -0
  263. package/dist/engine/agent-api/compiler/environmentSourcesState.js.map +1 -0
  264. package/dist/engine/agent-api/compiler/errors.d.ts +1 -1
  265. package/dist/engine/agent-api/compiler/errors.d.ts.map +1 -1
  266. package/dist/engine/agent-api/compiler/errors.js.map +1 -1
  267. package/dist/engine/agent-api/compiler/geometry.d.ts +20 -5
  268. package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
  269. package/dist/engine/agent-api/compiler/geometry.js +34 -8
  270. package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
  271. package/dist/engine/agent-api/compiler/handlers.d.ts.map +1 -1
  272. package/dist/engine/agent-api/compiler/handlers.js +35 -1
  273. package/dist/engine/agent-api/compiler/handlers.js.map +1 -1
  274. package/dist/engine/agent-api/compiler/lensFlare.d.ts +21 -0
  275. package/dist/engine/agent-api/compiler/lensFlare.d.ts.map +1 -0
  276. package/dist/engine/agent-api/compiler/lensFlare.js +173 -0
  277. package/dist/engine/agent-api/compiler/lensFlare.js.map +1 -0
  278. package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
  279. package/dist/engine/agent-api/compiler/lights.js +23 -0
  280. package/dist/engine/agent-api/compiler/lights.js.map +1 -1
  281. package/dist/engine/agent-api/compiler/lines.d.ts +23 -0
  282. package/dist/engine/agent-api/compiler/lines.d.ts.map +1 -0
  283. package/dist/engine/agent-api/compiler/lines.js +520 -0
  284. package/dist/engine/agent-api/compiler/lines.js.map +1 -0
  285. package/dist/engine/agent-api/compiler/modelMaterials.d.ts.map +1 -1
  286. package/dist/engine/agent-api/compiler/modelMaterials.js +11 -0
  287. package/dist/engine/agent-api/compiler/modelMaterials.js.map +1 -1
  288. package/dist/engine/agent-api/compiler/observations.d.ts +7 -0
  289. package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
  290. package/dist/engine/agent-api/compiler/observations.js +33 -1
  291. package/dist/engine/agent-api/compiler/observations.js.map +1 -1
  292. package/dist/engine/agent-api/compiler/paritySurfaces.d.ts +37 -0
  293. package/dist/engine/agent-api/compiler/paritySurfaces.d.ts.map +1 -0
  294. package/dist/engine/agent-api/compiler/paritySurfaces.js +310 -0
  295. package/dist/engine/agent-api/compiler/paritySurfaces.js.map +1 -0
  296. package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
  297. package/dist/engine/agent-api/compiler/postprocess.js +6 -3
  298. package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
  299. package/dist/engine/agent-api/compiler/primitives.d.ts +22 -3
  300. package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
  301. package/dist/engine/agent-api/compiler/primitives.js +320 -57
  302. package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
  303. package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
  304. package/dist/engine/agent-api/compiler/renderInput.js +21 -4
  305. package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
  306. package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
  307. package/dist/engine/agent-api/compiler/renderer.js +44 -6
  308. package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
  309. package/dist/engine/agent-api/compiler/textures.d.ts +64 -2
  310. package/dist/engine/agent-api/compiler/textures.d.ts.map +1 -1
  311. package/dist/engine/agent-api/compiler/textures.js +257 -21
  312. package/dist/engine/agent-api/compiler/textures.js.map +1 -1
  313. package/dist/engine/agent-api/devtools/routeHealth.d.ts +12 -1
  314. package/dist/engine/agent-api/devtools/routeHealth.d.ts.map +1 -1
  315. package/dist/engine/agent-api/devtools/routeHealth.js +3 -3
  316. package/dist/engine/agent-api/devtools/routeHealth.js.map +1 -1
  317. package/dist/engine/agent-api/index.d.ts +33 -5
  318. package/dist/engine/agent-api/index.d.ts.map +1 -1
  319. package/dist/engine/agent-api/index.js +19 -3
  320. package/dist/engine/agent-api/index.js.map +1 -1
  321. package/dist/engine/agent-api/lodMarkers.d.ts +23 -0
  322. package/dist/engine/agent-api/lodMarkers.d.ts.map +1 -0
  323. package/dist/engine/agent-api/lodMarkers.js +33 -0
  324. package/dist/engine/agent-api/lodMarkers.js.map +1 -0
  325. package/dist/engine/agent-api/nodes/batched.d.ts +96 -0
  326. package/dist/engine/agent-api/nodes/batched.d.ts.map +1 -0
  327. package/dist/engine/agent-api/nodes/batched.js +456 -0
  328. package/dist/engine/agent-api/nodes/batched.js.map +1 -0
  329. package/dist/engine/agent-api/nodes/batchedState.d.ts +137 -0
  330. package/dist/engine/agent-api/nodes/batchedState.d.ts.map +1 -0
  331. package/dist/engine/agent-api/nodes/batchedState.js +435 -0
  332. package/dist/engine/agent-api/nodes/batchedState.js.map +1 -0
  333. package/dist/engine/agent-api/nodes/builder.d.ts.map +1 -1
  334. package/dist/engine/agent-api/nodes/builder.js +0 -3
  335. package/dist/engine/agent-api/nodes/builder.js.map +1 -1
  336. package/dist/engine/agent-api/nodes/camera.d.ts.map +1 -1
  337. package/dist/engine/agent-api/nodes/camera.js +2 -1
  338. package/dist/engine/agent-api/nodes/camera.js.map +1 -1
  339. package/dist/engine/agent-api/nodes/cameras.d.ts +114 -0
  340. package/dist/engine/agent-api/nodes/cameras.d.ts.map +1 -0
  341. package/dist/engine/agent-api/nodes/cameras.js +107 -0
  342. package/dist/engine/agent-api/nodes/cameras.js.map +1 -0
  343. package/dist/engine/agent-api/nodes/compute.d.ts +48 -0
  344. package/dist/engine/agent-api/nodes/compute.d.ts.map +1 -0
  345. package/dist/engine/agent-api/nodes/compute.js +73 -0
  346. package/dist/engine/agent-api/nodes/compute.js.map +1 -0
  347. package/dist/engine/agent-api/nodes/effects.composite.d.ts +3 -2
  348. package/dist/engine/agent-api/nodes/effects.composite.d.ts.map +1 -1
  349. package/dist/engine/agent-api/nodes/effects.post.d.ts +35 -0
  350. package/dist/engine/agent-api/nodes/effects.post.d.ts.map +1 -1
  351. package/dist/engine/agent-api/nodes/effects.post.js +69 -0
  352. package/dist/engine/agent-api/nodes/effects.post.js.map +1 -1
  353. package/dist/engine/agent-api/nodes/environments.composite.d.ts.map +1 -1
  354. package/dist/engine/agent-api/nodes/environments.d.ts +1 -1
  355. package/dist/engine/agent-api/nodes/environments.js +1 -1
  356. package/dist/engine/agent-api/nodes/environments.js.map +1 -1
  357. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts +19 -6
  358. package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts.map +1 -1
  359. package/dist/engine/agent-api/nodes/game/instanceTransforms.js +31 -9
  360. package/dist/engine/agent-api/nodes/game/instanceTransforms.js.map +1 -1
  361. package/dist/engine/agent-api/nodes/geometry.d.ts +28 -1
  362. package/dist/engine/agent-api/nodes/geometry.d.ts.map +1 -1
  363. package/dist/engine/agent-api/nodes/geometry.js +62 -2
  364. package/dist/engine/agent-api/nodes/geometry.js.map +1 -1
  365. package/dist/engine/agent-api/nodes/groups.d.ts +8 -1
  366. package/dist/engine/agent-api/nodes/groups.d.ts.map +1 -1
  367. package/dist/engine/agent-api/nodes/groups.js +28 -0
  368. package/dist/engine/agent-api/nodes/groups.js.map +1 -1
  369. package/dist/engine/agent-api/nodes/helpers.d.ts +100 -0
  370. package/dist/engine/agent-api/nodes/helpers.d.ts.map +1 -0
  371. package/dist/engine/agent-api/nodes/helpers.js +254 -0
  372. package/dist/engine/agent-api/nodes/helpers.js.map +1 -0
  373. package/dist/engine/agent-api/nodes/instancedMesh.d.ts +87 -0
  374. package/dist/engine/agent-api/nodes/instancedMesh.d.ts.map +1 -0
  375. package/dist/engine/agent-api/nodes/instancedMesh.js +156 -0
  376. package/dist/engine/agent-api/nodes/instancedMesh.js.map +1 -0
  377. package/dist/engine/agent-api/nodes/instances.d.ts +49 -1
  378. package/dist/engine/agent-api/nodes/instances.d.ts.map +1 -1
  379. package/dist/engine/agent-api/nodes/instances.js +21 -0
  380. package/dist/engine/agent-api/nodes/instances.js.map +1 -1
  381. package/dist/engine/agent-api/nodes/lensFlare.d.ts +126 -0
  382. package/dist/engine/agent-api/nodes/lensFlare.d.ts.map +1 -0
  383. package/dist/engine/agent-api/nodes/lensFlare.js +184 -0
  384. package/dist/engine/agent-api/nodes/lensFlare.js.map +1 -0
  385. package/dist/engine/agent-api/nodes/lights.d.ts +34 -0
  386. package/dist/engine/agent-api/nodes/lights.d.ts.map +1 -1
  387. package/dist/engine/agent-api/nodes/lights.js +27 -0
  388. package/dist/engine/agent-api/nodes/lights.js.map +1 -1
  389. package/dist/engine/agent-api/nodes/lines.d.ts +69 -0
  390. package/dist/engine/agent-api/nodes/lines.d.ts.map +1 -0
  391. package/dist/engine/agent-api/nodes/lines.js +136 -0
  392. package/dist/engine/agent-api/nodes/lines.js.map +1 -0
  393. package/dist/engine/agent-api/nodes/material.d.ts +9 -1
  394. package/dist/engine/agent-api/nodes/material.d.ts.map +1 -1
  395. package/dist/engine/agent-api/nodes/material.js +12 -0
  396. package/dist/engine/agent-api/nodes/material.js.map +1 -1
  397. package/dist/engine/agent-api/nodes/overrideMaterial.d.ts +18 -0
  398. package/dist/engine/agent-api/nodes/overrideMaterial.d.ts.map +1 -0
  399. package/dist/engine/agent-api/nodes/overrideMaterial.js +43 -0
  400. package/dist/engine/agent-api/nodes/overrideMaterial.js.map +1 -0
  401. package/dist/engine/agent-api/nodes/points.d.ts +29 -0
  402. package/dist/engine/agent-api/nodes/points.d.ts.map +1 -0
  403. package/dist/engine/agent-api/nodes/points.js +34 -0
  404. package/dist/engine/agent-api/nodes/points.js.map +1 -0
  405. package/dist/engine/agent-api/nodes/primitives.d.ts +11 -0
  406. package/dist/engine/agent-api/nodes/primitives.d.ts.map +1 -1
  407. package/dist/engine/agent-api/nodes/primitives.js +55 -1
  408. package/dist/engine/agent-api/nodes/primitives.js.map +1 -1
  409. package/dist/engine/agent-api/nodes/prompt/promptPlanV2.d.ts.map +1 -1
  410. package/dist/engine/agent-api/nodes/prompt/promptPlanV2.js +6 -2
  411. package/dist/engine/agent-api/nodes/prompt/promptPlanV2.js.map +1 -1
  412. package/dist/engine/agent-api/nodes/prompt/promptRecipes.d.ts.map +1 -1
  413. package/dist/engine/agent-api/nodes/prompt/promptRecipes.js +7 -1
  414. package/dist/engine/agent-api/nodes/prompt/promptRecipes.js.map +1 -1
  415. package/dist/engine/agent-api/nodes/scene.d.ts +22 -3
  416. package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
  417. package/dist/engine/agent-api/nodes/scene.js +41 -2
  418. package/dist/engine/agent-api/nodes/scene.js.map +1 -1
  419. package/dist/engine/agent-api/nodes/sprites.d.ts +29 -0
  420. package/dist/engine/agent-api/nodes/sprites.d.ts.map +1 -0
  421. package/dist/engine/agent-api/nodes/sprites.js +43 -0
  422. package/dist/engine/agent-api/nodes/sprites.js.map +1 -0
  423. package/dist/engine/agent-api/nodes/surfaces.d.ts +48 -0
  424. package/dist/engine/agent-api/nodes/surfaces.d.ts.map +1 -0
  425. package/dist/engine/agent-api/nodes/surfaces.js +32 -0
  426. package/dist/engine/agent-api/nodes/surfaces.js.map +1 -0
  427. package/dist/engine/agent-api/nodes/texture.d.ts +114 -0
  428. package/dist/engine/agent-api/nodes/texture.d.ts.map +1 -0
  429. package/dist/engine/agent-api/nodes/texture.js +590 -0
  430. package/dist/engine/agent-api/nodes/texture.js.map +1 -0
  431. package/dist/engine/agent-api/nodes/types/runtime.d.ts +91 -4
  432. package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
  433. package/dist/engine/agent-api/nodes/types.d.ts +387 -4
  434. package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
  435. package/dist/engine/agent-api/postBridge.d.ts +7 -0
  436. package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
  437. package/dist/engine/agent-api/postBridge.js +63 -5
  438. package/dist/engine/agent-api/postBridge.js.map +1 -1
  439. package/dist/engine/agent-api/public/devtools.d.ts +1 -0
  440. package/dist/engine/agent-api/public/devtools.d.ts.map +1 -1
  441. package/dist/engine/agent-api/public/devtools.js.map +1 -1
  442. package/dist/engine/agent-api/publishedUnion.d.ts +136 -0
  443. package/dist/engine/agent-api/publishedUnion.d.ts.map +1 -1
  444. package/dist/engine/agent-api/publishedUnion.js +109 -0
  445. package/dist/engine/agent-api/publishedUnion.js.map +1 -1
  446. package/dist/engine/agent-api/runtimeEvidence.d.ts +10 -0
  447. package/dist/engine/agent-api/runtimeEvidence.d.ts.map +1 -1
  448. package/dist/engine/agent-api/runtimeEvidence.js +16 -0
  449. package/dist/engine/agent-api/runtimeEvidence.js.map +1 -1
  450. package/dist/engine/agent-api/sceneMath.d.ts +2 -2
  451. package/dist/engine/agent-api/sceneMath.d.ts.map +1 -1
  452. package/dist/engine/agent-api/sceneMath.js +8 -5
  453. package/dist/engine/agent-api/sceneMath.js.map +1 -1
  454. package/dist/engine/agent-api/sceneMath.lookLowering.d.ts +14 -0
  455. package/dist/engine/agent-api/sceneMath.lookLowering.d.ts.map +1 -0
  456. package/dist/engine/agent-api/sceneMath.lookLowering.js +8 -0
  457. package/dist/engine/agent-api/sceneMath.lookLowering.js.map +1 -0
  458. package/dist/engine/agent-api/stereoMath.d.ts +45 -0
  459. package/dist/engine/agent-api/stereoMath.d.ts.map +1 -0
  460. package/dist/engine/agent-api/stereoMath.js +78 -0
  461. package/dist/engine/agent-api/stereoMath.js.map +1 -0
  462. package/dist/engine/agent-api/vfx/atmosphere-api.d.ts +13 -0
  463. package/dist/engine/agent-api/vfx/atmosphere-api.d.ts.map +1 -1
  464. package/dist/engine/agent-api/vfx/atmosphere-api.js +19 -0
  465. package/dist/engine/agent-api/vfx/atmosphere-api.js.map +1 -1
  466. package/dist/engine/agent-api/world/kits.d.ts +1 -1
  467. package/dist/engine/agent-api/world/placement.js.map +1 -1
  468. package/dist/engine/agent-api/world/spline.d.ts +7 -22
  469. package/dist/engine/agent-api/world/spline.d.ts.map +1 -1
  470. package/dist/engine/agent-api/world/spline.js +30 -24
  471. package/dist/engine/agent-api/world/spline.js.map +1 -1
  472. package/dist/engine/agent-api/xr/index.d.ts +18 -0
  473. package/dist/engine/agent-api/xr/index.d.ts.map +1 -0
  474. package/dist/engine/agent-api/xr/index.js +15 -0
  475. package/dist/engine/agent-api/xr/index.js.map +1 -0
  476. package/dist/engine/agent-api/xr/types.d.ts +85 -0
  477. package/dist/engine/agent-api/xr/types.d.ts.map +1 -0
  478. package/dist/engine/agent-api/xr/types.js +2 -0
  479. package/dist/engine/agent-api/xr/types.js.map +1 -0
  480. package/dist/engine/agent-api/xr/xrButton.d.ts +50 -0
  481. package/dist/engine/agent-api/xr/xrButton.d.ts.map +1 -0
  482. package/dist/engine/agent-api/xr/xrButton.js +93 -0
  483. package/dist/engine/agent-api/xr/xrButton.js.map +1 -0
  484. package/dist/engine/agent-api/xr/xrRuntime.d.ts +40 -0
  485. package/dist/engine/agent-api/xr/xrRuntime.d.ts.map +1 -0
  486. package/dist/engine/agent-api/xr/xrRuntime.js +236 -0
  487. package/dist/engine/agent-api/xr/xrRuntime.js.map +1 -0
  488. package/dist/engine/agent-api/xr/xrViewOverride.d.ts +35 -0
  489. package/dist/engine/agent-api/xr/xrViewOverride.d.ts.map +1 -0
  490. package/dist/engine/agent-api/xr/xrViewOverride.js +99 -0
  491. package/dist/engine/agent-api/xr/xrViewOverride.js.map +1 -0
  492. package/dist/engine/contracts/compiler.d.ts +5 -0
  493. package/dist/engine/contracts/compiler.d.ts.map +1 -1
  494. package/dist/engine/contracts/compiler.js.map +1 -1
  495. package/dist/engine/contracts/flags.d.ts.map +1 -1
  496. package/dist/engine/contracts/flags.js +19 -2
  497. package/dist/engine/contracts/flags.js.map +1 -1
  498. package/dist/engine/contracts/post.d.ts +12 -0
  499. package/dist/engine/contracts/post.d.ts.map +1 -1
  500. package/dist/engine/contracts/post.js.map +1 -1
  501. package/dist/engine/index.d.ts +1 -0
  502. package/dist/engine/index.d.ts.map +1 -1
  503. package/dist/engine/index.js +5 -0
  504. package/dist/engine/index.js.map +1 -1
  505. package/dist/engine/lanes/prd02.d.ts +1 -0
  506. package/dist/engine/lanes/prd02.d.ts.map +1 -1
  507. package/dist/engine/lanes/prd02.js +15 -0
  508. package/dist/engine/lanes/prd02.js.map +1 -1
  509. package/dist/engine/lanes/prd13.d.ts.map +1 -1
  510. package/dist/engine/lanes/prd13.js +4 -1
  511. package/dist/engine/lanes/prd13.js.map +1 -1
  512. package/dist/engine/production-runtime/TypedGLBActor.d.ts +8 -1
  513. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  514. package/dist/engine/production-runtime/TypedGLBActor.js +4 -3
  515. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  516. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.d.ts +5 -1
  517. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.d.ts.map +1 -1
  518. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.js +10 -6
  519. package/dist/engine/production-runtime/actor/TypedGLBActorAnimation.js.map +1 -1
  520. package/dist/engine/production-runtime/effects/EffectNodeLowering.d.ts +19 -1
  521. package/dist/engine/production-runtime/effects/EffectNodeLowering.d.ts.map +1 -1
  522. package/dist/engine/production-runtime/effects/EffectNodeLowering.js +39 -25
  523. package/dist/engine/production-runtime/effects/EffectNodeLowering.js.map +1 -1
  524. package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts +5 -0
  525. package/dist/engine/production-runtime/effects/ProductionEffectSystem.d.ts.map +1 -1
  526. package/dist/engine/production-runtime/effects/ProductionEffectSystem.js +79 -8
  527. package/dist/engine/production-runtime/effects/ProductionEffectSystem.js.map +1 -1
  528. package/dist/engine/public/index.d.ts +6 -2
  529. package/dist/engine/public/index.d.ts.map +1 -1
  530. package/dist/engine/public/index.js +5 -1
  531. package/dist/engine/public/index.js.map +1 -1
  532. package/dist/engine/public/renderTarget.d.ts +14 -0
  533. package/dist/engine/public/renderTarget.d.ts.map +1 -0
  534. package/dist/engine/public/renderTarget.js +13 -0
  535. package/dist/engine/public/renderTarget.js.map +1 -0
  536. package/dist/engine/public/renderer.d.ts +4 -0
  537. package/dist/engine/public/renderer.d.ts.map +1 -1
  538. package/dist/engine/public/renderer.js +8 -0
  539. package/dist/engine/public/renderer.js.map +1 -1
  540. package/dist/input/WebXRSessionController.d.ts +43 -0
  541. package/dist/input/WebXRSessionController.d.ts.map +1 -1
  542. package/dist/input/WebXRSessionController.js +8 -0
  543. package/dist/input/WebXRSessionController.js.map +1 -1
  544. package/dist/input/index.d.ts +1 -15
  545. package/dist/input/index.d.ts.map +1 -1
  546. package/dist/input/index.js +0 -7
  547. package/dist/input/index.js.map +1 -1
  548. package/dist/math/Box3.d.ts +50 -0
  549. package/dist/math/Box3.d.ts.map +1 -1
  550. package/dist/math/Box3.js +177 -6
  551. package/dist/math/Box3.js.map +1 -1
  552. package/dist/math/Capsule.d.ts +25 -0
  553. package/dist/math/Capsule.d.ts.map +1 -0
  554. package/dist/math/Capsule.js +54 -0
  555. package/dist/math/Capsule.js.map +1 -0
  556. package/dist/math/Color.d.ts +27 -0
  557. package/dist/math/Color.d.ts.map +1 -1
  558. package/dist/math/Color.js +87 -0
  559. package/dist/math/Color.js.map +1 -1
  560. package/dist/math/ConvexHull.d.ts +100 -0
  561. package/dist/math/ConvexHull.d.ts.map +1 -0
  562. package/dist/math/ConvexHull.js +578 -0
  563. package/dist/math/ConvexHull.js.map +1 -0
  564. package/dist/math/Curves.d.ts +59 -18
  565. package/dist/math/Curves.d.ts.map +1 -1
  566. package/dist/math/Curves.js +15 -73
  567. package/dist/math/Curves.js.map +1 -1
  568. package/dist/math/Cylindrical.d.ts +19 -0
  569. package/dist/math/Cylindrical.d.ts.map +1 -0
  570. package/dist/math/Cylindrical.js +40 -0
  571. package/dist/math/Cylindrical.js.map +1 -0
  572. package/dist/math/Euler.d.ts +24 -0
  573. package/dist/math/Euler.d.ts.map +1 -1
  574. package/dist/math/Euler.js +126 -2
  575. package/dist/math/Euler.js.map +1 -1
  576. package/dist/math/Frustum.d.ts +18 -0
  577. package/dist/math/Frustum.d.ts.map +1 -1
  578. package/dist/math/Frustum.js +62 -12
  579. package/dist/math/Frustum.js.map +1 -1
  580. package/dist/math/Line3.d.ts +38 -0
  581. package/dist/math/Line3.d.ts.map +1 -0
  582. package/dist/math/Line3.js +122 -0
  583. package/dist/math/Line3.js.map +1 -0
  584. package/dist/math/MathUtils.d.ts +37 -0
  585. package/dist/math/MathUtils.d.ts.map +1 -0
  586. package/dist/math/MathUtils.js +105 -0
  587. package/dist/math/MathUtils.js.map +1 -0
  588. package/dist/math/Matrix3.d.ts +23 -2
  589. package/dist/math/Matrix3.d.ts.map +1 -1
  590. package/dist/math/Matrix3.js +90 -0
  591. package/dist/math/Matrix3.js.map +1 -1
  592. package/dist/math/Matrix4.d.ts +3 -0
  593. package/dist/math/Matrix4.d.ts.map +1 -1
  594. package/dist/math/Matrix4.js +17 -0
  595. package/dist/math/Matrix4.js.map +1 -1
  596. package/dist/math/OBB.d.ts +44 -0
  597. package/dist/math/OBB.d.ts.map +1 -0
  598. package/dist/math/OBB.js +214 -0
  599. package/dist/math/OBB.js.map +1 -0
  600. package/dist/math/Octree.d.ts +72 -0
  601. package/dist/math/Octree.d.ts.map +1 -0
  602. package/dist/math/Octree.js +385 -0
  603. package/dist/math/Octree.js.map +1 -0
  604. package/dist/math/Plane.d.ts +42 -0
  605. package/dist/math/Plane.d.ts.map +1 -1
  606. package/dist/math/Plane.js +79 -3
  607. package/dist/math/Plane.js.map +1 -1
  608. package/dist/math/Quaternion.d.ts +6 -1
  609. package/dist/math/Quaternion.d.ts.map +1 -1
  610. package/dist/math/Quaternion.js +28 -3
  611. package/dist/math/Quaternion.js.map +1 -1
  612. package/dist/math/Ray.d.ts +42 -2
  613. package/dist/math/Ray.d.ts.map +1 -1
  614. package/dist/math/Ray.js +202 -9
  615. package/dist/math/Ray.js.map +1 -1
  616. package/dist/math/ShapeUtils.d.ts +28 -0
  617. package/dist/math/ShapeUtils.d.ts.map +1 -0
  618. package/dist/math/ShapeUtils.js +551 -0
  619. package/dist/math/ShapeUtils.js.map +1 -0
  620. package/dist/math/Sphere.d.ts +32 -0
  621. package/dist/math/Sphere.d.ts.map +1 -1
  622. package/dist/math/Sphere.js +122 -4
  623. package/dist/math/Sphere.js.map +1 -1
  624. package/dist/math/Spherical.d.ts +21 -0
  625. package/dist/math/Spherical.d.ts.map +1 -0
  626. package/dist/math/Spherical.js +50 -0
  627. package/dist/math/Spherical.js.map +1 -0
  628. package/dist/math/SphericalHarmonics3.d.ts +35 -0
  629. package/dist/math/SphericalHarmonics3.d.ts.map +1 -0
  630. package/dist/math/SphericalHarmonics3.js +115 -0
  631. package/dist/math/SphericalHarmonics3.js.map +1 -0
  632. package/dist/math/Triangle.d.ts +45 -0
  633. package/dist/math/Triangle.d.ts.map +1 -0
  634. package/dist/math/Triangle.js +160 -0
  635. package/dist/math/Triangle.js.map +1 -0
  636. package/dist/math/Vector2.d.ts +7 -0
  637. package/dist/math/Vector2.d.ts.map +1 -1
  638. package/dist/math/Vector2.js +17 -0
  639. package/dist/math/Vector2.js.map +1 -1
  640. package/dist/math/Vector3.d.ts +16 -0
  641. package/dist/math/Vector3.d.ts.map +1 -1
  642. package/dist/math/Vector3.js +35 -0
  643. package/dist/math/Vector3.js.map +1 -1
  644. package/dist/math/curves/ArcCurve.d.ts +7 -0
  645. package/dist/math/curves/ArcCurve.d.ts.map +1 -0
  646. package/dist/math/curves/ArcCurve.js +9 -0
  647. package/dist/math/curves/ArcCurve.js.map +1 -0
  648. package/dist/math/curves/CatmullRomCurve3.d.ts +39 -0
  649. package/dist/math/curves/CatmullRomCurve3.d.ts.map +1 -0
  650. package/dist/math/curves/CatmullRomCurve3.js +176 -0
  651. package/dist/math/curves/CatmullRomCurve3.js.map +1 -0
  652. package/dist/math/curves/ClampedCatmullRomCurve3.d.ts +26 -0
  653. package/dist/math/curves/ClampedCatmullRomCurve3.d.ts.map +1 -0
  654. package/dist/math/curves/ClampedCatmullRomCurve3.js +48 -0
  655. package/dist/math/curves/ClampedCatmullRomCurve3.js.map +1 -0
  656. package/dist/math/curves/CubicBezierCurve.d.ts +14 -0
  657. package/dist/math/curves/CubicBezierCurve.d.ts.map +1 -0
  658. package/dist/math/curves/CubicBezierCurve.js +25 -0
  659. package/dist/math/curves/CubicBezierCurve.js.map +1 -0
  660. package/dist/math/curves/CubicBezierCurve3.d.ts +14 -0
  661. package/dist/math/curves/CubicBezierCurve3.d.ts.map +1 -0
  662. package/dist/math/curves/CubicBezierCurve3.js +25 -0
  663. package/dist/math/curves/CubicBezierCurve3.js.map +1 -0
  664. package/dist/math/curves/CurveBase.d.ts +49 -0
  665. package/dist/math/curves/CurveBase.d.ts.map +1 -0
  666. package/dist/math/curves/CurveBase.js +199 -0
  667. package/dist/math/curves/CurveBase.js.map +1 -0
  668. package/dist/math/curves/CurvePath.d.ts +34 -0
  669. package/dist/math/curves/CurvePath.d.ts.map +1 -0
  670. package/dist/math/curves/CurvePath.js +135 -0
  671. package/dist/math/curves/CurvePath.js.map +1 -0
  672. package/dist/math/curves/EllipseCurve.d.ts +18 -0
  673. package/dist/math/curves/EllipseCurve.d.ts.map +1 -0
  674. package/dist/math/curves/EllipseCurve.js +67 -0
  675. package/dist/math/curves/EllipseCurve.js.map +1 -0
  676. package/dist/math/curves/Interpolations.d.ts +9 -0
  677. package/dist/math/curves/Interpolations.d.ts.map +1 -0
  678. package/dist/math/curves/Interpolations.js +21 -0
  679. package/dist/math/curves/Interpolations.js.map +1 -0
  680. package/dist/math/curves/LineCurve.d.ts +16 -0
  681. package/dist/math/curves/LineCurve.d.ts.map +1 -0
  682. package/dist/math/curves/LineCurve.js +32 -0
  683. package/dist/math/curves/LineCurve.js.map +1 -0
  684. package/dist/math/curves/LineCurve3.d.ts +16 -0
  685. package/dist/math/curves/LineCurve3.d.ts.map +1 -0
  686. package/dist/math/curves/LineCurve3.js +32 -0
  687. package/dist/math/curves/LineCurve3.js.map +1 -0
  688. package/dist/math/curves/Path.d.ts +23 -0
  689. package/dist/math/curves/Path.d.ts.map +1 -0
  690. package/dist/math/curves/Path.js +94 -0
  691. package/dist/math/curves/Path.js.map +1 -0
  692. package/dist/math/curves/QuadraticBezierCurve.d.ts +13 -0
  693. package/dist/math/curves/QuadraticBezierCurve.d.ts.map +1 -0
  694. package/dist/math/curves/QuadraticBezierCurve.js +23 -0
  695. package/dist/math/curves/QuadraticBezierCurve.js.map +1 -0
  696. package/dist/math/curves/QuadraticBezierCurve3.d.ts +13 -0
  697. package/dist/math/curves/QuadraticBezierCurve3.d.ts.map +1 -0
  698. package/dist/math/curves/QuadraticBezierCurve3.js +23 -0
  699. package/dist/math/curves/QuadraticBezierCurve3.js.map +1 -0
  700. package/dist/math/curves/Shape.d.ts +15 -0
  701. package/dist/math/curves/Shape.d.ts.map +1 -0
  702. package/dist/math/curves/Shape.js +26 -0
  703. package/dist/math/curves/Shape.js.map +1 -0
  704. package/dist/math/curves/SplineCurve.d.ts +11 -0
  705. package/dist/math/curves/SplineCurve.d.ts.map +1 -0
  706. package/dist/math/curves/SplineCurve.js +27 -0
  707. package/dist/math/curves/SplineCurve.js.map +1 -0
  708. package/dist/math/index.d.ts +12 -0
  709. package/dist/math/index.d.ts.map +1 -1
  710. package/dist/math/index.js +16 -0
  711. package/dist/math/index.js.map +1 -1
  712. package/dist/physics-rapier/index.d.ts.map +1 -1
  713. package/dist/physics-rapier/index.js +20 -5
  714. package/dist/physics-rapier/index.js.map +1 -1
  715. package/dist/rendering/EnvironmentPlatform.d.ts.map +1 -1
  716. package/dist/rendering/EnvironmentPlatform.js +6 -2
  717. package/dist/rendering/EnvironmentPlatform.js.map +1 -1
  718. package/dist/rendering/ForwardPass.d.ts +2 -0
  719. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  720. package/dist/rendering/ForwardPass.js +70 -5
  721. package/dist/rendering/ForwardPass.js.map +1 -1
  722. package/dist/rendering/Geometry.d.ts +40 -0
  723. package/dist/rendering/Geometry.d.ts.map +1 -1
  724. package/dist/rendering/Geometry.js +39 -2
  725. package/dist/rendering/Geometry.js.map +1 -1
  726. package/dist/rendering/IndexBuffer.d.ts +16 -1
  727. package/dist/rendering/IndexBuffer.d.ts.map +1 -1
  728. package/dist/rendering/IndexBuffer.js +46 -1
  729. package/dist/rendering/IndexBuffer.js.map +1 -1
  730. package/dist/rendering/InstancedPBRMaterial.d.ts +2 -0
  731. package/dist/rendering/InstancedPBRMaterial.d.ts.map +1 -1
  732. package/dist/rendering/InstancedPBRMaterial.js +1 -0
  733. package/dist/rendering/InstancedPBRMaterial.js.map +1 -1
  734. package/dist/rendering/Material.d.ts +9 -0
  735. package/dist/rendering/Material.d.ts.map +1 -1
  736. package/dist/rendering/Material.js +3 -0
  737. package/dist/rendering/Material.js.map +1 -1
  738. package/dist/rendering/PBRMaterial.d.ts +2 -0
  739. package/dist/rendering/PBRMaterial.d.ts.map +1 -1
  740. package/dist/rendering/PBRMaterial.js +1 -0
  741. package/dist/rendering/PBRMaterial.js.map +1 -1
  742. package/dist/rendering/PortableShaderMaterial.d.ts +13 -3
  743. package/dist/rendering/PortableShaderMaterial.d.ts.map +1 -1
  744. package/dist/rendering/PortableShaderMaterial.js +24 -12
  745. package/dist/rendering/PortableShaderMaterial.js.map +1 -1
  746. package/dist/rendering/RenderDevice.d.ts +98 -0
  747. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  748. package/dist/rendering/RenderDevice.js +129 -0
  749. package/dist/rendering/RenderDevice.js.map +1 -1
  750. package/dist/rendering/Renderer.d.ts +94 -0
  751. package/dist/rendering/Renderer.d.ts.map +1 -1
  752. package/dist/rendering/Renderer.js +321 -26
  753. package/dist/rendering/Renderer.js.map +1 -1
  754. package/dist/rendering/Sampler.d.ts +35 -0
  755. package/dist/rendering/Sampler.d.ts.map +1 -1
  756. package/dist/rendering/Sampler.js +96 -0
  757. package/dist/rendering/Sampler.js.map +1 -1
  758. package/dist/rendering/ShaderLibraryCore.d.ts +14 -0
  759. package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
  760. package/dist/rendering/ShaderLibraryCore.js +94 -4
  761. package/dist/rendering/ShaderLibraryCore.js.map +1 -1
  762. package/dist/rendering/Texture.d.ts +53 -1
  763. package/dist/rendering/Texture.d.ts.map +1 -1
  764. package/dist/rendering/Texture.js +53 -2
  765. package/dist/rendering/Texture.js.map +1 -1
  766. package/dist/rendering/UnlitMaterial.d.ts +46 -0
  767. package/dist/rendering/UnlitMaterial.d.ts.map +1 -1
  768. package/dist/rendering/UnlitMaterial.js +32 -3
  769. package/dist/rendering/UnlitMaterial.js.map +1 -1
  770. package/dist/rendering/VertexFormat.d.ts +19 -1
  771. package/dist/rendering/VertexFormat.d.ts.map +1 -1
  772. package/dist/rendering/VertexFormat.js +40 -1
  773. package/dist/rendering/VertexFormat.js.map +1 -1
  774. package/dist/rendering/WebGL2Device.d.ts +16 -0
  775. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  776. package/dist/rendering/WebGL2Device.js +31 -6
  777. package/dist/rendering/WebGL2Device.js.map +1 -1
  778. package/dist/rendering/WebGPUDevice.d.ts +92 -1
  779. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  780. package/dist/rendering/WebGPUDevice.js +417 -44
  781. package/dist/rendering/WebGPUDevice.js.map +1 -1
  782. package/dist/rendering/batching/BatchedGeometryPool.d.ts +22 -1
  783. package/dist/rendering/batching/BatchedGeometryPool.d.ts.map +1 -1
  784. package/dist/rendering/batching/BatchedGeometryPool.js +50 -2
  785. package/dist/rendering/batching/BatchedGeometryPool.js.map +1 -1
  786. package/dist/rendering/batching/DrawDataTexture.d.ts +21 -1
  787. package/dist/rendering/batching/DrawDataTexture.d.ts.map +1 -1
  788. package/dist/rendering/batching/DrawDataTexture.js +30 -4
  789. package/dist/rendering/batching/DrawDataTexture.js.map +1 -1
  790. package/dist/rendering/batching/MultiDrawBatch.d.ts +26 -0
  791. package/dist/rendering/batching/MultiDrawBatch.d.ts.map +1 -1
  792. package/dist/rendering/batching/MultiDrawBatch.js +64 -2
  793. package/dist/rendering/batching/MultiDrawBatch.js.map +1 -1
  794. package/dist/rendering/batching/index.d.ts +2 -2
  795. package/dist/rendering/batching/index.d.ts.map +1 -1
  796. package/dist/rendering/batching/index.js +2 -2
  797. package/dist/rendering/batching/index.js.map +1 -1
  798. package/dist/rendering/compute/ComputeContext.d.ts +84 -0
  799. package/dist/rendering/compute/ComputeContext.d.ts.map +1 -0
  800. package/dist/rendering/compute/ComputeContext.js +371 -0
  801. package/dist/rendering/compute/ComputeContext.js.map +1 -0
  802. package/dist/rendering/compute/index.d.ts +4 -0
  803. package/dist/rendering/compute/index.d.ts.map +1 -0
  804. package/dist/rendering/compute/index.js +3 -0
  805. package/dist/rendering/compute/index.js.map +1 -0
  806. package/dist/rendering/compute/types.d.ts +108 -0
  807. package/dist/rendering/compute/types.d.ts.map +1 -0
  808. package/dist/rendering/compute/types.js +25 -0
  809. package/dist/rendering/compute/types.js.map +1 -0
  810. package/dist/rendering/contracts/core.d.ts +1 -1
  811. package/dist/rendering/contracts/core.d.ts.map +1 -1
  812. package/dist/rendering/contracts/core.js.map +1 -1
  813. package/dist/rendering/contracts/flags.state.d.ts.map +1 -1
  814. package/dist/rendering/contracts/flags.state.js +20 -1
  815. package/dist/rendering/contracts/flags.state.js.map +1 -1
  816. package/dist/rendering/contracts/output.d.ts +1 -1
  817. package/dist/rendering/contracts/output.d.ts.map +1 -1
  818. package/dist/rendering/contracts/output.js.map +1 -1
  819. package/dist/rendering/contracts/post.d.ts +7 -0
  820. package/dist/rendering/contracts/post.d.ts.map +1 -1
  821. package/dist/rendering/contracts/post.js.map +1 -1
  822. package/dist/rendering/contracts/renderItem.d.ts +15 -0
  823. package/dist/rendering/contracts/renderItem.d.ts.map +1 -1
  824. package/dist/rendering/contracts/renderSource.d.ts +3 -1
  825. package/dist/rendering/contracts/renderSource.d.ts.map +1 -1
  826. package/dist/rendering/contracts/sampling.d.ts +23 -0
  827. package/dist/rendering/contracts/sampling.d.ts.map +1 -1
  828. package/dist/rendering/contracts/sampling.js.map +1 -1
  829. package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
  830. package/dist/rendering/environment/EnvironmentCache.js +7 -3
  831. package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
  832. package/dist/rendering/environment/RoomEnvironmentScene.d.ts +2 -2
  833. package/dist/rendering/environment/RoomEnvironmentScene.d.ts.map +1 -1
  834. package/dist/rendering/environment/RoomEnvironmentScene.js.map +1 -1
  835. package/dist/rendering/geometry/Circle.d.ts +14 -0
  836. package/dist/rendering/geometry/Circle.d.ts.map +1 -0
  837. package/dist/rendering/geometry/Circle.js +31 -0
  838. package/dist/rendering/geometry/Circle.js.map +1 -0
  839. package/dist/rendering/geometry/Cone.d.ts +37 -0
  840. package/dist/rendering/geometry/Cone.d.ts.map +1 -0
  841. package/dist/rendering/geometry/Cone.js +129 -0
  842. package/dist/rendering/geometry/Cone.js.map +1 -0
  843. package/dist/rendering/geometry/Convex.d.ts +19 -0
  844. package/dist/rendering/geometry/Convex.d.ts.map +1 -0
  845. package/dist/rendering/geometry/Convex.js +27 -0
  846. package/dist/rendering/geometry/Convex.js.map +1 -0
  847. package/dist/rendering/geometry/Edges.d.ts +15 -0
  848. package/dist/rendering/geometry/Edges.d.ts.map +1 -0
  849. package/dist/rendering/geometry/Edges.js +98 -0
  850. package/dist/rendering/geometry/Edges.js.map +1 -0
  851. package/dist/rendering/geometry/Extrude.d.ts +29 -0
  852. package/dist/rendering/geometry/Extrude.d.ts.map +1 -0
  853. package/dist/rendering/geometry/Extrude.js +403 -0
  854. package/dist/rendering/geometry/Extrude.js.map +1 -0
  855. package/dist/rendering/geometry/Lathe.d.ts +20 -0
  856. package/dist/rendering/geometry/Lathe.d.ts.map +1 -0
  857. package/dist/rendering/geometry/Lathe.js +94 -0
  858. package/dist/rendering/geometry/Lathe.js.map +1 -0
  859. package/dist/rendering/geometry/Polyhedron.d.ts +21 -0
  860. package/dist/rendering/geometry/Polyhedron.d.ts.map +1 -0
  861. package/dist/rendering/geometry/Polyhedron.js +201 -0
  862. package/dist/rendering/geometry/Polyhedron.js.map +1 -0
  863. package/dist/rendering/geometry/Primitives.d.ts +38 -2
  864. package/dist/rendering/geometry/Primitives.d.ts.map +1 -1
  865. package/dist/rendering/geometry/Primitives.js +114 -0
  866. package/dist/rendering/geometry/Primitives.js.map +1 -1
  867. package/dist/rendering/geometry/Ring.d.ts +16 -0
  868. package/dist/rendering/geometry/Ring.d.ts.map +1 -0
  869. package/dist/rendering/geometry/Ring.js +44 -0
  870. package/dist/rendering/geometry/Ring.js.map +1 -0
  871. package/dist/rendering/geometry/RoundedBox.d.ts +22 -0
  872. package/dist/rendering/geometry/RoundedBox.d.ts.map +1 -0
  873. package/dist/rendering/geometry/RoundedBox.js +191 -0
  874. package/dist/rendering/geometry/RoundedBox.js.map +1 -0
  875. package/dist/rendering/geometry/Shape.d.ts +15 -0
  876. package/dist/rendering/geometry/Shape.d.ts.map +1 -0
  877. package/dist/rendering/geometry/Shape.js +44 -0
  878. package/dist/rendering/geometry/Shape.js.map +1 -0
  879. package/dist/rendering/geometry/Support.d.ts +137 -0
  880. package/dist/rendering/geometry/Support.d.ts.map +1 -0
  881. package/dist/rendering/geometry/Support.js +1066 -0
  882. package/dist/rendering/geometry/Support.js.map +1 -0
  883. package/dist/rendering/geometry/TorusKnot.d.ts +18 -0
  884. package/dist/rendering/geometry/TorusKnot.d.ts.map +1 -0
  885. package/dist/rendering/geometry/TorusKnot.js +83 -0
  886. package/dist/rendering/geometry/TorusKnot.js.map +1 -0
  887. package/dist/rendering/geometry/Tube.d.ts +19 -0
  888. package/dist/rendering/geometry/Tube.d.ts.map +1 -0
  889. package/dist/rendering/geometry/Tube.js +70 -0
  890. package/dist/rendering/geometry/Tube.js.map +1 -0
  891. package/dist/rendering/geometry/Wireframe.d.ts +19 -0
  892. package/dist/rendering/geometry/Wireframe.d.ts.map +1 -0
  893. package/dist/rendering/geometry/Wireframe.js +63 -0
  894. package/dist/rendering/geometry/Wireframe.js.map +1 -0
  895. package/dist/rendering/index.d.ts +38 -7
  896. package/dist/rendering/index.d.ts.map +1 -1
  897. package/dist/rendering/index.js +25 -3
  898. package/dist/rendering/index.js.map +1 -1
  899. package/dist/rendering/lanes/prd11.js +1 -1
  900. package/dist/rendering/lanes/prd11.js.map +1 -1
  901. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts +1 -1
  902. package/dist/rendering/output/ToneMappingOperators.glsl.d.ts.map +1 -1
  903. package/dist/rendering/output/ToneMappingOperators.glsl.js +9 -1
  904. package/dist/rendering/output/ToneMappingOperators.glsl.js.map +1 -1
  905. package/dist/rendering/post/v2Entry.d.ts +1 -0
  906. package/dist/rendering/post/v2Entry.d.ts.map +1 -1
  907. package/dist/rendering/post/v2Entry.js.map +1 -1
  908. package/dist/rendering/post/v2Stages.d.ts +30 -1
  909. package/dist/rendering/post/v2Stages.d.ts.map +1 -1
  910. package/dist/rendering/post/v2Stages.js +87 -21
  911. package/dist/rendering/post/v2Stages.js.map +1 -1
  912. package/dist/rendering/program/ProgramCache.d.ts.map +1 -1
  913. package/dist/rendering/program/ProgramCache.js +12 -0
  914. package/dist/rendering/program/ProgramCache.js.map +1 -1
  915. package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
  916. package/dist/rendering/program/ProgramGenerator.js +3 -0
  917. package/dist/rendering/program/ProgramGenerator.js.map +1 -1
  918. package/dist/rendering/reference/PostProcessPass.d.ts +1 -1
  919. package/dist/rendering/reference/PostProcessPass.d.ts.map +1 -1
  920. package/dist/rendering/reference/PostProcessPass.js +8 -1
  921. package/dist/rendering/reference/PostProcessPass.js.map +1 -1
  922. package/dist/rendering/renderer/CullingBatching.d.ts +44 -2
  923. package/dist/rendering/renderer/CullingBatching.d.ts.map +1 -1
  924. package/dist/rendering/renderer/CullingBatching.js +66 -11
  925. package/dist/rendering/renderer/CullingBatching.js.map +1 -1
  926. package/dist/rendering/shaders/chunks/lighting_mirrors.d.ts +2 -2
  927. package/dist/rendering/shaders/chunks/lighting_mirrors.d.ts.map +1 -1
  928. package/dist/rendering/shaders/chunks/lighting_mirrors.js.map +1 -1
  929. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts +8 -8
  930. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
  931. package/dist/rendering/shadows/DirectionalCascadeFitter.js.map +1 -1
  932. package/dist/rendering/shadows/ShadowAtlas.d.ts +5 -5
  933. package/dist/rendering/shadows/ShadowAtlas.d.ts.map +1 -1
  934. package/dist/rendering/shadows/ShadowAtlas.js.map +1 -1
  935. package/dist/rendering/vfx/ProceduralVolumeEmitter.d.ts +11 -0
  936. package/dist/rendering/vfx/ProceduralVolumeEmitter.d.ts.map +1 -1
  937. package/dist/rendering/vfx/ProceduralVolumeEmitter.js +20 -6
  938. package/dist/rendering/vfx/ProceduralVolumeEmitter.js.map +1 -1
  939. package/dist/rendering/webgl2/ContextLifecycle.d.ts +36 -0
  940. package/dist/rendering/webgl2/ContextLifecycle.d.ts.map +1 -1
  941. package/dist/rendering/webgl2/ContextLifecycle.js +110 -2
  942. package/dist/rendering/webgl2/ContextLifecycle.js.map +1 -1
  943. package/dist/rendering/webgl2/LegacyPost.d.ts +16 -1
  944. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  945. package/dist/rendering/webgl2/LegacyPost.js +49 -16
  946. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  947. package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
  948. package/dist/rendering/webgl2/MultiDraw.js +42 -2
  949. package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
  950. package/dist/rendering/webgl2/TextureUpload.d.ts +7 -0
  951. package/dist/rendering/webgl2/TextureUpload.d.ts.map +1 -1
  952. package/dist/rendering/webgl2/TextureUpload.js +54 -10
  953. package/dist/rendering/webgl2/TextureUpload.js.map +1 -1
  954. package/dist/scene/Layers.d.ts +5 -0
  955. package/dist/scene/Layers.d.ts.map +1 -1
  956. package/dist/scene/Layers.js +13 -0
  957. package/dist/scene/Layers.js.map +1 -1
  958. package/dist/scene/SceneNode.d.ts +27 -1
  959. package/dist/scene/SceneNode.d.ts.map +1 -1
  960. package/dist/scene/SceneNode.js +33 -1
  961. package/dist/scene/SceneNode.js.map +1 -1
  962. package/package.json +76 -31
  963. package/templates/cinematic-scene/index.html +2 -28
  964. package/templates/cinematic-scene/package.json +2 -1
  965. package/templates/cinematic-scene/src/main.ts +3 -3
  966. package/templates/cinematic-scene/tests/look-floor.ts +73 -3
  967. package/templates/cinematic-scene/tests/route-health.spec.ts +1 -1
  968. package/templates/cinematic-scene/tests/screenshot.spec.ts +12 -2
  969. package/templates/cinematic-scene/vite.config.ts +7 -0
  970. package/templates/mini-game/index.html +1 -27
  971. package/templates/mini-game/package-lock.json +1312 -0
  972. package/templates/mini-game/package.json +2 -1
  973. package/templates/mini-game/src/main.ts +1 -1
  974. package/templates/mini-game/tests/certified-rig.spec.ts +1 -1
  975. package/templates/mini-game/tests/look-floor.ts +73 -3
  976. package/templates/mini-game/tests/playable.spec.ts +57 -12
  977. package/templates/mini-game/tests/screenshot.spec.ts +12 -2
  978. package/templates/mini-game/vite.config.ts +7 -0
  979. package/templates/product-viewer/index.html +2 -27
  980. package/templates/product-viewer/package.json +2 -1
  981. package/templates/product-viewer/tests/look-floor.ts +73 -3
  982. package/templates/product-viewer/tests/screenshot.spec.ts +13 -4
  983. package/templates/product-viewer/vite.config.ts +7 -0
  984. package/templates/production-asset-inspector/package.json +1 -1
  985. package/templates/production-material-studio/package.json +1 -1
  986. package/templates/production-product-configurator/package.json +1 -1
  987. package/templates/production-product-viewer/package.json +1 -1
  988. package/dist/input/controls/CameraRig.d.ts +0 -3
  989. package/dist/input/controls/CameraRig.d.ts.map +0 -1
  990. package/dist/input/controls/CameraRig.js +0 -3
  991. package/dist/input/controls/CameraRig.js.map +0 -1
  992. package/dist/input/controls/ControlTypes.d.ts +0 -3
  993. package/dist/input/controls/ControlTypes.d.ts.map +0 -1
  994. package/dist/input/controls/ControlTypes.js +0 -3
  995. package/dist/input/controls/ControlTypes.js.map +0 -1
  996. package/dist/input/controls/EditorFlyControls.d.ts +0 -3
  997. package/dist/input/controls/EditorFlyControls.d.ts.map +0 -1
  998. package/dist/input/controls/EditorFlyControls.js +0 -3
  999. package/dist/input/controls/EditorFlyControls.js.map +0 -1
  1000. package/dist/input/controls/FirstPersonControls.d.ts +0 -3
  1001. package/dist/input/controls/FirstPersonControls.d.ts.map +0 -1
  1002. package/dist/input/controls/FirstPersonControls.js +0 -3
  1003. package/dist/input/controls/FirstPersonControls.js.map +0 -1
  1004. package/dist/input/controls/OrbitControls.d.ts +0 -3
  1005. package/dist/input/controls/OrbitControls.d.ts.map +0 -1
  1006. package/dist/input/controls/OrbitControls.js +0 -3
  1007. package/dist/input/controls/OrbitControls.js.map +0 -1
  1008. package/dist/input/controls/PointerLockControls.d.ts +0 -2
  1009. package/dist/input/controls/PointerLockControls.d.ts.map +0 -1
  1010. package/dist/input/controls/PointerLockControls.js +0 -3
  1011. package/dist/input/controls/PointerLockControls.js.map +0 -1
  1012. package/dist/input/controls/SceneCameraAdapter.d.ts +0 -3
  1013. package/dist/input/controls/SceneCameraAdapter.d.ts.map +0 -1
  1014. package/dist/input/controls/SceneCameraAdapter.js +0 -3
  1015. package/dist/input/controls/SceneCameraAdapter.js.map +0 -1
  1016. package/dist/input/controls/ThirdPersonFollowControls.d.ts +0 -3
  1017. package/dist/input/controls/ThirdPersonFollowControls.d.ts.map +0 -1
  1018. package/dist/input/controls/ThirdPersonFollowControls.js +0 -3
  1019. package/dist/input/controls/ThirdPersonFollowControls.js.map +0 -1
  1020. package/templates/cinematic-scene/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  1021. package/templates/cinematic-scene/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  1022. package/templates/cinematic-scene/public/fonts/graphik/Graphik-RegularItalic-Web.woff2 +0 -0
  1023. package/templates/mini-game/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  1024. package/templates/mini-game/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  1025. package/templates/mini-game/public/fonts/graphik/Graphik-RegularItalic-Web.woff2 +0 -0
  1026. package/templates/product-viewer/public/fonts/graphik/Graphik-Medium-Web.woff2 +0 -0
  1027. package/templates/product-viewer/public/fonts/graphik/Graphik-Regular-Web.woff2 +0 -0
  1028. package/templates/product-viewer/public/fonts/graphik/Graphik-RegularItalic-Web.woff2 +0 -0
@@ -5,72 +5,699 @@
5
5
  * need, replaces each mapped `new THREE.X(...)` with its factory call, and
6
6
  * inserts `// TODO(a3d-migrate)` comments above every unmapped construct so
7
7
  * the output fails noisily instead of silently producing wrong code.
8
+ *
9
+ * threejs-parity (lane L10):
10
+ * - `mapping: "pending"` rows name a frozen/reserved target that is not yet
11
+ * public — the construct is left untouched with a `parityPending` comment.
12
+ * - `emit: "comment"` rows report a mapping but emit a TODO comment instead
13
+ * of a call (the target is configuration, not a call site).
14
+ * - `emit: "new"` rows emit `new Target(...)` for class targets.
15
+ * - EMIT_ARGS emits real option objects for constructs whose args map
16
+ * honestly; anything else keeps the `map args (...)` TODO inline.
17
+ * - Addon import specifiers with no named-export target are dropped into
18
+ * `a3d:` guidance comments (never rewritten into a broken named import).
8
19
  */
9
20
  import { threeMappingFor } from "./mappings.js";
10
21
  import { parseThreeSource } from "./parse.js";
11
22
  const UNSAFE_BARE_NAME = /^(?:Error|Map|Set|Promise|RegExp|Date|Number|String|Boolean|Array|Object)$/;
23
+ const ENGINE_ROOT = "@aura3d/engine";
24
+ const CONTROLS_SUBPATH = "@aura3d/engine/controls";
25
+ const ADDON_IMPORT_ACTIONS = {
26
+ // SC-02: controls classes are named exports of @aura3d/engine/controls.
27
+ "controls/OrbitControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
28
+ "controls/MapControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
29
+ "controls/TrackballControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
30
+ "controls/ArcballControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
31
+ "controls/FlyControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
32
+ "controls/FirstPersonControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
33
+ "controls/PointerLockControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
34
+ "controls/DragControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
35
+ "controls/TransformControls.js": { kind: "rewrite", to: CONTROLS_SUBPATH },
36
+ "loaders/GLTFLoader.js": { kind: "rewrite", to: ENGINE_ROOT },
37
+ "loaders/RGBELoader.js": { kind: "comment", note: "RGBELoader + PMREMGenerator collapses into environments.hdri({ texture: assets.<hdrKey> }); register the .hdr via `aura3d assets add`." },
38
+ "environments/RoomEnvironment.js": { kind: "comment", note: "RoomEnvironment maps to environments.neutral() (generated room probe)." },
39
+ "postprocessing/EffectComposer.js": { kind: "comment", note: "no composer object: the scene renders through the v2 post graph — express passes as effects.* scene nodes or app.addPostPass for custom GLSL." },
40
+ "postprocessing/RenderPass.js": { kind: "comment", note: "the base render pass is implicit — carry scene+camera into createAuraApp; no pass object is needed." },
41
+ "postprocessing/UnrealBloomPass.js": { kind: "comment", note: "UnrealBloomPass constructs rewrite to effects.bloom() — drop the import." },
42
+ "postprocessing/BloomPass.js": { kind: "comment", note: "BloomPass constructs rewrite to effects.bloom() — drop the import." },
43
+ "postprocessing/SMAAPass.js": { kind: "comment", note: "SMAAPass constructs rewrite to effects.antiAlias({}) — fxaa is the live mode (no smaa mode); drop the import." },
44
+ "postprocessing/TAARenderPass.js": { kind: "comment", note: "TAARenderPass constructs rewrite to effects.antiAlias({ mode: \"taa\" }) — drop the import." },
45
+ "postprocessing/SSAARenderPass.js": { kind: "comment", note: "SSAARenderPass constructs rewrite to effects.antiAlias({}) — MSAA is a framebuffer mode (createAuraApp antialias), not a post mode; drop the import." },
46
+ "postprocessing/BokehPass.js": { kind: "comment", note: "BokehPass constructs rewrite to effects.depthOfField() — drop the import." },
47
+ "postprocessing/SSAOPass.js": { kind: "comment", note: "SSAOPass constructs rewrite to effects.ambientOcclusion() — drop the import." },
48
+ "postprocessing/SAOPass.js": { kind: "comment", note: "SAOPass constructs rewrite to effects.ambientOcclusion() — drop the import." },
49
+ "postprocessing/GTAOPass.js": { kind: "comment", note: "GTAOPass constructs rewrite to effects.ambientOcclusion() — drop the import." },
50
+ "postprocessing/SSRPass.js": { kind: "comment", note: "SSRPass constructs rewrite to effects.screenSpaceReflections() — drop the import." },
51
+ "postprocessing/OutlinePass.js": { kind: "comment", note: "OutlinePass constructs rewrite to effects.outline() — drop the import." },
52
+ "postprocessing/FilmPass.js": { kind: "comment", note: "FilmPass constructs rewrite to effects.filmGrain() — drop the import." },
53
+ "postprocessing/LUTPass.js": { kind: "comment", note: "LUTPass constructs rewrite to effects.colorGrade({ lut }) — drop the import." },
54
+ "postprocessing/OutputPass.js": { kind: "comment", note: "the output stage is built in — configure it via createAuraApp({ output }) / app.setOutput; no pass object is needed." },
55
+ "postprocessing/ShaderPass.js": { kind: "comment", note: "a GLSL ShaderPass maps to app.addPostPass({ name, insertAt, fragment: { glsl } }) — real GPU path today; effects.shaderPass lands with lane L1 (SH-03)." },
56
+ "csm/CSM.js": { kind: "comment", note: "CSM collapses into lights.directional({ shadow: { cascades } }) — CascadedShadowMaps is wired in ShadowOrchestration (AD-12)." },
57
+ // AD-04 deliberate exclusions.
58
+ "loaders/FBXLoader.js": { kind: "excluded", note: "FBX is excluded (AD-04): convert to GLB offline and load via model(assets.<key>)." },
59
+ "loaders/MMDLoader.js": { kind: "excluded", note: "MMD is excluded (AD-04): convert to GLB offline." },
60
+ "loaders/PLYLoader.js": { kind: "excluded", note: "PLY is excluded (AD-04): convert to GLB offline." },
61
+ "loaders/STLLoader.js": { kind: "excluded", note: "STL is excluded (AD-04): convert to GLB offline." },
62
+ "loaders/USDZLoader.js": { kind: "excluded", note: "USDZ is excluded (AD-04): convert to GLB offline." },
63
+ "loaders/3MFLoader.js": { kind: "excluded", note: "3MF is excluded (AD-04): convert to GLB offline." },
64
+ "loaders/VOXLoader.js": { kind: "excluded", note: "VOX is excluded (AD-04): convert to GLB offline." },
65
+ "loaders/ColladaLoader.js": { kind: "excluded", note: "Collada is excluded (AD-04): convert to GLB offline." },
66
+ "loaders/TDSLoader.js": { kind: "excluded", note: "3DS is excluded (AD-04): convert to GLB offline." },
67
+ "loaders/AMFLoader.js": { kind: "excluded", note: "AMF is excluded (AD-04): convert to GLB offline." },
68
+ "loaders/IFCLoader.js": { kind: "excluded", note: "IFC is excluded (AD-04): convert to GLB offline." },
69
+ // AD-05 deliberate exclusions.
70
+ "exporters/GLTFExporter.js": { kind: "excluded", note: "exporters are excluded (AD-05): bake offline with gltf-transform/three in a build step." },
71
+ "exporters/OBJExporter.js": { kind: "excluded", note: "exporters are excluded (AD-05): bake offline." },
72
+ "exporters/PLYExporter.js": { kind: "excluded", note: "exporters are excluded (AD-05): bake offline." },
73
+ "exporters/STLExporter.js": { kind: "excluded", note: "exporters are excluded (AD-05): bake offline." },
74
+ "exporters/USDZExporter.js": { kind: "excluded", note: "exporters are excluded (AD-05): bake offline." },
75
+ "exporters/DRACOExporter.js": { kind: "excluded", note: "exporters are excluded (AD-05): bake offline." },
76
+ "exporters/ColladaExporter.js": { kind: "excluded", note: "exporters are excluded (AD-05): bake offline." }
77
+ };
78
+ function addonActionFor(specifier) {
79
+ const tail = specifier.startsWith("three/addons/")
80
+ ? specifier.slice("three/addons/".length)
81
+ : specifier.startsWith("three/examples/jsm/")
82
+ ? specifier.slice("three/examples/jsm/".length)
83
+ : undefined;
84
+ return tail === undefined ? undefined : ADDON_IMPORT_ACTIONS[tail];
85
+ }
86
+ const NUM = /^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i;
87
+ function splitArgs(args) {
88
+ // Top-level comma split — enough for numeric/simple literal arg lists.
89
+ const out = [];
90
+ let depth = 0;
91
+ let cur = "";
92
+ for (const ch of args) {
93
+ if (ch === "(" || ch === "[" || ch === "{")
94
+ depth++;
95
+ if (ch === ")" || ch === "]" || ch === "}")
96
+ depth--;
97
+ if (ch === "," && depth === 0) {
98
+ out.push(cur);
99
+ cur = "";
100
+ }
101
+ else
102
+ cur += ch;
103
+ }
104
+ if (cur.trim() !== "")
105
+ out.push(cur);
106
+ return out.map((s) => s.trim());
107
+ }
108
+ const numExpr = (raw) => (NUM.test(raw) ? raw : null);
109
+ /** `2 * <expr>` folded to a literal when possible. */
110
+ const times2 = (expr) => (NUM.test(expr) ? String(2 * Number(expr)) : `2 * (${expr})`);
111
+ /** `<a> / <b>` folded to a literal when both numeric. */
112
+ const div = (a, b) => NUM.test(a) && NUM.test(b) && Number(b) !== 0 ? String(Number(a) / Number(b)) : `(${a}) / (${b})`;
113
+ const hex = (raw) => {
114
+ // 0xRRGGBB → "#rrggbb"; "#rrggbb" / quoted strings pass through as strings.
115
+ const m = /^0x([0-9a-fA-F]{1,8})$/.exec(raw.trim());
116
+ if (m)
117
+ return `"#${m[1].padStart(6, "0")}"`;
118
+ if (/^["']#?[0-9a-zA-Z]+["']$/.test(raw.trim()))
119
+ return raw.trim().replace(/^'|'$/g, '"');
120
+ return null;
121
+ };
122
+ function specPairs(_construct, entries) {
123
+ const fields = entries.filter((e) => e[1] !== undefined);
124
+ if (fields.length === 0)
125
+ return null;
126
+ return { call: `{ ${fields.map(([k, v]) => `${k}: ${v}`).join(", ")} }` };
127
+ }
128
+ function mapColorArg(raw) {
129
+ if (raw === undefined)
130
+ return undefined;
131
+ return hex(raw) ?? raw;
132
+ }
133
+ function mapPerspectiveCamera(args, target) {
134
+ const a = splitArgs(args);
135
+ const fov = a[0] !== undefined && a[0] !== "" ? a[0] : undefined;
136
+ const near = a[2];
137
+ const far = a[3];
138
+ const spec = specPairs("PerspectiveCamera", [["fov", fov], ["near", near], ["far", far]]);
139
+ if (!spec)
140
+ return null;
141
+ const aspect = a[1];
142
+ return {
143
+ call: `${target}(${spec.call})`,
144
+ comment: aspect !== undefined && aspect !== "" ? `a3d: aspect ${aspect} — the renderer derives aspect from the viewport` : undefined
145
+ };
146
+ }
147
+ function mapOrthographicCamera(args, target) {
148
+ const a = splitArgs(args);
149
+ const [left, right, top, bottom, near, far] = a;
150
+ const sizeExpr = top !== undefined && bottom !== undefined ? div(`${top} - ${bottom}`, "2") : undefined;
151
+ const spec = specPairs("OrthographicCamera", [["orthographicSize", sizeExpr], ["near", near], ["far", far]]);
152
+ if (!spec)
153
+ return null;
154
+ return {
155
+ call: `${target}(${spec.call})`,
156
+ comment: left !== undefined && right !== undefined ? `a3d: left ${left}/right ${right} fold into the square frustum (orthographicSize); viewport aspect widens it` : undefined
157
+ };
158
+ }
159
+ function mapGeometryArgs(construct, target) {
160
+ return (args) => {
161
+ const a = splitArgs(args);
162
+ const n = (i) => a[i];
163
+ switch (construct) {
164
+ case "BoxGeometry": {
165
+ if (a.length === 0)
166
+ return { call: `${target}()` };
167
+ const size = `[${n(0) ?? "1"}, ${n(1) ?? "1"}, ${n(2) ?? "1"}]`;
168
+ return { call: `${target}({ size: ${size} })` };
169
+ }
170
+ case "SphereGeometry": {
171
+ const r = n(0);
172
+ if (r === undefined)
173
+ return { call: `${target}()` };
174
+ const params = [["widthSegments", n(1)], ["heightSegments", n(2)]];
175
+ const p = specPairs(construct, params);
176
+ return { call: `${target}({ size: ${times2(r)}${p ? `, params: ${p.call}` : ""} })` };
177
+ }
178
+ case "CylinderGeometry": {
179
+ if (a.length === 0)
180
+ return { call: `${target}()` };
181
+ const [rT, rB, h] = a;
182
+ if (rT === undefined || rB === undefined)
183
+ return null;
184
+ const xy = rB;
185
+ const radiusTop = NUM.test(rT) && NUM.test(rB) ? String(Number(rT) / (2 * Number(rB))) : div(rT, `2 * (${rB})`);
186
+ const p = specPairs(construct, [
187
+ ["radiusTop", radiusTop],
188
+ ["radialSegments", n(3)],
189
+ ["heightSegments", n(4)],
190
+ ["openEnded", n(5) === "true" ? "true" : n(5) === "false" ? "false" : undefined]
191
+ ]);
192
+ return { call: `${target}({ size: [${times2(xy)}, ${h ?? "1"}, ${times2(xy)}]${p ? `, params: ${p.call}` : ""} })` };
193
+ }
194
+ case "PlaneGeometry": {
195
+ if (a.length === 0)
196
+ return { call: `${target}()` };
197
+ const [w, h] = a;
198
+ const p = specPairs(construct, [["widthSegments", n(2)], ["heightSegments", n(3)]]);
199
+ return {
200
+ call: `${target}({ size: [${w ?? "1"}, 1, ${h ?? w ?? "1"}]${p ? `, params: ${p.call}` : ""} })`,
201
+ comment: "a3d: three's PlaneGeometry faces +Z (XY); Aura's plane lies in XZ — rotate the node -90° about X for an XY wall"
202
+ };
203
+ }
204
+ case "CapsuleGeometry": {
205
+ const r = n(0);
206
+ if (r === undefined)
207
+ return { call: `${target}()` };
208
+ const len = n(1) ?? "0";
209
+ const p = specPairs(construct, [["capSegments", n(2)], ["radialSegments", n(3)]]);
210
+ const height = NUM.test(len) && NUM.test(r) ? String(Number(len) + 2 * Number(r)) : `(${len}) + 2 * (${r})`;
211
+ return { call: `${target}({ size: [${times2(r)}, ${height}, ${times2(r)}]${p ? `, params: ${p.call}` : ""} })` };
212
+ }
213
+ case "TorusGeometry": {
214
+ const r = n(0);
215
+ if (r === undefined)
216
+ return { call: `${target}()` };
217
+ const scale = `${r} / 0.43`;
218
+ const p = specPairs(construct, [
219
+ ["tube", n(1) !== undefined ? `${n(1)} / (${scale})` : undefined],
220
+ ["tubularSegments", n(2)],
221
+ ["radialSegments", n(3)]
222
+ ]);
223
+ return { call: `${target}({ size: ${scale}${p ? `, params: ${p.call}` : ""} })` };
224
+ }
225
+ default:
226
+ return null;
227
+ }
228
+ };
229
+ }
230
+ function mapStandardMaterialArgs(target, extra = []) {
231
+ return (args) => {
232
+ const trimmed = args.trim();
233
+ if (trimmed === "")
234
+ return { call: `${target}(${extra.length > 0 ? `{ ${extra.map(([k, v]) => `${k}: ${v}`).join(", ")} }` : ""})` };
235
+ if (!trimmed.startsWith("{")) {
236
+ const color = hex(trimmed);
237
+ if (color) {
238
+ const inner = [`color: ${color}`, ...extra.map(([k, v]) => `${k}: ${v}`)].join(", ");
239
+ return { call: `${target}({ ${inner} })` };
240
+ }
241
+ return null;
242
+ }
243
+ const body = trimmed.slice(1, trimmed.lastIndexOf("}") >= 0 ? trimmed.lastIndexOf("}") : trimmed.length).trim();
244
+ if (body === "") {
245
+ return { call: `${target}(${extra.length > 0 ? `{ ${extra.map(([k, v]) => `${k}: ${v}`).join(", ")} }` : "{}"})` };
246
+ }
247
+ const fields = extra.map(([k, v]) => `${k}: ${v}`);
248
+ const dropped = [];
249
+ const passthrough = new Set(["roughness", "metalness", "metallic", "opacity", "transparent", "emissiveIntensity", "envMapIntensity", "clearcoat", "clearcoatRoughness", "transmission", "ior", "sheen", "flatShading", "side", "alphaTest"]);
250
+ for (const part of splitArgs(body)) {
251
+ const colon = part.indexOf(":");
252
+ if (colon < 0) {
253
+ dropped.push(part);
254
+ continue;
255
+ }
256
+ const key = part.slice(0, colon).trim().replace(/^["']|["']$/g, "");
257
+ const value = part.slice(colon + 1).trim();
258
+ if (key === "color" || key === "emissive" || key === "specularColor" || key === "sheenColor") {
259
+ const mapped = hex(value);
260
+ if (mapped)
261
+ fields.push(`${key}: ${mapped}`);
262
+ else
263
+ dropped.push(`${key}: ${value}`);
264
+ }
265
+ else if (key === "metalness") {
266
+ fields.push(`metallic: ${value}`);
267
+ }
268
+ else if (passthrough.has(key)) {
269
+ fields.push(`${key}: ${value}`);
270
+ }
271
+ else {
272
+ dropped.push(`${key}: ${value}`);
273
+ }
274
+ }
275
+ if (fields.length === 0)
276
+ return null;
277
+ return {
278
+ call: `${target}({ ${fields.join(", ")} })`,
279
+ comment: dropped.length > 0 ? `a3d: unmapped material keys — ${dropped.join("; ")}` : undefined
280
+ };
281
+ };
282
+ }
283
+ function mapLightArgs(construct, target) {
284
+ return (args) => {
285
+ const a = splitArgs(args);
286
+ switch (construct) {
287
+ case "DirectionalLight":
288
+ case "AmbientLight": {
289
+ const spec = specPairs(construct, [["color", mapColorArg(a[0])], ["intensity", a[1]]]);
290
+ return spec ? { call: `${target}(${spec.call})` } : { call: `${target}()` };
291
+ }
292
+ case "PointLight": {
293
+ const spec = specPairs(construct, [["color", mapColorArg(a[0])], ["intensity", a[1]], ["distance", a[2]], ["decay", a[3]]]);
294
+ return spec ? { call: `${target}(${spec.call})` } : { call: `${target}()` };
295
+ }
296
+ case "SpotLight": {
297
+ const spec = specPairs(construct, [["color", mapColorArg(a[0])], ["intensity", a[1]], ["distance", a[2]], ["angle", a[3]], ["penumbra", a[4]], ["decay", a[5]]]);
298
+ return spec ? { call: `${target}(${spec.call})` } : { call: `${target}()` };
299
+ }
300
+ case "HemisphereLight": {
301
+ const spec = specPairs(construct, [["color", mapColorArg(a[0])], ["intensity", a[2]]]);
302
+ if (!spec)
303
+ return { call: `${target}()` };
304
+ return {
305
+ call: `${target}(${spec.call})`,
306
+ comment: a[1] !== undefined ? `a3d: hemisphere ground tint ${a[1]} has no slot — pick the dominant tint` : undefined
307
+ };
308
+ }
309
+ default:
310
+ return null;
311
+ }
312
+ };
313
+ }
314
+ function mapPostPassArgs(construct, target) {
315
+ return (args) => {
316
+ const a = splitArgs(args);
317
+ switch (construct) {
318
+ case "UnrealBloomPass": {
319
+ const spec = specPairs(construct, [["intensity", a[1]], ["radius", a[2]], ["threshold", a[3]]]);
320
+ return {
321
+ call: `${target}(${spec?.call ?? "{}"})`,
322
+ comment: "a3d: the resolution arg is dropped — the post graph sizes passes to the render target"
323
+ };
324
+ }
325
+ case "SMAAPass":
326
+ return {
327
+ call: `${target}({})`,
328
+ comment: `a3d: SMAA has no native mode — antiAlias mode is "fxaa" (default) | "taa" | "off"; smaa is not implemented on the live path`
329
+ };
330
+ case "TAARenderPass":
331
+ return { call: `${target}({ mode: "taa" })` };
332
+ case "SSAARenderPass":
333
+ return {
334
+ call: `${target}({})`,
335
+ comment: `a3d: supersampling is not a post mode — MSAA lives at the framebuffer (createAuraApp antialias: "msaa" | "msaa-plus-high-dpi"); post modes are fxaa/taa`
336
+ };
337
+ case "SSAOPass":
338
+ case "SAOPass":
339
+ case "GTAOPass":
340
+ // three args are (scene, camera, w, h[, params]) — none map to AO
341
+ // options; the post graph binds scene/camera and sizes passes itself.
342
+ return {
343
+ call: `${target}({})`,
344
+ comment: "a3d: the (scene, camera, size) args are dropped — the post graph owns them; tune effects.ambientOcclusion intensity/radius"
345
+ };
346
+ case "Fog": {
347
+ const spec = specPairs(construct, [["color", mapColorArg(a[0])]]);
348
+ return {
349
+ call: `${target}(${spec?.call ?? "{}"})`,
350
+ comment: a[1] !== undefined || a[2] !== undefined ? `a3d: near ${a[1] ?? "…"}/far ${a[2] ?? "…"} linear fog — Aura fog is density/height based; retune into density` : undefined
351
+ };
352
+ }
353
+ case "FogExp2": {
354
+ const spec = specPairs(construct, [["color", mapColorArg(a[0])], ["density", a[1]]]);
355
+ return { call: `${target}(${spec?.call ?? "{}"})` };
356
+ }
357
+ case "InstancedMesh": {
358
+ const count = a[2];
359
+ const geoMatch = a[0]?.match(/\b(Box|Sphere|Plane|Cylinder|Capsule|Torus)Geometry\b/);
360
+ const kind = geoMatch ? geoMatch[1].toLowerCase() : "box";
361
+ return {
362
+ call: `instances.${kind}({ transforms: [] })`,
363
+ comment: `a3d: ${count ?? "?"} instances — transforms/instanceColors populate the arrays from the update loop; ${geoMatch ? "factory inferred from the geometry arg" : "geometry is a variable — pick the instances.* factory matching it"}; the setMatrixAt/setColorAt handle ships as instances.mesh (SG-01)`
364
+ };
365
+ }
366
+ case "BokehPass": {
367
+ // BokehPass(scene, camera, { focus, aperture, maxblur }) — rename
368
+ // maxblur→maxBlur and drop the scene/camera args (the pass binds to
369
+ // the post graph's scene).
370
+ const params = a[2];
371
+ if (params === undefined)
372
+ return { call: `${target}()` };
373
+ const body = params.trim().replace(/^\{/, "").replace(/\}$/, "");
374
+ const fields = splitArgs(body)
375
+ .map((part) => {
376
+ const colon = part.indexOf(":");
377
+ if (colon < 0)
378
+ return undefined;
379
+ const key = part.slice(0, colon).trim().replace(/^["']|["']$/g, "");
380
+ const value = part.slice(colon + 1).trim();
381
+ const renamed = key === "maxblur" ? "maxBlur" : key;
382
+ return `${renamed}: ${value}`;
383
+ })
384
+ .filter((f) => f !== undefined);
385
+ return {
386
+ call: `${target}({ ${fields.join(", ")} })`,
387
+ comment: "a3d: focus is a linear-distance fraction in the DOF spec, not a physical f-stop — retune aperture"
388
+ };
389
+ }
390
+ case "OrbitControls":
391
+ return {
392
+ call: `${target}({})`,
393
+ comment: "a3d: target/damping map to camera.orbit options; per-frame input comes from the runtime, not DOM listeners"
394
+ };
395
+ case "WebGLRenderer":
396
+ case "WebGPURenderer":
397
+ return {
398
+ call: `${target}({ resize: true })`,
399
+ comment: `a3d: ${args.trim() ? `ctor options (${args.trim()}) — ` : ""}createAuraApp owns the loop, sizing and context; see the scene/camera/options spec`
400
+ };
401
+ default:
402
+ return null;
403
+ }
404
+ };
405
+ }
406
+ function controlsCtor(name, args) {
407
+ const a = splitArgs(args);
408
+ const camera = a[0]?.trim();
409
+ const dropped = a.slice(1).filter((part) => part.trim() !== "");
410
+ return {
411
+ call: camera ? `new ${name}(${camera})` : `new ${name}()`,
412
+ comment: `a3d: ctor is (cameraLike?, options) — ${dropped.length > 0 ? `dropped args (${dropped.join(", ")}) — ` : ""}dom wiring goes through options`
413
+ };
414
+ }
415
+ const EMIT_ARGS = {
416
+ PerspectiveCamera: (args) => mapPerspectiveCamera(args, "camera.perspective"),
417
+ OrthographicCamera: (args) => mapOrthographicCamera(args, "camera.orthographic"),
418
+ BoxGeometry: mapGeometryArgs("BoxGeometry", "primitives.box"),
419
+ SphereGeometry: mapGeometryArgs("SphereGeometry", "primitives.sphere"),
420
+ CylinderGeometry: mapGeometryArgs("CylinderGeometry", "primitives.cylinder"),
421
+ PlaneGeometry: mapGeometryArgs("PlaneGeometry", "primitives.plane"),
422
+ CapsuleGeometry: mapGeometryArgs("CapsuleGeometry", "primitives.capsule"),
423
+ TorusGeometry: mapGeometryArgs("TorusGeometry", "primitives.torus"),
424
+ MeshStandardMaterial: mapStandardMaterialArgs("material.pbr"),
425
+ MeshLambertMaterial: mapStandardMaterialArgs("material.pbr", [["unlit", "false"]]),
426
+ MeshPhongMaterial: mapStandardMaterialArgs("material.pbr"),
427
+ MeshBasicMaterial: mapStandardMaterialArgs("material.pbr", [["unlit", "true"]]),
428
+ DirectionalLight: mapLightArgs("DirectionalLight", "lights.directional"),
429
+ PointLight: mapLightArgs("PointLight", "lights.point"),
430
+ SpotLight: mapLightArgs("SpotLight", "lights.spot"),
431
+ AmbientLight: mapLightArgs("AmbientLight", "lights.ambient"),
432
+ HemisphereLight: mapLightArgs("HemisphereLight", "lights.ambient"),
433
+ UnrealBloomPass: mapPostPassArgs("UnrealBloomPass", "effects.bloom"),
434
+ SMAAPass: mapPostPassArgs("SMAAPass", "effects.antiAlias"),
435
+ TAARenderPass: mapPostPassArgs("TAARenderPass", "effects.antiAlias"),
436
+ SSAARenderPass: mapPostPassArgs("SSAARenderPass", "effects.antiAlias"),
437
+ SSAOPass: mapPostPassArgs("SSAOPass", "effects.ambientOcclusion"),
438
+ SAOPass: mapPostPassArgs("SAOPass", "effects.ambientOcclusion"),
439
+ GTAOPass: mapPostPassArgs("GTAOPass", "effects.ambientOcclusion"),
440
+ BokehPass: mapPostPassArgs("BokehPass", "effects.depthOfField"),
441
+ Fog: mapPostPassArgs("Fog", "effects.fog"),
442
+ FogExp2: mapPostPassArgs("FogExp2", "effects.depthFog"),
443
+ InstancedMesh: mapPostPassArgs("InstancedMesh", "instances.box"),
444
+ OrbitControls: mapPostPassArgs("OrbitControls", "camera.orbit"),
445
+ WebGLRenderer: mapPostPassArgs("WebGLRenderer", "createAuraApp"),
446
+ WebGPURenderer: mapPostPassArgs("WebGPURenderer", "createAuraApp"),
447
+ Scene: (args) => (args.trim() === "" ? { call: "scene()" } : null),
448
+ Group: (args) => (args.trim() === "" ? { call: "group()" } : null),
449
+ RoomEnvironment: () => ({ call: "environments.neutral()" }),
450
+ Color: (args) => {
451
+ const mapped = hex(args.trim());
452
+ return mapped ? { call: mapped } : null;
453
+ },
454
+ Vector2: (args) => ({ call: `new Vector2(${args})` }),
455
+ Vector4: (args) => ({ call: `new Vector4(${args})` }),
456
+ Quaternion: (args) => ({ call: `new Quaternion(${args})`, comment: args.trim() === "" ? undefined : undefined }),
457
+ Matrix3: (args) => ({ call: `new Matrix3(${args})` }),
458
+ Matrix4: (args) => ({ call: `new Matrix4(${args})` }),
459
+ Box3: (args) => ({ call: `new Box3(${args})` }),
460
+ Sphere: (args) => ({ call: `new Sphere(${args})` }),
461
+ Plane: (args) => ({ call: `new Plane(${args})` }),
462
+ Ray: (args) => ({ call: `new Ray(${args})` }),
463
+ Frustum: (args) => ({ call: `new Frustum(${args})` }),
464
+ // Aura controls ctors are `(cameraLike?, options)` or `(options)` — three's
465
+ // `(camera, domElement)` arg pair does not pass through. Keep the first arg
466
+ // (the camera-like) and drop the rest with a comment, or emit the bare
467
+ // options object for options-only ctors.
468
+ MapControls: (args) => controlsCtor("MapControls", args),
469
+ TrackballControls: (args) => controlsCtor("TrackballControls", args),
470
+ ArcballControls: (args) => controlsCtor("ArcballControls", args),
471
+ FlyControls: (args) => controlsCtor("FlyControls", args),
472
+ FirstPersonControls: (args) => controlsCtor("FirstPersonControls", args),
473
+ PointerLockControls: (args) => controlsCtor("PointerLockControls", args),
474
+ DragControls: () => ({ call: "new DragControls({})", comment: "a3d: ctor takes DragControlsOptions, not (objects, camera, dom) — deprecated in @aura3d/engine/controls; prefer InteractionControls/picking" }),
475
+ TransformControls: () => ({ call: "new TransformControls({})", comment: "a3d: ctor takes TransformControlsOptions, not (camera, dom) — the gizmo attaches to Aura objects" }),
476
+ AudioListener: () => ({ call: "new AudioListener()", comment: "a3d: AudioListener.setTransform writes the pose into ctx.listener when a context is bound; listenerSync is the per-frame driver" })
477
+ };
478
+ const THREE_NAMED_AUDIO_IMPORT = /import\s*\{[^}]*\bAudio\b[^}]*\}\s*from\s*["']three(?:\/[^"']*)?["']/;
479
+ const STANDARD_VERTEX_ATTRIBUTES = new Set(["position", "normal", "uv", "color"]);
480
+ // Mirrors RootGeometry.assertCustomAttributeName (checked against it in tests/unit/aura3d-cli/migrate-three.test.ts),
481
+ // plus three's own non-standard-but-built-in names the engine does not carry as custom attributes.
482
+ const RESERVED_CUSTOM_ATTRIBUTE_NAMES = new Set([
483
+ "position", "positions", "normal", "normals", "uv", "uv0", "uvs", "uv1", "uv2", "uv3", "color", "colors", "tangent", "tangents",
484
+ "joints", "weights", "joints1", "weights1", "skinIndex", "skinWeight", "lineStart", "lineEnd", "lineCorner", "lineDistance", "index",
485
+ "instanceMatrix", "instanceColor"
486
+ ]);
487
+ /** Why a three attribute name cannot become an engine custom attribute, or undefined when it can. */
488
+ export function customAttributeBlocker(name) {
489
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name))
490
+ return "is not a GLSL identifier";
491
+ if (name.startsWith("gl_") || name.includes("__"))
492
+ return "is reserved by GLSL (gl_ prefix or double underscore)";
493
+ if (name.startsWith("a_") || name.startsWith("u_"))
494
+ return "uses a prefix reserved for engine attributes/uniforms (a_, u_)";
495
+ if (RESERVED_CUSTOM_ATTRIBUTE_NAMES.has(name))
496
+ return "collides with a built-in vertex semantic the engine does not carry as a custom attribute";
497
+ return undefined;
498
+ }
499
+ const CUSTOM_ATTRIBUTE_CALL = /\.setAttribute\(\s*(["'])([A-Za-z0-9_]+)\1\s*,\s*(?![\s"'`\d])/g;
12
500
  export function emitMigratedSource(source) {
13
501
  const constructs = parseThreeSource(source);
14
502
  const rows = [];
15
- const neededImports = new Set();
503
+ const neededImports = new Map();
16
504
  const comments = new Map();
17
505
  const rewrites = [];
18
506
  let rewritten = 0;
507
+ let sawRenderer = false;
19
508
  for (const c of constructs) {
20
509
  if (c.construct === "import")
21
510
  continue; // handled at the end
22
511
  if (c.specifier === "bare" && UNSAFE_BARE_NAME.test(c.construct))
23
512
  continue;
513
+ // `new Audio(src)` is the browser's HTMLAudioElement unless three's Audio was imported by name.
514
+ if (c.specifier === "bare" && c.construct === "Audio" && !THREE_NAMED_AUDIO_IMPORT.test(source))
515
+ continue;
24
516
  const mapping = threeMappingFor(c.construct);
25
517
  if (c.specifier === "bare" && !mapping)
26
518
  continue; // not a THREE name — don't report local ctors
27
519
  const row = rowFor(c, mapping);
28
520
  rows.push(row);
29
- if (mapping && mapping.mapping !== "none") {
521
+ const isMapped = mapping && (mapping.mapping === "exact" || mapping.mapping === "approximate");
522
+ if (isMapped && mapping.emit !== "comment") {
30
523
  rewritten++;
31
- if (mapping.engineImport)
32
- neededImports.add(mapping.engineImport);
524
+ if (mapping.engineImport) {
525
+ const from = mapping.engineImportFrom ?? ENGINE_ROOT;
526
+ const set = neededImports.get(from) ?? new Set();
527
+ set.add(mapping.engineImport);
528
+ neededImports.set(from, set);
529
+ }
33
530
  if (c.construct.endsWith(".load")) {
34
- // loader `.load(` calls get a comment, not a rewrite (the model() call needs a typed asset key)
35
- pushComment(comments, c.line, `// TODO(a3d-migrate): ${c.construct} → ${mapping.target} — ${mapping.note}`);
531
+ // loader `.load(` calls get a guidance comment, not a rewrite (the
532
+ // model() call needs a typed asset key the codemod cannot invent).
533
+ // Mapped, so `a3d:` — `TODO(a3d-migrate)` is reserved for no-coverage.
534
+ pushComment(comments, c.line, `// a3d: ${c.construct} → ${mapping.target} — ${mapping.note}`);
36
535
  }
37
536
  else {
38
537
  const replacement = emitCall(mapping, c);
39
- const needle = `new THREE.${c.construct}(${c.args})`;
40
- const needleBare = `new ${c.construct}(${c.args})`;
538
+ const needle = `new THREE.${c.construct}(${c.rawArgs ?? c.args})`;
539
+ const needleBare = `new ${c.construct}(${c.rawArgs ?? c.args})`;
41
540
  if (source.includes(needle)) {
42
541
  rewrites.push({ match: needle, replacement });
43
542
  }
44
543
  else if (source.includes(needleBare)) {
45
544
  rewrites.push({ match: needleBare, replacement });
46
545
  }
546
+ if (c.construct === "WebGLRenderer" || c.construct === "WebGPURenderer")
547
+ sawRenderer = true;
548
+ }
549
+ }
550
+ else if (isMapped && mapping.emit === "comment") {
551
+ // Config-shaped targets (output, environments.capture, app.addPostPass):
552
+ // the row reports the mapping; the code gets a guidance comment, not a
553
+ // fake call. `a3d:` — the construct IS covered, it just needs
554
+ // restructuring the codemod can't automate.
555
+ rewritten++;
556
+ if (mapping.engineImport) {
557
+ const from = mapping.engineImportFrom ?? ENGINE_ROOT;
558
+ const set = neededImports.get(from) ?? new Set();
559
+ set.add(mapping.engineImport);
560
+ neededImports.set(from, set);
47
561
  }
562
+ pushComment(comments, c.line, `// a3d: ${c.construct} → ${mapping.target} — ${mapping.note}`);
563
+ }
564
+ else if (mapping && mapping.mapping === "pending") {
565
+ // Reserved but not yet public — name the planned API and owning lane.
566
+ pushComment(comments, c.line, `// TODO(a3d-migrate): parityPending ${c.construct} → ${mapping.target} — ${mapping.note}`);
567
+ }
568
+ else if (mapping) {
569
+ // Deliberate `none` row (excluded / no equivalent on the public
570
+ // surface) — a statement, not a missing mapping.
571
+ pushComment(comments, c.line, `// a3d: ${c.construct} — ${mapping.note}`);
48
572
  }
49
573
  else {
50
574
  pushComment(comments, c.line, `// TODO(a3d-migrate): no mapping for ${c.construct} — ${row.note}`);
51
575
  }
52
576
  }
577
+ // Standard attributes (position/normal/uv/color) are fields of geometry.dynamic;
578
+ // any other name is a custom per-vertex attribute (R-23), carried by
579
+ // geometry.dynamic({ attributes }) and read by name in material.custom GLSL.
580
+ // Gated on a BufferAttribute-family construct plus a non-string second
581
+ // argument so DOM `el.setAttribute("id", "x")` calls in the same file are not
582
+ // flagged.
583
+ if (constructs.some((x) => /BufferAttribute$/.test(x.construct))) {
584
+ source.split("\n").forEach((text, index) => {
585
+ for (const m of text.matchAll(CUSTOM_ATTRIBUTE_CALL)) {
586
+ const name = m[2] ?? "";
587
+ if (STANDARD_VERTEX_ATTRIBUTES.has(name))
588
+ continue;
589
+ const blocker = customAttributeBlocker(name);
590
+ if (blocker) {
591
+ const blockedNote = `vertex attribute "${name}" has no public Aura3D equivalent — the name ${blocker}; rename it, or drop the per-vertex data`;
592
+ pushComment(comments, index + 1, `// TODO(a3d-migrate): ${blockedNote}`);
593
+ rows.push({ construct: `setAttribute("${name}")`, line: index + 1, mapping: "none", note: blockedNote });
594
+ continue;
595
+ }
596
+ const note = `custom vertex attribute "${name}" → geometry.dynamic({ attributes: { ${name}: { itemSize, data } } }) (R-23, max 11 per geometry, GLSL-identifier names); declare it in the material.custom vertex stage as \`in <float|vec2|vec3|vec4> ${name};\` (GLSL1 \`attribute\` is accepted, but \`varying\`/\`texture2D\`/\`gl_FragColor\` must still be ported to #version 300 es); per-frame writes go through handle.updateAttribute("${name}", { array, offset }); for a THREE.Points object add topology: "points" and set gl_PointSize in the vertex shader`;
597
+ pushComment(comments, index + 1, `// a3d: ${note}`);
598
+ rows.push({ construct: `setAttribute("${name}")`, line: index + 1, mapping: "approximate", note });
599
+ }
600
+ });
601
+ }
53
602
  let code = source;
54
- for (const { match, replacement } of rewrites) {
603
+ // Longest-match first so an outer construct (`new UnrealBloomPass(new
604
+ // THREE.Vector2(...), …)`) rewrites before the nested `new THREE.Vector2`
605
+ // inside its args can mangle the needle.
606
+ for (const { match, replacement } of [...rewrites].sort((a, b) => b.match.length - a.match.length)) {
55
607
  code = code.replaceAll(match, replacement);
56
608
  }
609
+ // three/app method folds — only when a renderer construct was seen so
610
+ // non-three `.render(`/`.setSize(` calls are never touched.
611
+ if (sawRenderer) {
612
+ code = code.replace(/([A-Za-z_$][\w$]*)\.setSize\([^;\n]*\)/g, `/* a3d: $1.setSize(...) — the app owns canvas sizing (createAuraApp resize option) */`);
613
+ code = code.replace(/([A-Za-z_$][\w$]*)\.setPixelRatio\([^;\n]*\)/g, `/* a3d: $1.setPixelRatio(...) — app.setPixelRatio lands with lane L7 (SH-05) */`);
614
+ code = code.replace(/([A-Za-z_$][\w$]*)\.setClearColor\([^;\n]*\)/g, `/* a3d: $1.setClearColor(...) — app.setClearColor lands with lane L7 (SH-05); clear colour comes from scene().background */`);
615
+ code = code.replace(/([A-Za-z_$][\w$]*)\.setAnimationLoop\(/g, `$1.onFrame(`);
616
+ code = code.replace(/([A-Za-z_$][\w$]*)\.render\([^;\n]*\)/g, `/* a3d: $1.render(...) — createAuraApp renders its scene every frame; manual stepping is app.step(dt) */`);
617
+ code = code.replaceAll("renderer.domElement", "renderer.canvas");
618
+ }
57
619
  // rewrite three imports
58
- const importNames = [...neededImports].sort();
59
- if (importNames.length > 0) {
60
- let importWritten = false;
620
+ const importGroups = [...neededImports.entries()].sort(([a], [b]) => a.localeCompare(b));
621
+ const hasThreeImportStatement = constructs.some((x) => x.construct === "import" && (x.specifier === "three" || x.specifier === "three/src/three.module.js" || x.specifier === "three/webgpu"));
622
+ // No `from "three"` statement to rewrite — the needed engine imports go in
623
+ // a fresh block at the top of the file so the emitted calls resolve.
624
+ if (importGroups.length > 0 && !hasThreeImportStatement) {
625
+ const statements = importGroups
626
+ .map(([from, names]) => `import { ${[...names].sort().join(", ")} } from "${from}";`)
627
+ .join("\n");
628
+ code = `${statements}\n${code}`;
629
+ }
630
+ if (importGroups.length > 0 || constructs.some((x) => x.construct === "import")) {
631
+ let rootImportWritten = hasThreeImportStatement ? false : true;
61
632
  for (const c of constructs.filter((x) => x.construct === "import")) {
62
633
  const spec = c.specifier ?? "";
63
- if (spec === "three" || spec === "three/src/three.module.js") {
64
- if (!importWritten) {
65
- code = code.replace(/from\s+["']three["']/, `from "../../engine/index.js"`);
66
- code = code.replace(/import\s+(?:\*\s+as\s+THREE|\{[^}]*\})\s+from\s+["']@aura3d\/engine["']/, `import { ${importNames.join(", ")} } from "../../engine/index.js"`);
67
- importWritten = true;
634
+ if (spec === "three" || spec === "three/src/three.module.js" || spec === "three/webgpu") {
635
+ if (!rootImportWritten && importGroups.length > 0) {
636
+ const statements = importGroups
637
+ .map(([from, names]) => `import { ${[...names].sort().join(", ")} } from "${from}";`)
638
+ .join(" ");
639
+ code = code.replace(/import\s+(?:\*\s+as\s+THREE|\{[^}]*\})?\s*(?:\*\s+as\s+THREE)?\s*from\s+["']three(?:\/src\/three\.module\.js|\/webgpu)?["']\s*;?/, statements);
640
+ rootImportWritten = true;
68
641
  }
642
+ else if (!rootImportWritten) {
643
+ // no imports needed — comment the `import * as THREE` line out so
644
+ // the emitted file doesn't keep a live three specifier.
645
+ const original = code.split("\n")[c.line - 1];
646
+ if (original !== undefined && /^\s*import\b/.test(original)) {
647
+ code = code.replace(original, () => `// a3d:drop ${original.trim()} — no engine imports required`);
648
+ }
649
+ else {
650
+ pushComment(comments, c.line, `// a3d: "three" import removed — no engine imports required`);
651
+ }
652
+ rootImportWritten = true;
653
+ }
654
+ else {
655
+ // a second `from "three"` statement — drop it too.
656
+ const original = code.split("\n")[c.line - 1];
657
+ if (original !== undefined && /^\s*import\b/.test(original)) {
658
+ code = code.replace(original, () => `// a3d:drop ${original.trim()} — duplicate three import`);
659
+ }
660
+ }
661
+ if (spec === "three/webgpu") {
662
+ pushComment(comments, c.line, `// a3d: three/webgpu — createAuraApp mounts WebGL2; NodeMaterial/TSL/compute constructs are pending (SH-01/SH-04)`);
663
+ }
664
+ }
665
+ else if (spec === "three/tsl") {
666
+ pushComment(comments, c.line, `// TODO(a3d-migrate): TSL imports have no public Aura3D equivalent yet (SH-01 probe-gated) — rewrite node graphs as material.custom GLSL when it lands`);
667
+ rows.push({ construct: `import "${spec}"`, line: c.line, mapping: "none", note: "three/tsl specifier is not rewritten; the TSL subset is probe-gated (SH-01)." });
69
668
  }
70
669
  else {
71
- // three/addons/* specifier → TODO comment; the construct rows cover the rewrite
72
- pushComment(comments, c.line, `// TODO(a3d-migrate): import specifier "${spec}" has no public Aura3D equivalent — resolve manually`);
73
- rows.push({ construct: `import "${spec}"`, line: c.line, mapping: "none", note: "three/addons specifier is not rewritten; resolve the named export against @aura3d/engine manually." });
670
+ const action = addonActionFor(spec);
671
+ if (action?.kind === "rewrite") {
672
+ code = code.replaceAll(`from "${spec}"`, `from "${action.to}"`).replaceAll(`from '${spec}'`, `from '${action.to}'`);
673
+ rows.push({ construct: `import "${spec}"`, line: c.line, mapping: "approximate", note: `specifier rewritten to ${action.to} — named exports exist there.` });
674
+ }
675
+ else if (action?.kind === "comment" || action?.kind === "excluded") {
676
+ // Drop the import line in place (commented out) when it sits alone on
677
+ // its line — the emitted code no longer needs it and leaving a live
678
+ // `from "three/…"` specifier would break the build.
679
+ const original = code.split("\n")[c.line - 1];
680
+ const escapedSpec = spec.replaceAll(/[.*+?^$()|[\]\\]/g, "\\$&");
681
+ const singleLine = original !== undefined && new RegExp(`^\\s*import\\b.*from\\s*["']${escapedSpec}["']\\s*;?\\s*$`).test(original);
682
+ if (singleLine) {
683
+ // function replacement: the line may contain `$`-sequences that
684
+ // String.replace would interpret as group references.
685
+ code = code.replace(original, () => `// a3d:drop ${original.trim()} — ${action.note}`);
686
+ }
687
+ else {
688
+ pushComment(comments, c.line, `// a3d:drop ${spec} — ${action.note}`);
689
+ }
690
+ rows.push({
691
+ construct: `import "${spec}"`,
692
+ line: c.line,
693
+ mapping: action.kind === "excluded" ? "none" : "approximate",
694
+ note: `import dropped: ${action.note}`
695
+ });
696
+ }
697
+ else {
698
+ pushComment(comments, c.line, `// TODO(a3d-migrate): import specifier "${spec}" has no public Aura3D equivalent — resolve manually`);
699
+ rows.push({ construct: `import "${spec}"`, line: c.line, mapping: "none", note: "three/addons specifier is not rewritten; resolve the named export against @aura3d/engine manually." });
700
+ }
74
701
  }
75
702
  }
76
703
  }
@@ -88,11 +715,31 @@ function rowFor(c, mapping) {
88
715
  if (!mapping) {
89
716
  return { construct: c.construct, line: c.line, mapping: "none", note: "no Aura3D equivalent in the T6.1 table; resolve manually." };
90
717
  }
91
- return { construct: c.construct, line: c.line, mapping: mapping.mapping, note: `${mapping.target} — ${mapping.note}` };
718
+ if (mapping.mapping === "pending") {
719
+ return { construct: c.construct, line: c.line, mapping: "pending", note: `${mapping.target} — ${mapping.note}` };
720
+ }
721
+ const note = mapping.target === "" ? mapping.note : `${mapping.target} — ${mapping.note}`;
722
+ return { construct: c.construct, line: c.line, mapping: mapping.mapping, note };
92
723
  }
93
724
  function emitCall(mapping, c) {
94
725
  const args = c.args;
95
- const todo = ` /* TODO(a3d-migrate): ${c.construct} — ${args ? `map args (${args}); ` : ""}${mapping.note} */`;
726
+ const emitter = EMIT_ARGS[mapping.construct];
727
+ if (emitter) {
728
+ const out = emitter(args);
729
+ if (out) {
730
+ return `${out.call}${out.comment ? ` /* ${out.comment} */` : ""}`;
731
+ }
732
+ }
733
+ // Covered constructs get `a3d:` guidance, not `TODO(a3d-migrate)` — the
734
+ // TODO marker is reserved for pending/unmapped rows.
735
+ const todo = ` /* a3d: ${c.construct} — ${args ? `map args (${args}); ` : ""}${mapping.note} */`;
736
+ if (args.trim() === "" && mapping.emit !== "new") {
737
+ // no args to mis-map — emit the clean factory plus a short guidance note
738
+ return `${mapping.target}() /* a3d: ${mapping.note} */`;
739
+ }
740
+ if (mapping.emit === "new") {
741
+ return `new ${mapping.target}()${args ? ` /* a3d: original args (${args}) — ${mapping.note} */` : ` /* a3d: ${mapping.note} */`}`;
742
+ }
96
743
  switch (mapping.construct) {
97
744
  case "Euler": {
98
745
  // Euler emits a tuple literal, valid as an expression.
@@ -102,7 +749,7 @@ function emitCall(mapping, c) {
102
749
  return `[${xyz}]${args && xyz !== args ? "" : todo}`;
103
750
  }
104
751
  case "Vector3":
105
- return `[${args}]${todo}`;
752
+ return `[${args}]${args.trim() === "" ? " /* a3d: AuraVec3 */" : ""}`;
106
753
  case "Color":
107
754
  return `(${args}) /* a3d: ${mapping.target} */`;
108
755
  default: