@aura3d/engine 1.5.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +142 -117
  2. package/dist/animation/FootIk.d.ts +10 -1
  3. package/dist/animation/FootIk.d.ts.map +1 -1
  4. package/dist/animation/FootIk.js.map +1 -1
  5. package/dist/animation/HumanoidRetargeting.js +1 -1
  6. package/dist/animation/RigQuality.d.ts +1 -1
  7. package/dist/animation/RigQuality.js +2 -2
  8. package/dist/animation/RigQuality.js.map +1 -1
  9. package/dist/animation/SecondaryAnimationSampling.d.ts +55 -0
  10. package/dist/animation/SecondaryAnimationSampling.d.ts.map +1 -0
  11. package/dist/animation/SecondaryAnimationSampling.js +145 -0
  12. package/dist/animation/SecondaryAnimationSampling.js.map +1 -0
  13. package/dist/animation/SpringBones.d.ts.map +1 -1
  14. package/dist/animation/SpringBones.js +1 -2
  15. package/dist/animation/SpringBones.js.map +1 -1
  16. package/dist/animation/browser-index.d.ts +0 -2
  17. package/dist/animation/browser-index.d.ts.map +1 -1
  18. package/dist/animation/browser-index.js +0 -2
  19. package/dist/animation/browser-index.js.map +1 -1
  20. package/dist/animation/index.d.ts +0 -2
  21. package/dist/animation/index.d.ts.map +1 -1
  22. package/dist/animation/index.js +0 -2
  23. package/dist/animation/index.js.map +1 -1
  24. package/dist/assets/GLTFAnimationRuntime.d.ts +4 -0
  25. package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
  26. package/dist/assets/GLTFAnimationRuntime.js +29 -6
  27. package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
  28. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  29. package/dist/assets/GLTFLoader.js +13 -4
  30. package/dist/assets/GLTFLoader.js.map +1 -1
  31. package/dist/assets/browser-index.d.ts +0 -4
  32. package/dist/assets/browser-index.d.ts.map +1 -1
  33. package/dist/assets/browser-index.js +0 -2
  34. package/dist/assets/browser-index.js.map +1 -1
  35. package/dist/assets/gltf-runtime.d.ts +6 -0
  36. package/dist/assets/gltf-runtime.d.ts.map +1 -0
  37. package/dist/assets/gltf-runtime.js +4 -0
  38. package/dist/assets/gltf-runtime.js.map +1 -0
  39. package/dist/assets/index.d.ts +0 -4
  40. package/dist/assets/index.d.ts.map +1 -1
  41. package/dist/assets/index.js +0 -2
  42. package/dist/assets/index.js.map +1 -1
  43. package/dist/audio/AudioBus.d.ts +19 -1
  44. package/dist/audio/AudioBus.d.ts.map +1 -1
  45. package/dist/audio/AudioBus.js.map +1 -1
  46. package/dist/audio/AudioFileManager.d.ts +5 -0
  47. package/dist/audio/AudioFileManager.d.ts.map +1 -1
  48. package/dist/audio/AudioFileManager.js +13 -0
  49. package/dist/audio/AudioFileManager.js.map +1 -1
  50. package/dist/audio/AudioSource.d.ts +8 -0
  51. package/dist/audio/AudioSource.d.ts.map +1 -1
  52. package/dist/audio/AudioSource.js +56 -7
  53. package/dist/audio/AudioSource.js.map +1 -1
  54. package/dist/audio/index.d.ts +1 -7
  55. package/dist/audio/index.d.ts.map +1 -1
  56. package/dist/audio/index.js +0 -3
  57. package/dist/audio/index.js.map +1 -1
  58. package/dist/aura3d-cli/asset-core-types.d.ts +1 -1
  59. package/dist/aura3d-cli/asset-core-types.d.ts.map +1 -1
  60. package/dist/aura3d-cli/asset-manifest.d.ts.map +1 -1
  61. package/dist/aura3d-cli/asset-manifest.js +36 -2
  62. package/dist/aura3d-cli/asset-manifest.js.map +1 -1
  63. package/dist/aura3d-cli/asset-role-admission.js +1 -1
  64. package/dist/aura3d-cli/asset-role-admission.js.map +1 -1
  65. package/dist/aura3d-cli/cli-help.js +3 -3
  66. package/dist/aura3d-cli/cli-help.js.map +1 -1
  67. package/dist/aura3d-cli/cli-options.d.ts +1 -1
  68. package/dist/aura3d-cli/cli-options.d.ts.map +1 -1
  69. package/dist/aura3d-cli/cli-options.js +2 -2
  70. package/dist/aura3d-cli/cli-options.js.map +1 -1
  71. package/dist/aura3d-cli/cli.js +1 -1
  72. package/dist/aura3d-cli/cli.js.map +1 -1
  73. package/dist/aura3d-cli/index.d.ts.map +1 -1
  74. package/dist/aura3d-cli/index.js +13 -5
  75. package/dist/aura3d-cli/index.js.map +1 -1
  76. package/dist/create-aura3d/index.d.ts.map +1 -1
  77. package/dist/create-aura3d/index.js +10 -4
  78. package/dist/create-aura3d/index.js.map +1 -1
  79. package/dist/create-aura3d/showcase-spec-evidence.js +5 -1
  80. package/dist/create-aura3d/showcase-spec-evidence.js.map +1 -1
  81. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +8 -1
  82. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -1
  83. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +191 -31
  84. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -1
  85. package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -1
  86. package/dist/create-aura3d/showcase-spec-game-template-evidence.js +7 -0
  87. package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -1
  88. package/dist/create-aura3d/showcase-spec-parser.js +1 -1
  89. package/dist/create-aura3d/showcase-spec-parser.js.map +1 -1
  90. package/dist/create-aura3d/showcase-spec-types.d.ts +50 -0
  91. package/dist/create-aura3d/showcase-spec-types.d.ts.map +1 -1
  92. package/dist/editor-runtime/index.d.ts +0 -2
  93. package/dist/editor-runtime/index.d.ts.map +1 -1
  94. package/dist/editor-runtime/index.js +0 -1
  95. package/dist/editor-runtime/index.js.map +1 -1
  96. package/dist/engine/agent-api/GameAssetValidation.js +1 -1
  97. package/dist/engine/agent-api/GameAssetValidation.js.map +1 -1
  98. package/dist/engine/agent-api/GameEvidence.js +1 -1
  99. package/dist/engine/agent-api/GameEvidence.js.map +1 -1
  100. package/dist/engine/agent-api/GameGenreKits.d.ts +63 -0
  101. package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -1
  102. package/dist/engine/agent-api/GameGenreKits.js +274 -56
  103. package/dist/engine/agent-api/GameGenreKits.js.map +1 -1
  104. package/dist/engine/agent-api/GameRuntime.d.ts +38 -1
  105. package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
  106. package/dist/engine/agent-api/GameRuntime.js +69 -1
  107. package/dist/engine/agent-api/GameRuntime.js.map +1 -1
  108. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +24 -0
  109. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -1
  110. package/dist/engine/agent-api/GameSceneGeometryBindings.js +52 -0
  111. package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -1
  112. package/dist/engine/agent-api/LeanArcadeRuntime.d.ts +111 -0
  113. package/dist/engine/agent-api/LeanArcadeRuntime.d.ts.map +1 -0
  114. package/dist/engine/agent-api/LeanArcadeRuntime.js +219 -0
  115. package/dist/engine/agent-api/LeanArcadeRuntime.js.map +1 -0
  116. package/dist/engine/agent-api/PhysicsRuntime.d.ts +332 -0
  117. package/dist/engine/agent-api/PhysicsRuntime.d.ts.map +1 -0
  118. package/dist/engine/agent-api/PhysicsRuntime.js +619 -0
  119. package/dist/engine/agent-api/PhysicsRuntime.js.map +1 -0
  120. package/dist/engine/agent-api/PlatformerMotion.d.ts +124 -0
  121. package/dist/engine/agent-api/PlatformerMotion.d.ts.map +1 -1
  122. package/dist/engine/agent-api/PlatformerMotion.js +101 -16
  123. package/dist/engine/agent-api/PlatformerMotion.js.map +1 -1
  124. package/dist/engine/agent-api/RootGeometry.d.ts +36 -0
  125. package/dist/engine/agent-api/RootGeometry.d.ts.map +1 -0
  126. package/dist/engine/agent-api/RootGeometry.js +152 -0
  127. package/dist/engine/agent-api/RootGeometry.js.map +1 -0
  128. package/dist/engine/agent-api/VehicleChassis.d.ts +52 -0
  129. package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -1
  130. package/dist/engine/agent-api/VehicleChassis.js +182 -8
  131. package/dist/engine/agent-api/VehicleChassis.js.map +1 -1
  132. package/dist/engine/agent-api/WorldLabelRenderer.d.ts +65 -1
  133. package/dist/engine/agent-api/WorldLabelRenderer.d.ts.map +1 -1
  134. package/dist/engine/agent-api/WorldLabelRenderer.js +48 -5
  135. package/dist/engine/agent-api/WorldLabelRenderer.js.map +1 -1
  136. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -1
  137. package/dist/engine/agent-api/index.d.ts +206 -13
  138. package/dist/engine/agent-api/index.d.ts.map +1 -1
  139. package/dist/engine/agent-api/index.js +1388 -357
  140. package/dist/engine/agent-api/index.js.map +1 -1
  141. package/dist/engine/agent-api/lean-base.d.ts +224 -0
  142. package/dist/engine/agent-api/lean-base.d.ts.map +1 -0
  143. package/dist/engine/agent-api/lean-base.js +322 -0
  144. package/dist/engine/agent-api/lean-base.js.map +1 -0
  145. package/dist/engine/agent-api/lean-game.d.ts +3 -0
  146. package/dist/engine/agent-api/lean-game.d.ts.map +1 -0
  147. package/dist/engine/agent-api/lean-game.js +3 -0
  148. package/dist/engine/agent-api/lean-game.js.map +1 -0
  149. package/dist/engine/agent-api/lean-product.d.ts +3 -0
  150. package/dist/engine/agent-api/lean-product.d.ts.map +1 -0
  151. package/dist/engine/agent-api/lean-product.js +3 -0
  152. package/dist/engine/agent-api/lean-product.js.map +1 -0
  153. package/dist/engine/agent-api/lean.d.ts +3 -0
  154. package/dist/engine/agent-api/lean.d.ts.map +1 -0
  155. package/dist/engine/agent-api/lean.js +3 -0
  156. package/dist/engine/agent-api/lean.js.map +1 -0
  157. package/dist/engine/agent-api/media-node.d.ts +42 -0
  158. package/dist/engine/agent-api/media-node.d.ts.map +1 -0
  159. package/dist/engine/agent-api/media-node.js +44 -0
  160. package/dist/engine/agent-api/media-node.js.map +1 -0
  161. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  162. package/dist/engine/game/GameAudio.d.ts +5 -0
  163. package/dist/engine/game/GameAudio.d.ts.map +1 -1
  164. package/dist/engine/game/GameAudio.js +65 -23
  165. package/dist/engine/game/GameAudio.js.map +1 -1
  166. package/dist/engine/production-runtime/TypedGLBActor.d.ts +9 -1
  167. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  168. package/dist/engine/production-runtime/TypedGLBActor.js +25 -7
  169. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  170. package/dist/engine/production-runtime/index.d.ts +2 -2
  171. package/dist/engine/production-runtime/index.d.ts.map +1 -1
  172. package/dist/engine/threejs-example-parity/FlagshipFoundation.d.ts +3 -3
  173. package/dist/engine/threejs-example-parity/FlagshipFoundation.d.ts.map +1 -1
  174. package/dist/environments/index.d.ts +5 -10
  175. package/dist/environments/index.d.ts.map +1 -1
  176. package/dist/environments/index.js +0 -3
  177. package/dist/environments/index.js.map +1 -1
  178. package/dist/environments/node.d.ts +7 -0
  179. package/dist/environments/node.d.ts.map +1 -0
  180. package/dist/environments/node.js +5 -0
  181. package/dist/environments/node.js.map +1 -0
  182. package/dist/index.d.ts +3 -0
  183. package/dist/index.js +3 -0
  184. package/dist/input/InputActionBinding.d.ts +44 -0
  185. package/dist/input/InputActionBinding.d.ts.map +1 -0
  186. package/dist/input/InputActionBinding.js +86 -0
  187. package/dist/input/InputActionBinding.js.map +1 -0
  188. package/dist/input/InputActionBindingFixtures.d.ts +8 -0
  189. package/dist/input/InputActionBindingFixtures.d.ts.map +1 -1
  190. package/dist/input/InputActionBindingFixtures.js +8 -0
  191. package/dist/input/InputActionBindingFixtures.js.map +1 -1
  192. package/dist/input/InputValueProcessors.d.ts +19 -0
  193. package/dist/input/InputValueProcessors.d.ts.map +1 -0
  194. package/dist/input/InputValueProcessors.js +24 -0
  195. package/dist/input/InputValueProcessors.js.map +1 -0
  196. package/dist/input/index.d.ts +2 -6
  197. package/dist/input/index.d.ts.map +1 -1
  198. package/dist/input/index.js +1 -3
  199. package/dist/input/index.js.map +1 -1
  200. package/dist/lean/ArcadeRuntime.d.ts +111 -0
  201. package/dist/lean/ArcadeRuntime.d.ts.map +1 -0
  202. package/dist/lean/ArcadeRuntime.js +219 -0
  203. package/dist/lean/ArcadeRuntime.js.map +1 -0
  204. package/dist/lean/base.d.ts +228 -0
  205. package/dist/lean/base.d.ts.map +1 -0
  206. package/dist/lean/base.js +322 -0
  207. package/dist/lean/base.js.map +1 -0
  208. package/dist/lean/game.d.ts +19 -0
  209. package/dist/lean/game.d.ts.map +1 -0
  210. package/dist/lean/game.js +37 -0
  211. package/dist/lean/game.js.map +1 -0
  212. package/dist/lean/index.d.ts +4 -0
  213. package/dist/lean/index.d.ts.map +1 -0
  214. package/dist/lean/index.js +10 -0
  215. package/dist/lean/index.js.map +1 -0
  216. package/dist/lean/product.d.ts +4 -0
  217. package/dist/lean/product.d.ts.map +1 -0
  218. package/dist/lean/product.js +55 -0
  219. package/dist/lean/product.js.map +1 -0
  220. package/dist/materials/index.d.ts +1 -10
  221. package/dist/materials/index.d.ts.map +1 -1
  222. package/dist/materials/index.js +1 -6
  223. package/dist/materials/index.js.map +1 -1
  224. package/dist/materials/node.d.ts +4 -0
  225. package/dist/materials/node.d.ts.map +1 -0
  226. package/dist/materials/node.js +3 -0
  227. package/dist/materials/node.js.map +1 -0
  228. package/dist/physics/ArcadeCharacterController.d.ts +53 -0
  229. package/dist/physics/ArcadeCharacterController.d.ts.map +1 -0
  230. package/dist/physics/ArcadeCharacterController.js +98 -0
  231. package/dist/physics/ArcadeCharacterController.js.map +1 -0
  232. package/dist/physics/ArcadeVehicleTelemetry.d.ts +162 -0
  233. package/dist/physics/ArcadeVehicleTelemetry.d.ts.map +1 -0
  234. package/dist/physics/ArcadeVehicleTelemetry.js +363 -0
  235. package/dist/physics/ArcadeVehicleTelemetry.js.map +1 -0
  236. package/dist/physics/CharacterController.d.ts +52 -0
  237. package/dist/physics/CharacterController.d.ts.map +1 -1
  238. package/dist/physics/CharacterController.js +380 -7
  239. package/dist/physics/CharacterController.js.map +1 -1
  240. package/dist/physics/Constraint.d.ts +20 -4
  241. package/dist/physics/Constraint.d.ts.map +1 -1
  242. package/dist/physics/Constraint.js +34 -60
  243. package/dist/physics/Constraint.js.map +1 -1
  244. package/dist/physics/FightingCharacterController.d.ts +32 -0
  245. package/dist/physics/FightingCharacterController.d.ts.map +1 -0
  246. package/dist/physics/FightingCharacterController.js +76 -0
  247. package/dist/physics/FightingCharacterController.js.map +1 -0
  248. package/dist/physics/MeshBVH.d.ts +72 -0
  249. package/dist/physics/MeshBVH.d.ts.map +1 -0
  250. package/dist/physics/MeshBVH.js +244 -0
  251. package/dist/physics/MeshBVH.js.map +1 -0
  252. package/dist/physics/PathFollowDriver.d.ts +162 -0
  253. package/dist/physics/PathFollowDriver.d.ts.map +1 -0
  254. package/dist/physics/PathFollowDriver.js +163 -0
  255. package/dist/physics/PathFollowDriver.js.map +1 -0
  256. package/dist/physics/PhysicsDebugDraw.d.ts +40 -1
  257. package/dist/physics/PhysicsDebugDraw.d.ts.map +1 -1
  258. package/dist/physics/PhysicsDebugDraw.js +87 -17
  259. package/dist/physics/PhysicsDebugDraw.js.map +1 -1
  260. package/dist/physics/PhysicsWorld.d.ts +37 -18
  261. package/dist/physics/PhysicsWorld.d.ts.map +1 -1
  262. package/dist/physics/PhysicsWorld.js +231 -630
  263. package/dist/physics/PhysicsWorld.js.map +1 -1
  264. package/dist/physics/RacingLineProfile.d.ts +116 -0
  265. package/dist/physics/RacingLineProfile.d.ts.map +1 -0
  266. package/dist/physics/RacingLineProfile.js +181 -0
  267. package/dist/physics/RacingLineProfile.js.map +1 -0
  268. package/dist/physics/Raycast.d.ts +11 -0
  269. package/dist/physics/Raycast.d.ts.map +1 -1
  270. package/dist/physics/Raycast.js +62 -8
  271. package/dist/physics/Raycast.js.map +1 -1
  272. package/dist/physics/RigidBody.d.ts +16 -9
  273. package/dist/physics/RigidBody.d.ts.map +1 -1
  274. package/dist/physics/RigidBody.js +23 -75
  275. package/dist/physics/RigidBody.js.map +1 -1
  276. package/dist/physics/SurfaceQuery.d.ts +72 -0
  277. package/dist/physics/SurfaceQuery.d.ts.map +1 -0
  278. package/dist/physics/SurfaceQuery.js +89 -0
  279. package/dist/physics/SurfaceQuery.js.map +1 -0
  280. package/dist/physics/VehicleDynamics.d.ts +10 -0
  281. package/dist/physics/VehicleDynamics.d.ts.map +1 -1
  282. package/dist/physics/VehicleDynamics.js +31 -3
  283. package/dist/physics/VehicleDynamics.js.map +1 -1
  284. package/dist/physics/VehicleMotion.d.ts +125 -0
  285. package/dist/physics/VehicleMotion.d.ts.map +1 -0
  286. package/dist/physics/VehicleMotion.js +373 -0
  287. package/dist/physics/VehicleMotion.js.map +1 -0
  288. package/dist/physics/index.d.ts +62 -17
  289. package/dist/physics/index.d.ts.map +1 -1
  290. package/dist/physics/index.js +70 -17
  291. package/dist/physics/index.js.map +1 -1
  292. package/dist/physics/solverless-entry.d.ts +41 -0
  293. package/dist/physics/solverless-entry.d.ts.map +1 -0
  294. package/dist/physics/solverless-entry.js +40 -0
  295. package/dist/physics/solverless-entry.js.map +1 -0
  296. package/dist/physics/solverless.d.ts +37 -0
  297. package/dist/physics/solverless.d.ts.map +1 -0
  298. package/dist/physics/solverless.js +36 -0
  299. package/dist/physics/solverless.js.map +1 -0
  300. package/dist/physics/world-entry.d.ts +31 -0
  301. package/dist/physics/world-entry.d.ts.map +1 -0
  302. package/dist/physics/world-entry.js +30 -0
  303. package/dist/physics/world-entry.js.map +1 -0
  304. package/dist/physics/world.d.ts +18 -0
  305. package/dist/physics/world.d.ts.map +1 -0
  306. package/dist/physics/world.js +17 -0
  307. package/dist/physics/world.js.map +1 -0
  308. package/dist/physics-rapier/index.d.ts +169 -0
  309. package/dist/physics-rapier/index.d.ts.map +1 -0
  310. package/dist/physics-rapier/index.js +311 -0
  311. package/dist/physics-rapier/index.js.map +1 -0
  312. package/dist/product-studio/ProductLighting.d.ts.map +1 -1
  313. package/dist/product-studio/ProductLighting.js +34 -3
  314. package/dist/product-studio/ProductLighting.js.map +1 -1
  315. package/dist/rendering/ArchitecturalLighting.d.ts +35 -0
  316. package/dist/rendering/ArchitecturalLighting.d.ts.map +1 -0
  317. package/dist/rendering/ArchitecturalLighting.js +162 -0
  318. package/dist/rendering/ArchitecturalLighting.js.map +1 -0
  319. package/dist/rendering/ArchitecturalMaterialCatalog.d.ts +1 -1
  320. package/dist/rendering/ArchitecturalMaterialCatalog.d.ts.map +1 -1
  321. package/dist/rendering/ArchitecturalMaterialCatalog.js +1 -1
  322. package/dist/rendering/ArchitecturalMaterialCatalog.js.map +1 -1
  323. package/dist/rendering/ArchitecturalMeasurement.d.ts +27 -0
  324. package/dist/rendering/ArchitecturalMeasurement.d.ts.map +1 -0
  325. package/dist/rendering/ArchitecturalMeasurement.js +112 -0
  326. package/dist/rendering/ArchitecturalMeasurement.js.map +1 -0
  327. package/dist/rendering/CanonicalProductScene.d.ts +13 -0
  328. package/dist/rendering/CanonicalProductScene.d.ts.map +1 -0
  329. package/dist/rendering/CanonicalProductScene.js +78 -0
  330. package/dist/rendering/CanonicalProductScene.js.map +1 -0
  331. package/dist/rendering/CascadedShadowMaps.d.ts +1 -1
  332. package/dist/rendering/CascadedShadowMaps.d.ts.map +1 -1
  333. package/dist/rendering/CascadedShadowMaps.js +1 -1
  334. package/dist/rendering/CascadedShadowMaps.js.map +1 -1
  335. package/dist/rendering/DepthPass.d.ts +1 -1
  336. package/dist/rendering/DepthPass.d.ts.map +1 -1
  337. package/dist/rendering/DepthPass.js +2 -2
  338. package/dist/rendering/DepthPass.js.map +1 -1
  339. package/dist/rendering/EnvironmentBackgroundPass.d.ts +1 -1
  340. package/dist/rendering/EnvironmentBackgroundPass.d.ts.map +1 -1
  341. package/dist/rendering/EnvironmentBackgroundPass.js +2 -2
  342. package/dist/rendering/EnvironmentBackgroundPass.js.map +1 -1
  343. package/dist/rendering/EnvironmentPlatform.js +2 -2
  344. package/dist/rendering/EnvironmentPlatform.js.map +1 -1
  345. package/dist/rendering/ForwardPass.d.ts +1 -1
  346. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  347. package/dist/rendering/ForwardPass.js +24 -10
  348. package/dist/rendering/ForwardPass.js.map +1 -1
  349. package/dist/rendering/Geometry.d.ts +2 -0
  350. package/dist/rendering/Geometry.d.ts.map +1 -1
  351. package/dist/rendering/Geometry.js +15 -0
  352. package/dist/rendering/Geometry.js.map +1 -1
  353. package/dist/rendering/InstancedPBRMaterial.js +1 -1
  354. package/dist/rendering/InstancedPBRMaterial.js.map +1 -1
  355. package/dist/rendering/InstancedUnlitMaterial.js +1 -1
  356. package/dist/rendering/InstancedUnlitMaterial.js.map +1 -1
  357. package/dist/rendering/Material.js +2 -2
  358. package/dist/rendering/Material.js.map +1 -1
  359. package/dist/rendering/MaterialBinding.js +4 -4
  360. package/dist/rendering/MaterialBinding.js.map +1 -1
  361. package/dist/rendering/MaterialInstance.js +2 -2
  362. package/dist/rendering/MaterialInstance.js.map +1 -1
  363. package/dist/rendering/MorphUnlitMaterial.js +1 -1
  364. package/dist/rendering/MorphUnlitMaterial.js.map +1 -1
  365. package/dist/rendering/NormalMappedPBRMaterial.js +1 -1
  366. package/dist/rendering/NormalMappedPBRMaterial.js.map +1 -1
  367. package/dist/rendering/OceanSurface.d.ts +62 -0
  368. package/dist/rendering/OceanSurface.d.ts.map +1 -0
  369. package/dist/rendering/OceanSurface.js +240 -0
  370. package/dist/rendering/OceanSurface.js.map +1 -0
  371. package/dist/rendering/PBRMaterial.d.ts.map +1 -1
  372. package/dist/rendering/PBRMaterial.js +3 -3
  373. package/dist/rendering/PBRMaterial.js.map +1 -1
  374. package/dist/rendering/PortableShaderMaterial.d.ts +60 -0
  375. package/dist/rendering/PortableShaderMaterial.d.ts.map +1 -0
  376. package/dist/rendering/PortableShaderMaterial.js +223 -0
  377. package/dist/rendering/PortableShaderMaterial.js.map +1 -0
  378. package/dist/rendering/PostProcessPass.d.ts.map +1 -1
  379. package/dist/rendering/PostProcessPass.js +30 -6
  380. package/dist/rendering/PostProcessPass.js.map +1 -1
  381. package/dist/rendering/ProceduralTexture.d.ts +27 -0
  382. package/dist/rendering/ProceduralTexture.d.ts.map +1 -0
  383. package/dist/rendering/ProceduralTexture.js +336 -0
  384. package/dist/rendering/ProceduralTexture.js.map +1 -0
  385. package/dist/rendering/ProductTurntable.d.ts +96 -0
  386. package/dist/rendering/ProductTurntable.d.ts.map +1 -0
  387. package/dist/rendering/ProductTurntable.js +639 -0
  388. package/dist/rendering/ProductTurntable.js.map +1 -0
  389. package/dist/rendering/RenderDevice.d.ts +30 -0
  390. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  391. package/dist/rendering/RenderDevice.js.map +1 -1
  392. package/dist/rendering/Renderer.d.ts +3 -2
  393. package/dist/rendering/Renderer.d.ts.map +1 -1
  394. package/dist/rendering/Renderer.js +23 -9
  395. package/dist/rendering/Renderer.js.map +1 -1
  396. package/dist/rendering/RendererPostprocessPlan.js +4 -4
  397. package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
  398. package/dist/rendering/ScreenSpaceLineMaterial.js +1 -1
  399. package/dist/rendering/ScreenSpaceLineMaterial.js.map +1 -1
  400. package/dist/rendering/ShaderChunks.d.ts.map +1 -1
  401. package/dist/rendering/ShaderChunks.js +81 -19
  402. package/dist/rendering/ShaderChunks.js.map +1 -1
  403. package/dist/rendering/ShaderLibrary.d.ts +2 -78
  404. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  405. package/dist/rendering/ShaderLibrary.js +127 -793
  406. package/dist/rendering/ShaderLibrary.js.map +1 -1
  407. package/dist/rendering/ShaderLibraryCore.d.ts +100 -0
  408. package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -0
  409. package/dist/rendering/ShaderLibraryCore.js +800 -0
  410. package/dist/rendering/ShaderLibraryCore.js.map +1 -0
  411. package/dist/rendering/ShaderModule.d.ts +1 -1
  412. package/dist/rendering/ShaderModule.d.ts.map +1 -1
  413. package/dist/rendering/ShaderModule.js +4 -2
  414. package/dist/rendering/ShaderModule.js.map +1 -1
  415. package/dist/rendering/ShadowPass.d.ts +1 -1
  416. package/dist/rendering/ShadowPass.d.ts.map +1 -1
  417. package/dist/rendering/ShadowPass.js +6 -4
  418. package/dist/rendering/ShadowPass.js.map +1 -1
  419. package/dist/rendering/SkinnedLitMaterial.js +1 -1
  420. package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
  421. package/dist/rendering/SkinnedUnlitMaterial.js +1 -1
  422. package/dist/rendering/SkinnedUnlitMaterial.js.map +1 -1
  423. package/dist/rendering/SpaceEnvironment.d.ts +54 -0
  424. package/dist/rendering/SpaceEnvironment.d.ts.map +1 -0
  425. package/dist/rendering/SpaceEnvironment.js +116 -0
  426. package/dist/rendering/SpaceEnvironment.js.map +1 -0
  427. package/dist/rendering/TerrainHeightfield.d.ts +60 -0
  428. package/dist/rendering/TerrainHeightfield.d.ts.map +1 -0
  429. package/dist/rendering/TerrainHeightfield.js +239 -0
  430. package/dist/rendering/TerrainHeightfield.js.map +1 -0
  431. package/dist/rendering/TextureBinding.d.ts +14 -0
  432. package/dist/rendering/TextureBinding.d.ts.map +1 -1
  433. package/dist/rendering/TextureBinding.js +17 -0
  434. package/dist/rendering/TextureBinding.js.map +1 -1
  435. package/dist/rendering/TexturedPBRMaterial.js +1 -1
  436. package/dist/rendering/TexturedPBRMaterial.js.map +1 -1
  437. package/dist/rendering/TexturedUnlitMaterial.js +1 -1
  438. package/dist/rendering/TexturedUnlitMaterial.js.map +1 -1
  439. package/dist/rendering/UnlitMaterial.js +1 -1
  440. package/dist/rendering/UnlitMaterial.js.map +1 -1
  441. package/dist/rendering/VegetationFixtures.d.ts +1 -1
  442. package/dist/rendering/VegetationFixtures.d.ts.map +1 -1
  443. package/dist/rendering/VegetationFixtures.js +1 -1
  444. package/dist/rendering/VegetationFixtures.js.map +1 -1
  445. package/dist/rendering/VegetationScatter.d.ts +68 -0
  446. package/dist/rendering/VegetationScatter.d.ts.map +1 -0
  447. package/dist/rendering/VegetationScatter.js +241 -0
  448. package/dist/rendering/VegetationScatter.js.map +1 -0
  449. package/dist/rendering/VoxelWorld.d.ts +51 -0
  450. package/dist/rendering/VoxelWorld.d.ts.map +1 -0
  451. package/dist/rendering/VoxelWorld.js +183 -0
  452. package/dist/rendering/VoxelWorld.js.map +1 -0
  453. package/dist/rendering/Weather.d.ts +44 -0
  454. package/dist/rendering/Weather.d.ts.map +1 -0
  455. package/dist/rendering/Weather.js +140 -0
  456. package/dist/rendering/Weather.js.map +1 -0
  457. package/dist/rendering/WebGL2Device.d.ts +22 -0
  458. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  459. package/dist/rendering/WebGL2Device.js +134 -23
  460. package/dist/rendering/WebGL2Device.js.map +1 -1
  461. package/dist/rendering/WebGPUDevice.d.ts +19 -2
  462. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  463. package/dist/rendering/WebGPUDevice.js +188 -9
  464. package/dist/rendering/WebGPUDevice.js.map +1 -1
  465. package/dist/rendering/index.d.ts +25 -32
  466. package/dist/rendering/index.d.ts.map +1 -1
  467. package/dist/rendering/index.js +35 -19
  468. package/dist/rendering/index.js.map +1 -1
  469. package/dist/rendering/lean/LeanProductRenderer.d.ts +29 -0
  470. package/dist/rendering/lean/LeanProductRenderer.d.ts.map +1 -0
  471. package/dist/rendering/lean/LeanProductRenderer.js +38 -0
  472. package/dist/rendering/lean/LeanProductRenderer.js.map +1 -0
  473. package/dist/rendering/lean/LeanProductionRenderer.d.ts +38 -0
  474. package/dist/rendering/lean/LeanProductionRenderer.d.ts.map +1 -0
  475. package/dist/rendering/lean/LeanProductionRenderer.js +88 -0
  476. package/dist/rendering/lean/LeanProductionRenderer.js.map +1 -0
  477. package/dist/rendering/lean-runtime.d.ts +18 -0
  478. package/dist/rendering/lean-runtime.d.ts.map +1 -0
  479. package/dist/rendering/lean-runtime.js +13 -0
  480. package/dist/rendering/lean-runtime.js.map +1 -0
  481. package/dist/rendering/postprocess/EffectComposer.d.ts.map +1 -1
  482. package/dist/rendering/postprocess/EffectComposer.js +1 -3
  483. package/dist/rendering/postprocess/EffectComposer.js.map +1 -1
  484. package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  485. package/dist/rendering/production-runtime/PBRHDRPipeline.js +5 -1
  486. package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
  487. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts +9 -0
  488. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  489. package/dist/rendering/production-runtime/ProductionRendererTypes.js.map +1 -1
  490. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.d.ts +5 -0
  491. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
  492. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.js +53 -5
  493. package/dist/rendering/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
  494. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts +10 -0
  495. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  496. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js +21 -2
  497. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  498. package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  499. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +4 -1
  500. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  501. package/dist/rendering/webgpu-device-entry.d.ts +25 -0
  502. package/dist/rendering/webgpu-device-entry.d.ts.map +1 -0
  503. package/dist/rendering/webgpu-device-entry.js +24 -0
  504. package/dist/rendering/webgpu-device-entry.js.map +1 -0
  505. package/dist/rendering/webgpu.d.ts +25 -0
  506. package/dist/rendering/webgpu.d.ts.map +1 -0
  507. package/dist/rendering/webgpu.js +24 -0
  508. package/dist/rendering/webgpu.js.map +1 -0
  509. package/dist/scene/MathTypes.d.ts +1 -0
  510. package/dist/scene/MathTypes.d.ts.map +1 -1
  511. package/dist/scene/MathTypes.js +3 -0
  512. package/dist/scene/MathTypes.js.map +1 -1
  513. package/dist/scene/Renderable.d.ts +6 -0
  514. package/dist/scene/Renderable.d.ts.map +1 -1
  515. package/dist/scene/Renderable.js +8 -2
  516. package/dist/scene/Renderable.js.map +1 -1
  517. package/dist/scripting/index.d.ts +0 -16
  518. package/dist/scripting/index.d.ts.map +1 -1
  519. package/dist/scripting/index.js +0 -8
  520. package/dist/scripting/index.js.map +1 -1
  521. package/dist/workflows/production-runtime/ProductionExampleRuntime.d.ts +2 -2
  522. package/dist/workflows/production-runtime/ProductionExampleRuntime.d.ts.map +1 -1
  523. package/dist/workflows/production-runtime/ProductionExampleRuntime.js +2 -2
  524. package/dist/workflows/production-runtime/ProductionExampleRuntime.js.map +1 -1
  525. package/package.json +157 -40
  526. package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +8 -0
  527. package/templates/cinematic-scene/node_modules/.vite/deps/package.json +3 -0
  528. package/templates/cinematic-scene/package.json +1 -1
  529. package/templates/cinematic-scene/test-results/.last-run.json +6 -0
  530. package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +64 -0
  531. package/templates/mini-game/README.md +3 -2
  532. package/templates/mini-game/package.json +1 -1
  533. package/templates/mini-game/src/aura-assets.ts +1 -1
  534. package/templates/mini-game/src/main.ts +69 -141
  535. package/templates/product-viewer/README.md +7 -5
  536. package/templates/product-viewer/index.html +1 -1
  537. package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +8 -0
  538. package/templates/product-viewer/node_modules/.vite/deps/package.json +3 -0
  539. package/templates/product-viewer/package.json +1 -1
  540. package/templates/product-viewer/src/aura-assets.ts +1 -1
  541. package/templates/product-viewer/src/main.ts +29 -23
@@ -0,0 +1,311 @@
1
+ const defaultRapierModule = await import("@dimforge/rapier3d-compat");
2
+ const defaultRapierInit = defaultRapierModule.init;
3
+ if (defaultRapierInit)
4
+ await defaultRapierInit({});
5
+ function finite(value, label) {
6
+ if (!Number.isFinite(value))
7
+ throw new TypeError(`${label} must be finite.`);
8
+ return value;
9
+ }
10
+ function vec(value, label) {
11
+ return { x: finite(value[0], `${label}[0]`), y: finite(value[1], `${label}[1]`), z: finite(value[2], `${label}[2]`) };
12
+ }
13
+ export class RapierBodyHandle {
14
+ #body;
15
+ #world;
16
+ constructor(world, body) { this.#world = world; this.#body = body; }
17
+ get id() { return this.#body.handle; }
18
+ position() { const p = this.#body.translation(); return [p.x, p.y, p.z]; }
19
+ velocity() { const p = this.#body.linvel(); return [p.x, p.y, p.z]; }
20
+ sleeping() { return this.#body.isSleeping(); }
21
+ applyForce(force) { this.#body.addForce(vec(force, "force"), true); return this; }
22
+ applyImpulse(impulse) { this.#body.applyImpulse(vec(impulse, "impulse"), true); return this; }
23
+ setVelocity(velocity) { this.#body.setLinvel(vec(velocity, "velocity"), true); return this; }
24
+ setPosition(position) { this.#body.setTranslation(vec(position, "position"), true); return this; }
25
+ wake() { this.#body.wakeUp(); return this; }
26
+ sleep() { this.#body.sleep(); return this; }
27
+ remove() { this.#world.removeBody(this); }
28
+ /** Stable typed escape hatch. The caller does not own or free this object. */
29
+ unsafeRapierBody() { return this.#body; }
30
+ /** The first attached collider, retained for the one-shape convenience API. */
31
+ unsafeRapierCollider() {
32
+ const collider = this.#body.collider(0);
33
+ if (!collider)
34
+ throw new Error("Rapier body has no collider.");
35
+ return collider;
36
+ }
37
+ }
38
+ export class RapierColliderHandle {
39
+ #collider;
40
+ #world;
41
+ constructor(world, collider) { this.#world = world; this.#collider = collider; }
42
+ get id() { return this.#collider.handle; }
43
+ remove() { this.#world.removeCollider(this); }
44
+ /** Stable typed escape hatch. The adapter owns and frees this object. */
45
+ unsafeRapierCollider() { return this.#collider; }
46
+ }
47
+ export class RapierJointHandle {
48
+ #joint;
49
+ #world;
50
+ #module;
51
+ constructor(world, joint, module) { this.#world = world; this.#joint = joint; this.#module = module; }
52
+ get id() { return this.#joint.handle; }
53
+ remove() { this.#world.removeJoint(this); }
54
+ configureMotor(speed, maxTorque) {
55
+ const joint = this.#joint;
56
+ joint.configureMotorModel(this.#module.MotorModel.ForceBased);
57
+ joint.setMotorMaxForce(finite(maxTorque, "maximum motor torque"));
58
+ joint.configureMotorVelocity(finite(speed, "motor speed"), 1);
59
+ }
60
+ /** Stable typed escape hatch. The adapter owns and frees this object. */
61
+ unsafeRapierJoint() { return this.#joint; }
62
+ }
63
+ export class RapierCharacterControllerHandle {
64
+ #world;
65
+ raw;
66
+ constructor(world, raw) { this.#world = world; this.raw = raw; }
67
+ enableAutostep(maxHeight, minWidth, includeDynamicBodies = false) { this.raw.enableAutostep(maxHeight, minWidth, includeDynamicBodies); return this; }
68
+ enableSnapToGround(distance) { this.raw.enableSnapToGround(distance); return this; }
69
+ setMaxSlopeClimbAngle(radians) { this.raw.setMaxSlopeClimbAngle(radians); return this; }
70
+ move(character, requested) {
71
+ const desired = vec(requested, "character movement");
72
+ this.raw.computeColliderMovement(character.unsafeRapierCollider(), desired);
73
+ const movement = this.raw.computedMovement();
74
+ const body = character.unsafeRapierCollider().parent();
75
+ if (!body)
76
+ throw new Error("Character collider must be attached to a rigid body.");
77
+ const current = body.translation();
78
+ const next = { x: current.x + movement.x, y: current.y + movement.y, z: current.z + movement.z };
79
+ body.setNextKinematicTranslation(next);
80
+ return {
81
+ requested: [...requested],
82
+ applied: [movement.x, movement.y, movement.z],
83
+ grounded: this.raw.computedGrounded(),
84
+ collisions: this.raw.numComputedCollisions(),
85
+ nextPosition: [next.x, next.y, next.z]
86
+ };
87
+ }
88
+ dispose() { this.#world.removeCharacterController(this); }
89
+ }
90
+ export class RapierVehicleControllerHandle {
91
+ #world;
92
+ raw;
93
+ constructor(world, raw) { this.#world = world; this.raw = raw; }
94
+ addWheel(connection, direction, axle, restLength, radius) {
95
+ this.raw.addWheel(vec(connection, "connection"), vec(direction, "direction"), vec(axle, "axle"), finite(restLength, "restLength"), finite(radius, "radius"));
96
+ return this;
97
+ }
98
+ update(dt) { this.raw.updateVehicle(finite(dt, "dt")); }
99
+ dispose() { this.#world.removeVehicleController(this); }
100
+ }
101
+ export class RapierPhysicsWorld {
102
+ #module;
103
+ #world;
104
+ #bodies = new Map();
105
+ #colliders = new Map();
106
+ #joints = new Map();
107
+ #characters = new Set();
108
+ #vehicles = new Set();
109
+ #disposed = false;
110
+ constructor(module, gravity) { this.#module = module; this.#world = new module.World(vec(gravity, "gravity")); }
111
+ get disposed() { return this.#disposed; }
112
+ createRigidBody(spec = {}) {
113
+ this.#assertAlive();
114
+ const R = this.#module;
115
+ const descriptor = spec.type === "fixed" ? R.RigidBodyDesc.fixed() : spec.type === "kinematic-position" ? R.RigidBodyDesc.kinematicPositionBased() : spec.type === "kinematic-velocity" ? R.RigidBodyDesc.kinematicVelocityBased() : R.RigidBodyDesc.dynamic();
116
+ if (spec.position)
117
+ descriptor.setTranslation(...spec.position.map((value, index) => finite(value, `position[${index}]`)));
118
+ if (spec.rotation)
119
+ descriptor.setRotation({ x: finite(spec.rotation[0], "rotation[0]"), y: finite(spec.rotation[1], "rotation[1]"), z: finite(spec.rotation[2], "rotation[2]"), w: finite(spec.rotation[3], "rotation[3]") });
120
+ if (spec.linearVelocity)
121
+ descriptor.setLinvel(...spec.linearVelocity.map((value, index) => finite(value, `linearVelocity[${index}]`)));
122
+ if (spec.angularVelocity)
123
+ descriptor.setAngvel(vec(spec.angularVelocity, "angularVelocity"));
124
+ if (spec.linearDamping !== undefined)
125
+ descriptor.setLinearDamping(finite(spec.linearDamping, "linearDamping"));
126
+ if (spec.angularDamping !== undefined)
127
+ descriptor.setAngularDamping(finite(spec.angularDamping, "angularDamping"));
128
+ if (spec.ccd !== undefined)
129
+ descriptor.setCcdEnabled(spec.ccd);
130
+ if (spec.canSleep !== undefined)
131
+ descriptor.setCanSleep(spec.canSleep);
132
+ if (spec.mass !== undefined && spec.principalAngularInertia) {
133
+ descriptor.setAdditionalMassProperties(finite(spec.mass, "mass"), { x: 0, y: 0, z: 0 }, vec(spec.principalAngularInertia, "principal angular inertia"), { x: 0, y: 0, z: 0, w: 1 });
134
+ }
135
+ else if (spec.mass !== undefined) {
136
+ descriptor.setAdditionalMass(finite(spec.mass, "mass"));
137
+ }
138
+ const body = this.#world.createRigidBody(descriptor);
139
+ const handle = new RapierBodyHandle(this, body);
140
+ this.#bodies.set(body.handle, handle);
141
+ return handle;
142
+ }
143
+ createCollider(body, spec) {
144
+ this.#assertAlive();
145
+ const R = this.#module;
146
+ const shape = spec.shape;
147
+ let collider;
148
+ if (shape.kind === "box")
149
+ collider = R.ColliderDesc.cuboid(...shape.halfExtents);
150
+ else if (shape.kind === "sphere")
151
+ collider = R.ColliderDesc.ball(shape.radius);
152
+ else if (shape.kind === "capsule")
153
+ collider = R.ColliderDesc.capsule(shape.halfHeight, shape.radius);
154
+ else if (shape.kind === "plane") {
155
+ collider = new R.ColliderDesc(new R.HalfSpace(vec(shape.normal, "plane normal")));
156
+ collider.setTranslation(shape.normal[0] * shape.constant, shape.normal[1] * shape.constant, shape.normal[2] * shape.constant);
157
+ }
158
+ else if (shape.kind === "mesh") {
159
+ collider = R.ColliderDesc.trimesh(flattenVertices(shape.vertices), new Uint32Array(shape.indices));
160
+ }
161
+ else if (shape.kind === "convex-hull") {
162
+ const hull = R.ColliderDesc.convexHull(flattenVertices(shape.vertices));
163
+ if (!hull)
164
+ throw new Error("Rapier could not construct the requested convex hull.");
165
+ collider = hull;
166
+ }
167
+ else {
168
+ collider = R.ColliderDesc.heightfield(shape.rows - 1, shape.columns - 1, new Float32Array(shape.heights), { x: shape.cellSize * (shape.columns - 1), y: 1, z: shape.cellSize * (shape.rows - 1) });
169
+ }
170
+ if (spec.density !== undefined)
171
+ collider.setDensity(finite(spec.density, "density"));
172
+ if (spec.friction !== undefined)
173
+ collider.setFriction(finite(spec.friction, "friction"));
174
+ if (spec.restitution !== undefined)
175
+ collider.setRestitution(finite(spec.restitution, "restitution"));
176
+ if (spec.sensor !== undefined)
177
+ collider.setSensor(spec.sensor);
178
+ if (spec.collisionGroups !== undefined)
179
+ collider.setCollisionGroups(spec.collisionGroups >>> 0);
180
+ collider.setFrictionCombineRule(R.CoefficientCombineRule.Multiply);
181
+ collider.setRestitutionCombineRule(R.CoefficientCombineRule.Max);
182
+ const rawCollider = this.#world.createCollider(collider, body.unsafeRapierBody());
183
+ // Rapier applies descriptor-level additional mass at the next mass-property
184
+ // recomputation. Do that before the first step so initial velocity, force, and
185
+ // inertia never run for one frame against a zero-mass dynamic body.
186
+ body.unsafeRapierBody().recomputeMassPropertiesFromColliders();
187
+ const handle = new RapierColliderHandle(this, rawCollider);
188
+ this.#colliders.set(rawCollider.handle, handle);
189
+ return handle;
190
+ }
191
+ createBody(spec) {
192
+ const body = this.createRigidBody(spec);
193
+ this.createCollider(body, spec);
194
+ return body;
195
+ }
196
+ removeBody(handle) {
197
+ this.#assertAlive();
198
+ const raw = handle.unsafeRapierBody();
199
+ for (let index = 0; index < raw.numColliders(); index += 1)
200
+ this.#colliders.delete(raw.collider(index).handle);
201
+ this.#world.removeRigidBody(raw);
202
+ this.#bodies.delete(raw.handle);
203
+ }
204
+ removeCollider(handle) { this.#assertAlive(); const raw = handle.unsafeRapierCollider(); this.#world.removeCollider(raw, true); this.#colliders.delete(raw.handle); }
205
+ createJoint(spec, a, b) {
206
+ this.#assertAlive();
207
+ const R = this.#module;
208
+ const anchorA = vec(spec.localAnchorA, "joint anchor A");
209
+ const anchorB = vec(spec.localAnchorB, "joint anchor B");
210
+ const axis = vec(spec.axis, "joint axis");
211
+ let data;
212
+ if (spec.type === "fixed")
213
+ data = R.JointData.fixed(anchorA, { x: 0, y: 0, z: 0, w: 1 }, anchorB, { x: 0, y: 0, z: 0, w: 1 });
214
+ else if (spec.type === "slider")
215
+ data = R.JointData.prismatic(anchorA, anchorB, axis);
216
+ else if (spec.type === "spring") {
217
+ // Aura exposes normalized game-facing stiffness/damping; Rapier expects physical
218
+ // coefficients. The adapter owns this unit conversion so public descriptors remain
219
+ // backend-neutral.
220
+ data = R.JointData.spring(spec.restLength, spec.stiffness * 100, spec.damping * 10, anchorA, anchorB);
221
+ }
222
+ else if (spec.type === "ball-socket")
223
+ data = R.JointData.spherical(anchorA, anchorB);
224
+ else
225
+ data = R.JointData.revolute(anchorA, anchorB, axis);
226
+ const raw = this.#world.createImpulseJoint(data, a.unsafeRapierBody(), b.unsafeRapierBody(), true);
227
+ const unit = raw;
228
+ if (spec.limits && "setLimits" in unit)
229
+ unit.setLimits(spec.limits[0], spec.limits[1]);
230
+ const handle = new RapierJointHandle(this, raw, R);
231
+ if (spec.type === "motorised-hinge")
232
+ handle.configureMotor(spec.motorSpeed, spec.maxMotorTorque);
233
+ this.#joints.set(raw.handle, handle);
234
+ return handle;
235
+ }
236
+ removeJoint(handle) { this.#assertAlive(); const raw = handle.unsafeRapierJoint(); this.#world.removeImpulseJoint(raw, true); this.#joints.delete(raw.handle); }
237
+ createFixedJoint(a, b) {
238
+ this.#assertAlive();
239
+ return this.#world.createImpulseJoint(this.#module.JointData.fixed({ x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0, w: 1 }, { x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0, w: 1 }), a.unsafeRapierBody(), b.unsafeRapierBody(), true);
240
+ }
241
+ createCharacterController(offset = 0.01) { this.#assertAlive(); const value = new RapierCharacterControllerHandle(this, this.#world.createCharacterController(offset)); this.#characters.add(value); return value; }
242
+ removeCharacterController(value) { if (!this.#characters.delete(value))
243
+ return; this.#world.removeCharacterController(value.raw); }
244
+ createVehicleController(chassis) { this.#assertAlive(); const value = new RapierVehicleControllerHandle(this, this.#world.createVehicleController(chassis.unsafeRapierBody())); this.#vehicles.add(value); return value; }
245
+ removeVehicleController(value) { if (!this.#vehicles.delete(value))
246
+ return; this.#world.removeVehicleController(value.raw); }
247
+ raycast(origin, direction, maxDistance = Number.POSITIVE_INFINITY) {
248
+ this.#assertAlive();
249
+ const ray = new this.#module.Ray(vec(origin, "origin"), vec(direction, "direction"));
250
+ const hit = this.#world.castRay(ray, maxDistance, true);
251
+ if (!hit)
252
+ return undefined;
253
+ const collider = this.#world.getCollider(hit.collider.handle);
254
+ const rawBody = collider?.parent();
255
+ if (!rawBody)
256
+ return undefined;
257
+ const body = this.#bodies.get(rawBody.handle);
258
+ if (!body)
259
+ return undefined;
260
+ const point = ray.pointAt(hit.timeOfImpact);
261
+ return { body, colliderHandle: hit.collider.handle, timeOfImpact: hit.timeOfImpact, point: [point.x, point.y, point.z] };
262
+ }
263
+ step(dt = 1 / 60) { this.#assertAlive(); this.#world.timestep = finite(dt, "dt"); this.#world.step(); }
264
+ setGravity(gravity) { this.#assertAlive(); this.#world.gravity = vec(gravity, "gravity"); }
265
+ bodies() { return [...this.#bodies.values()]; }
266
+ /** Stable typed escape hatch. The adapter owns and frees the returned world. */
267
+ unsafeRapierWorld() { this.#assertAlive(); return this.#world; }
268
+ dispose() {
269
+ if (this.#disposed)
270
+ return;
271
+ for (const value of [...this.#vehicles])
272
+ this.removeVehicleController(value);
273
+ for (const value of [...this.#characters])
274
+ this.removeCharacterController(value);
275
+ this.#joints.clear();
276
+ this.#colliders.clear();
277
+ this.#bodies.clear();
278
+ this.#world.free();
279
+ this.#disposed = true;
280
+ }
281
+ #assertAlive() { if (this.#disposed)
282
+ throw new Error("RapierPhysicsWorld is disposed."); }
283
+ }
284
+ function flattenVertices(vertices) {
285
+ const flattened = new Float32Array(vertices.length * 3);
286
+ for (let index = 0; index < vertices.length; index += 1) {
287
+ const vertex = vertices[index];
288
+ flattened[index * 3] = finite(vertex[0], `vertex ${index}[0]`);
289
+ flattened[index * 3 + 1] = finite(vertex[1], `vertex ${index}[1]`);
290
+ flattened[index * 3 + 2] = finite(vertex[2], `vertex ${index}[2]`);
291
+ }
292
+ return flattened;
293
+ }
294
+ export async function createRapierPhysics(options = {}) {
295
+ const module = await (options.moduleLoader ?? (() => import("@dimforge/rapier3d-compat")))();
296
+ // The official compat build exposes explicit async WASM initialization and
297
+ // avoids forcing each consuming bundler to configure a raw `.wasm` loader.
298
+ const explicitInit = module.init;
299
+ if (explicitInit)
300
+ await explicitInit({});
301
+ return new RapierPhysicsWorld(module, options.gravity ?? [0, -9.81, 0]);
302
+ }
303
+ /**
304
+ * Synchronous construction after this ESM module's one-time top-level WASM initialization.
305
+ * This preserves the established `new PhysicsWorld()` ergonomics without hiding a second
306
+ * JavaScript solver behind the synchronous API.
307
+ */
308
+ export function createRapierPhysicsSync(options = {}) {
309
+ return new RapierPhysicsWorld(defaultRapierModule, options.gravity ?? [0, -9.81, 0]);
310
+ }
311
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/physics-rapier/src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProductLighting.d.ts","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,qBAAyC,GAAG,qBAAqB,CAepH"}
1
+ {"version":3,"file":"ProductLighting.d.ts","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,qBAAyC,GAAG,qBAAqB,CA2BpH"}
@@ -2,11 +2,11 @@ import { DirectionalLight } from "../scene/index.js";
2
2
  import { createLightingDefault } from "../rendering/index.js";
3
3
  export function createProductLightingPreset(preset = "catalog-softbox") {
4
4
  const base = createLightingDefault(preset === "inspection-bay" ? "interiorGallery" : preset === "hero-contrast" ? "gameNight" : "studioProduct");
5
- const key = makeDirectionalLight("product-key-light", [1, 0.92, 0.82], preset === "hero-contrast" ? 3.6 : 2.8, [0.42, -0.72, -0.55], true);
6
- const rim = makeDirectionalLight("product-rim-light", [0.58, 0.68, 1], preset === "inspection-bay" ? 0.8 : 1.15, [-0.56, -0.28, 0.78], false);
5
+ const key = makeDirectionalLight("product-key-light", preset === "inspection-bay" ? [1, 0.62, 0.32] : preset === "hero-contrast" ? [0.72, 0.86, 1] : [1, 0.96, 0.9], preset === "hero-contrast" ? 4.2 : preset === "inspection-bay" ? 2.15 : 3.1, preset === "inspection-bay" ? [-0.62, -0.54, -0.56] : [0.42, -0.72, -0.55], true);
6
+ const rim = makeDirectionalLight("product-rim-light", preset === "inspection-bay" ? [0.28, 0.66, 1] : preset === "hero-contrast" ? [1, 0.36, 0.16] : [0.72, 0.82, 1], preset === "inspection-bay" ? 1.35 : preset === "hero-contrast" ? 1.5 : 0.9, [-0.56, -0.28, 0.78], false);
7
7
  return {
8
8
  preset,
9
- environmentLighting: base.environmentLighting,
9
+ environmentLighting: productEnvironment(preset, base.environmentLighting),
10
10
  postprocess: base.postprocess,
11
11
  shadow: {
12
12
  ...base.shadow,
@@ -16,6 +16,37 @@ export function createProductLightingPreset(preset = "catalog-softbox") {
16
16
  lights: [key, rim]
17
17
  };
18
18
  }
19
+ function productEnvironment(preset, fallback) {
20
+ if (preset === "inspection-bay") {
21
+ return {
22
+ color: [1, 0.62, 0.34],
23
+ intensity: 0.5,
24
+ proceduralMap: {
25
+ skyColor: [0.42, 0.68, 1],
26
+ horizonColor: [1, 0.52, 0.24],
27
+ groundColor: [0.045, 0.055, 0.075],
28
+ specularColor: [1, 0.74, 0.42],
29
+ intensity: 0.62,
30
+ specularIntensity: 0.78
31
+ }
32
+ };
33
+ }
34
+ if (preset === "hero-contrast") {
35
+ return {
36
+ color: [0.38, 0.56, 0.92],
37
+ intensity: 0.36,
38
+ proceduralMap: {
39
+ skyColor: [0.12, 0.24, 0.5],
40
+ horizonColor: [0.84, 0.28, 0.12],
41
+ groundColor: [0.012, 0.018, 0.035],
42
+ specularColor: [0.72, 0.88, 1],
43
+ intensity: 0.48,
44
+ specularIntensity: 0.86
45
+ }
46
+ };
47
+ }
48
+ return fallback;
49
+ }
19
50
  function makeDirectionalLight(name, color, intensity, direction, castsShadow) {
20
51
  const source = new DirectionalLight(name);
21
52
  source.color = [...color];
@@ -1 +1 @@
1
- {"version":3,"file":"ProductLighting.js","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,UAAU,2BAA2B,CAAC,SAAgC,iBAAiB;IAC3F,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACjJ,MAAM,GAAG,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3I,MAAM,GAAG,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9I,OAAO;QACL,MAAM;QACN,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE;YACN,GAAG,IAAI,CAAC,MAAM;YACd,KAAK,EAAE,GAAG,CAAC,MAAM;YACjB,QAAQ,EAAE,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;SACvF;QACD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAY,EACZ,KAAwC,EACxC,SAAiB,EACjB,SAA4C,EAC5C,WAAoB;IAEpB,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAA6B,CAAC;IACtD,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,KAAK;QACL,SAAS;QACT,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC;QAC/B,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,CAAC;QACX,WAAW;QACX,SAAS,EAAE,UAAU;QACrB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAAwC;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"ProductLighting.js","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export type ArchitectureLightingPreset = "sunrise" | "morning" | "noon" | "afternoon" | "golden-hour" | "sunset" | "dusk" | "night";
2
+ export type ArchitectureLightKind = "point" | "spot" | "area";
3
+ export type ArchitectureRgb = readonly [number, number, number];
4
+ export type ArchitectureVector3 = readonly [number, number, number];
5
+ export interface ArchitecturalLightingOptions {
6
+ readonly preset?: ArchitectureLightingPreset;
7
+ readonly interiorLightsEnabled?: boolean;
8
+ }
9
+ export interface ArchitectureInteriorLight {
10
+ readonly id: string;
11
+ readonly type: ArchitectureLightKind;
12
+ readonly position: ArchitectureVector3;
13
+ readonly color: ArchitectureRgb;
14
+ readonly intensityLumens: number;
15
+ readonly rangeMeters: number;
16
+ readonly enabled: boolean;
17
+ readonly temperatureKelvin: number;
18
+ }
19
+ export interface ArchitecturalLightingState {
20
+ readonly preset: ArchitectureLightingPreset;
21
+ readonly presetLabel: string;
22
+ readonly timeOfDayHours: number;
23
+ readonly sunDirection: ArchitectureVector3;
24
+ readonly sunColor: ArchitectureRgb;
25
+ readonly skyColor: ArchitectureRgb;
26
+ readonly sunIntensity: number;
27
+ readonly ambientIntensity: number;
28
+ readonly interiorLightsEnabled: boolean;
29
+ readonly interiorLights: readonly ArchitectureInteriorLight[];
30
+ readonly activeInteriorLightCount: number;
31
+ readonly kelvinRange: readonly [number, number];
32
+ readonly hash: string;
33
+ }
34
+ export declare function createArchitecturalLightingState(options?: ArchitecturalLightingOptions): ArchitecturalLightingState;
35
+ //# sourceMappingURL=ArchitecturalLighting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitecturalLighting.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalLighting.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAClC,SAAS,GACT,SAAS,GACT,MAAM,GACN,WAAW,GACX,aAAa,GACb,QAAQ,GACR,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IAC7C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC9D,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAkGD,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,4BAAiC,GAAG,0BAA0B,CA2BvH"}
@@ -0,0 +1,162 @@
1
+ const presetDescriptors = {
2
+ sunrise: {
3
+ label: "Sunrise",
4
+ timeOfDayHours: 6,
5
+ sunIntensity: 1.5,
6
+ sunColor: [1, 0.7, 0.4],
7
+ skyColor: [0.95, 0.7, 0.6],
8
+ ambientIntensity: 0.15,
9
+ interiorLightsOn: true
10
+ },
11
+ morning: {
12
+ label: "Morning",
13
+ timeOfDayHours: 9,
14
+ sunIntensity: 2.8,
15
+ sunColor: [1, 0.95, 0.88],
16
+ skyColor: [0.6, 0.85, 0.95],
17
+ ambientIntensity: 0.25,
18
+ interiorLightsOn: false
19
+ },
20
+ noon: {
21
+ label: "Noon",
22
+ timeOfDayHours: 12,
23
+ sunIntensity: 4.5,
24
+ sunColor: [1, 0.98, 0.95],
25
+ skyColor: [0.53, 0.81, 0.92],
26
+ ambientIntensity: 0.35,
27
+ interiorLightsOn: false
28
+ },
29
+ afternoon: {
30
+ label: "Afternoon",
31
+ timeOfDayHours: 15,
32
+ sunIntensity: 3.2,
33
+ sunColor: [1, 0.94, 0.85],
34
+ skyColor: [0.58, 0.83, 0.93],
35
+ ambientIntensity: 0.28,
36
+ interiorLightsOn: false
37
+ },
38
+ "golden-hour": {
39
+ label: "Golden Hour",
40
+ timeOfDayHours: 18,
41
+ sunIntensity: 2,
42
+ sunColor: [1, 0.75, 0.5],
43
+ skyColor: [0.95, 0.75, 0.6],
44
+ ambientIntensity: 0.2,
45
+ interiorLightsOn: true
46
+ },
47
+ sunset: {
48
+ label: "Sunset",
49
+ timeOfDayHours: 19.5,
50
+ sunIntensity: 1.2,
51
+ sunColor: [1, 0.5, 0.3],
52
+ skyColor: [0.9, 0.5, 0.4],
53
+ ambientIntensity: 0.15,
54
+ interiorLightsOn: true
55
+ },
56
+ dusk: {
57
+ label: "Dusk",
58
+ timeOfDayHours: 20.5,
59
+ sunIntensity: 0.3,
60
+ sunColor: [0.7, 0.6, 0.9],
61
+ skyColor: [0.25, 0.35, 0.65],
62
+ ambientIntensity: 0.08,
63
+ interiorLightsOn: true
64
+ },
65
+ night: {
66
+ label: "Night",
67
+ timeOfDayHours: 23,
68
+ sunIntensity: 0.15,
69
+ sunColor: [0.7, 0.75, 0.9],
70
+ skyColor: [0.02, 0.03, 0.08],
71
+ ambientIntensity: 0.05,
72
+ interiorLightsOn: true
73
+ }
74
+ };
75
+ const interiorLightDescriptors = [
76
+ { id: "living-ceiling-1", type: "point", position: [0, 2.7, -2], intensityLumens: 800, rangeMeters: 5, temperatureKelvin: 3000 },
77
+ { id: "living-ceiling-2", type: "point", position: [0, 2.7, 2], intensityLumens: 800, rangeMeters: 5, temperatureKelvin: 3000 },
78
+ { id: "kitchen-task-1", type: "spot", position: [-3, 2.5, -1], intensityLumens: 1200, rangeMeters: 4, temperatureKelvin: 4000 },
79
+ { id: "kitchen-task-2", type: "spot", position: [-3, 2.5, 1], intensityLumens: 1200, rangeMeters: 4, temperatureKelvin: 4000 },
80
+ { id: "bedroom-ambient", type: "point", position: [4, 2.6, 0], intensityLumens: 600, rangeMeters: 6, temperatureKelvin: 2700 },
81
+ { id: "study-desk", type: "spot", position: [3.5, 1.2, -2.5], intensityLumens: 400, rangeMeters: 2.5, temperatureKelvin: 4500 },
82
+ { id: "hallway-1", type: "point", position: [0, 2.5, 5], intensityLumens: 500, rangeMeters: 4, temperatureKelvin: 3500 },
83
+ { id: "hallway-2", type: "point", position: [0, 2.5, -5], intensityLumens: 500, rangeMeters: 4, temperatureKelvin: 3500 },
84
+ { id: "bathroom-main", type: "area", position: [-4, 2.4, 3], intensityLumens: 900, rangeMeters: 3, temperatureKelvin: 5000 },
85
+ { id: "accent-wall", type: "spot", position: [-5.5, 1.5, 0], intensityLumens: 300, rangeMeters: 3, temperatureKelvin: 3200 }
86
+ ];
87
+ export function createArchitecturalLightingState(options = {}) {
88
+ const preset = options.preset ?? "noon";
89
+ const descriptor = presetDescriptors[preset];
90
+ const interiorLightsEnabled = options.interiorLightsEnabled ?? descriptor.interiorLightsOn;
91
+ const interiorLights = interiorLightDescriptors.map((light) => ({
92
+ ...light,
93
+ color: kelvinToRgb(light.temperatureKelvin),
94
+ enabled: interiorLightsEnabled
95
+ }));
96
+ const enabledLights = interiorLights.filter((light) => light.enabled);
97
+ const kelvinValues = interiorLights.map((light) => light.temperatureKelvin);
98
+ const sunDirection = directionForTimeOfDay(descriptor.timeOfDayHours);
99
+ return {
100
+ preset,
101
+ presetLabel: descriptor.label,
102
+ timeOfDayHours: descriptor.timeOfDayHours,
103
+ sunDirection,
104
+ sunColor: descriptor.sunColor,
105
+ skyColor: descriptor.skyColor,
106
+ sunIntensity: descriptor.sunIntensity,
107
+ ambientIntensity: descriptor.ambientIntensity,
108
+ interiorLightsEnabled,
109
+ interiorLights,
110
+ activeInteriorLightCount: enabledLights.length,
111
+ kelvinRange: [Math.min(...kelvinValues), Math.max(...kelvinValues)],
112
+ hash: hashLighting(preset, sunDirection, descriptor, interiorLights)
113
+ };
114
+ }
115
+ function directionForTimeOfDay(timeOfDayHours) {
116
+ const hourAngle = (timeOfDayHours - 6) * 15;
117
+ const elevation = Math.sin(hourAngle * Math.PI / 180) * 60;
118
+ const azimuth = (hourAngle - 90) * Math.PI / 180;
119
+ const x = Math.cos(azimuth) * 50;
120
+ const y = Math.max(elevation, -10);
121
+ const z = Math.sin(azimuth) * 50;
122
+ const length = Math.hypot(x, y, z) || 1;
123
+ return [
124
+ Number((-x / length).toFixed(4)),
125
+ Number((-y / length).toFixed(4)),
126
+ Number((-z / length).toFixed(4))
127
+ ];
128
+ }
129
+ function kelvinToRgb(kelvin) {
130
+ const temp = kelvin / 100;
131
+ const red = temp <= 66 ? 255 : clamp(329.698727446 * Math.pow(temp - 60, -0.1332047592), 0, 255);
132
+ const green = temp <= 66
133
+ ? clamp(99.4708025861 * Math.log(temp) - 161.1195681661, 0, 255)
134
+ : clamp(288.1221695283 * Math.pow(temp - 60, -0.0755148492), 0, 255);
135
+ const blue = temp >= 66 ? 255 : temp <= 19 ? 0 : clamp(138.5177312231 * Math.log(temp - 10) - 305.0447927307, 0, 255);
136
+ return [roundColor(red / 255), roundColor(green / 255), roundColor(blue / 255)];
137
+ }
138
+ function hashLighting(preset, sunDirection, descriptor, lights) {
139
+ let hash = 0x811c9dc5;
140
+ for (const value of [
141
+ preset.length,
142
+ descriptor.timeOfDayHours,
143
+ descriptor.sunIntensity,
144
+ descriptor.ambientIntensity,
145
+ ...sunDirection,
146
+ ...lights.flatMap((light) => [light.intensityLumens, light.rangeMeters, light.temperatureKelvin, light.enabled ? 1 : 0])
147
+ ]) {
148
+ const scaled = Math.round(value * 10_000);
149
+ hash ^= scaled & 0xff;
150
+ hash = Math.imul(hash, 0x01000193) >>> 0;
151
+ hash ^= (scaled >>> 8) & 0xff;
152
+ hash = Math.imul(hash, 0x01000193) >>> 0;
153
+ }
154
+ return hash.toString(16).padStart(8, "0");
155
+ }
156
+ function roundColor(value) {
157
+ return Number(clamp(value, 0, 1).toFixed(4));
158
+ }
159
+ function clamp(value, min, max) {
160
+ return Math.max(min, Math.min(max, value));
161
+ }
162
+ //# sourceMappingURL=ArchitecturalLighting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchitecturalLighting.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalLighting.ts"],"names":[],"mappings":"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"}