@vgai/engine 0.3.0 → 0.4.0-canary.20260715.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 (559) hide show
  1. package/package.json +8 -2
  2. package/schemas/engine-api.json +124 -0
  3. package/schemas/engine-api.md +53 -0
  4. package/schemas/engine-capabilities.json +124 -0
  5. package/schemas/inputmap.schema.json +314 -0
  6. package/schemas/mat.schema.json +286 -0
  7. package/schemas/prefab.schema.json +10148 -0
  8. package/schemas/scn2d.schema.json +475 -0
  9. package/schemas/vgai-game.schema.json +383 -0
  10. package/schemas/vscn.schema.json +11007 -0
  11. package/src/adapter/{world-kind.ts → adapter-surface.ts} +6 -6
  12. package/src/adapter/authoring.ts +67 -0
  13. package/src/adapter/game-adapter.ts +8 -8
  14. package/src/adapter/host-context.ts +2 -4
  15. package/src/adapter/index.ts +3 -1
  16. package/src/adapter/system-adapter.ts +73 -0
  17. package/src/adapter/vgai-scene-game-adapter.ts +239 -180
  18. package/src/animation/xstate-animation-binding.ts +300 -262
  19. package/src/animation/xstate-animation-meta.ts +50 -13
  20. package/src/character/cloth-sim.ts +533 -0
  21. package/src/character/spring-chain.ts +307 -0
  22. package/src/core/game-loop.ts +41 -3
  23. package/src/core/seeded-random.ts +161 -0
  24. package/src/core/system-runner.ts +20 -3
  25. package/src/core/types.ts +37 -0
  26. package/src/data/data-asset.ts +1 -1
  27. package/src/dev/performance-profiler.ts +213 -0
  28. package/src/dev/webgl-gpu-timer.ts +53 -0
  29. package/src/ecs/component-manager.ts +45 -12
  30. package/src/ecs/game-component.ts +95 -11
  31. package/src/humanoid/bake.operation.ts +326 -0
  32. package/src/humanoid/body.ts +663 -0
  33. package/src/humanoid/clips.ts +149 -0
  34. package/src/humanoid/compose.ts +209 -0
  35. package/src/humanoid/generate.ts +189 -0
  36. package/src/humanoid/index.ts +36 -0
  37. package/src/humanoid/schema.ts +108 -0
  38. package/src/humanoid/skeleton.ts +345 -0
  39. package/src/index.ts +5 -5
  40. package/src/input/input-manager.ts +701 -22
  41. package/src/input/input-types.ts +5 -2
  42. package/src/manifest/index.ts +5 -5
  43. package/src/manifest/load.ts +125 -72
  44. package/src/manifest/schema.ts +362 -255
  45. package/src/react/game-state.tsx +135 -32
  46. package/src/react/root-adapter.tsx +49 -0
  47. package/src/react/unmanaged-root-detector.ts +66 -0
  48. package/src/react/use-data.ts +12 -2
  49. package/src/runtime/create-runtime.ts +100 -282
  50. package/src/runtime/debug-bridge.ts +483 -0
  51. package/src/runtime/debug-registry.ts +856 -0
  52. package/src/runtime/game.ts +342 -93
  53. package/src/runtime/gameplay-rng-trap.ts +134 -0
  54. package/src/runtime/input-router.ts +7 -7
  55. package/src/runtime/mount-game.ts +40 -38
  56. package/src/runtime/mount-manifest.ts +169 -37
  57. package/src/runtime/render-control.ts +13 -13
  58. package/src/runtime/render-seed.ts +1 -1
  59. package/src/runtime/state-bridge.ts +24 -10
  60. package/src/runtime/types.ts +110 -28
  61. package/src/scene/asset-registry.ts +22 -0
  62. package/src/scene/component-registry.ts +14 -3
  63. package/src/scene/defaults.ts +1 -0
  64. package/src/scene/light-camera-factory.ts +11 -3
  65. package/src/scene/scene-apply.ts +55 -4
  66. package/src/scene/scene-loader.ts +10 -27
  67. package/src/scene/scene-types.ts +0 -1
  68. package/src/scene/schema/index.ts +0 -34
  69. package/src/scene/schema/light.ts +16 -1
  70. package/src/scene/schema/material.ts +96 -91
  71. package/src/scene/schema/scene-file.ts +1 -7
  72. package/src/scene/user-data.ts +14 -1
  73. package/src/setup/setup-renderer.ts +1 -1
  74. package/src/tools/define-tool.ts +50 -11
  75. package/src/world2d/authoring-2d.ts +17 -1
  76. package/src/world2d/collision-2d.ts +1 -1
  77. package/src/world2d/pixi-game-adapter.ts +19 -17
  78. package/src/world2d/scene2d-loader.ts +1 -0
  79. package/src/world2d/types.ts +8 -2
  80. package/dist/adapter/authoring.d.ts +0 -404
  81. package/dist/adapter/authoring.d.ts.map +0 -1
  82. package/dist/adapter/authoring.js +0 -22
  83. package/dist/adapter/colyseus-networking-adapter.d.ts +0 -43
  84. package/dist/adapter/colyseus-networking-adapter.d.ts.map +0 -1
  85. package/dist/adapter/colyseus-networking-adapter.js +0 -38
  86. package/dist/adapter/first-party-systems.d.ts +0 -38
  87. package/dist/adapter/first-party-systems.d.ts.map +0 -1
  88. package/dist/adapter/first-party-systems.js +0 -77
  89. package/dist/adapter/game-adapter.d.ts +0 -133
  90. package/dist/adapter/game-adapter.d.ts.map +0 -1
  91. package/dist/adapter/game-adapter.js +0 -10
  92. package/dist/adapter/host-context.d.ts +0 -73
  93. package/dist/adapter/host-context.d.ts.map +0 -1
  94. package/dist/adapter/host-context.js +0 -16
  95. package/dist/adapter/index.d.ts +0 -22
  96. package/dist/adapter/index.d.ts.map +0 -1
  97. package/dist/adapter/index.js +0 -15
  98. package/dist/adapter/ingest/game-contract.d.ts +0 -53
  99. package/dist/adapter/ingest/game-contract.d.ts.map +0 -1
  100. package/dist/adapter/ingest/game-contract.js +0 -30
  101. package/dist/adapter/ingest/overlay-applier.d.ts +0 -118
  102. package/dist/adapter/ingest/overlay-applier.d.ts.map +0 -1
  103. package/dist/adapter/ingest/overlay-applier.js +0 -132
  104. package/dist/adapter/ingest/overlay-apply.d.ts +0 -60
  105. package/dist/adapter/ingest/overlay-apply.d.ts.map +0 -1
  106. package/dist/adapter/ingest/overlay-apply.js +0 -101
  107. package/dist/adapter/ingest/overlay-file.d.ts +0 -79
  108. package/dist/adapter/ingest/overlay-file.d.ts.map +0 -1
  109. package/dist/adapter/ingest/overlay-file.js +0 -66
  110. package/dist/adapter/ingest/overlay-report.d.ts +0 -113
  111. package/dist/adapter/ingest/overlay-report.d.ts.map +0 -1
  112. package/dist/adapter/ingest/overlay-report.js +0 -103
  113. package/dist/adapter/ingest/scene-capture.d.ts +0 -97
  114. package/dist/adapter/ingest/scene-capture.d.ts.map +0 -1
  115. package/dist/adapter/ingest/scene-capture.js +0 -248
  116. package/dist/adapter/ingest/upstream-pin.d.ts +0 -47
  117. package/dist/adapter/ingest/upstream-pin.d.ts.map +0 -1
  118. package/dist/adapter/ingest/upstream-pin.js +0 -50
  119. package/dist/adapter/loop-gate-report.d.ts +0 -34
  120. package/dist/adapter/loop-gate-report.d.ts.map +0 -1
  121. package/dist/adapter/loop-gate-report.js +0 -37
  122. package/dist/adapter/rapier-physics-adapter.d.ts +0 -12
  123. package/dist/adapter/rapier-physics-adapter.d.ts.map +0 -1
  124. package/dist/adapter/rapier-physics-adapter.js +0 -46
  125. package/dist/adapter/system-adapter.d.ts +0 -133
  126. package/dist/adapter/system-adapter.d.ts.map +0 -1
  127. package/dist/adapter/system-adapter.js +0 -13
  128. package/dist/adapter/transform.d.ts +0 -18
  129. package/dist/adapter/transform.d.ts.map +0 -1
  130. package/dist/adapter/transform.js +0 -1
  131. package/dist/adapter/vgai-scene-game-adapter.d.ts +0 -116
  132. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +0 -1
  133. package/dist/adapter/vgai-scene-game-adapter.js +0 -714
  134. package/dist/adapter/world-kind.d.ts +0 -30
  135. package/dist/adapter/world-kind.d.ts.map +0 -1
  136. package/dist/adapter/world-kind.js +0 -18
  137. package/dist/ai/navigation.d.ts +0 -64
  138. package/dist/ai/navigation.d.ts.map +0 -1
  139. package/dist/ai/navigation.js +0 -133
  140. package/dist/animation/anim-graph-types.d.ts +0 -25
  141. package/dist/animation/anim-graph-types.d.ts.map +0 -1
  142. package/dist/animation/anim-graph-types.js +0 -1
  143. package/dist/animation/animation-clock.d.ts +0 -213
  144. package/dist/animation/animation-clock.d.ts.map +0 -1
  145. package/dist/animation/animation-clock.js +0 -301
  146. package/dist/animation/blend-node.d.ts +0 -22
  147. package/dist/animation/blend-node.d.ts.map +0 -1
  148. package/dist/animation/blend-node.js +0 -97
  149. package/dist/animation/camera-ownership.d.ts +0 -250
  150. package/dist/animation/camera-ownership.d.ts.map +0 -1
  151. package/dist/animation/camera-ownership.js +0 -169
  152. package/dist/animation/cinematic-cues.d.ts +0 -200
  153. package/dist/animation/cinematic-cues.d.ts.map +0 -1
  154. package/dist/animation/cinematic-cues.js +0 -213
  155. package/dist/animation/clip-map.d.ts +0 -12
  156. package/dist/animation/clip-map.d.ts.map +0 -1
  157. package/dist/animation/clip-map.js +0 -37
  158. package/dist/animation/gsap-registration.d.ts +0 -119
  159. package/dist/animation/gsap-registration.d.ts.map +0 -1
  160. package/dist/animation/gsap-registration.js +0 -92
  161. package/dist/animation/theatre-clock-binding.d.ts +0 -89
  162. package/dist/animation/theatre-clock-binding.d.ts.map +0 -1
  163. package/dist/animation/theatre-clock-binding.js +0 -29
  164. package/dist/animation/theatre-director.d.ts +0 -242
  165. package/dist/animation/theatre-director.d.ts.map +0 -1
  166. package/dist/animation/theatre-director.js +0 -235
  167. package/dist/animation/theatre-object-binding.d.ts +0 -305
  168. package/dist/animation/theatre-object-binding.d.ts.map +0 -1
  169. package/dist/animation/theatre-object-binding.js +0 -351
  170. package/dist/animation/xstate-animation-binding.d.ts +0 -111
  171. package/dist/animation/xstate-animation-binding.d.ts.map +0 -1
  172. package/dist/animation/xstate-animation-binding.js +0 -307
  173. package/dist/animation/xstate-animation-meta.d.ts +0 -228
  174. package/dist/animation/xstate-animation-meta.d.ts.map +0 -1
  175. package/dist/animation/xstate-animation-meta.js +0 -221
  176. package/dist/assets.d.ts +0 -26
  177. package/dist/assets.d.ts.map +0 -1
  178. package/dist/assets.js +0 -55
  179. package/dist/audio/index.d.ts +0 -4
  180. package/dist/audio/index.d.ts.map +0 -1
  181. package/dist/audio/index.js +0 -24
  182. package/dist/audio/tone-clock-binding.d.ts +0 -75
  183. package/dist/audio/tone-clock-binding.d.ts.map +0 -1
  184. package/dist/audio/tone-clock-binding.js +0 -29
  185. package/dist/audio/tone-context.d.ts +0 -114
  186. package/dist/audio/tone-context.d.ts.map +0 -1
  187. package/dist/audio/tone-context.js +0 -39
  188. package/dist/audio/tone-offline-render.d.ts +0 -90
  189. package/dist/audio/tone-offline-render.d.ts.map +0 -1
  190. package/dist/audio/tone-offline-render.js +0 -56
  191. package/dist/audio/wav-encode.d.ts +0 -38
  192. package/dist/audio/wav-encode.d.ts.map +0 -1
  193. package/dist/audio/wav-encode.js +0 -97
  194. package/dist/core/game-loop.d.ts +0 -21
  195. package/dist/core/game-loop.d.ts.map +0 -1
  196. package/dist/core/game-loop.js +0 -130
  197. package/dist/core/system-runner.d.ts +0 -120
  198. package/dist/core/system-runner.d.ts.map +0 -1
  199. package/dist/core/system-runner.js +0 -286
  200. package/dist/core/types.d.ts +0 -58
  201. package/dist/core/types.d.ts.map +0 -1
  202. package/dist/core/types.js +0 -25
  203. package/dist/data/data-asset.d.ts +0 -101
  204. package/dist/data/data-asset.d.ts.map +0 -1
  205. package/dist/data/data-asset.js +0 -122
  206. package/dist/data/data-check-core.d.ts +0 -110
  207. package/dist/data/data-check-core.d.ts.map +0 -1
  208. package/dist/data/data-check-core.js +0 -178
  209. package/dist/data/data-ref.d.ts +0 -79
  210. package/dist/data/data-ref.d.ts.map +0 -1
  211. package/dist/data/data-ref.js +0 -130
  212. package/dist/data/vite-plugin-data.d.ts +0 -79
  213. package/dist/data/vite-plugin-data.d.ts.map +0 -1
  214. package/dist/data/vite-plugin-data.js +0 -217
  215. package/dist/dev/console-bridge.d.ts +0 -22
  216. package/dist/dev/console-bridge.d.ts.map +0 -1
  217. package/dist/dev/console-bridge.js +0 -71
  218. package/dist/dev/debug-draw.d.ts +0 -24
  219. package/dist/dev/debug-draw.d.ts.map +0 -1
  220. package/dist/dev/debug-draw.js +0 -73
  221. package/dist/dev/logger.d.ts +0 -30
  222. package/dist/dev/logger.d.ts.map +0 -1
  223. package/dist/dev/logger.js +0 -90
  224. package/dist/ecs/component-manager.d.ts +0 -189
  225. package/dist/ecs/component-manager.d.ts.map +0 -1
  226. package/dist/ecs/component-manager.js +0 -676
  227. package/dist/ecs/game-component.d.ts +0 -97
  228. package/dist/ecs/game-component.d.ts.map +0 -1
  229. package/dist/ecs/game-component.js +0 -80
  230. package/dist/ecs/hmr-swap-report.d.ts +0 -53
  231. package/dist/ecs/hmr-swap-report.d.ts.map +0 -1
  232. package/dist/ecs/hmr-swap-report.js +0 -55
  233. package/dist/index.d.ts +0 -37
  234. package/dist/index.d.ts.map +0 -1
  235. package/dist/index.js +0 -30
  236. package/dist/input/input-manager.d.ts +0 -596
  237. package/dist/input/input-manager.d.ts.map +0 -1
  238. package/dist/input/input-manager.js +0 -1564
  239. package/dist/input/input-types.d.ts +0 -171
  240. package/dist/input/input-types.d.ts.map +0 -1
  241. package/dist/input/input-types.js +0 -1
  242. package/dist/input/prompt-labels.d.ts +0 -21
  243. package/dist/input/prompt-labels.d.ts.map +0 -1
  244. package/dist/input/prompt-labels.js +0 -121
  245. package/dist/input/rebind-controller.d.ts +0 -59
  246. package/dist/input/rebind-controller.d.ts.map +0 -1
  247. package/dist/input/rebind-controller.js +0 -85
  248. package/dist/input/schema.d.ts +0 -16
  249. package/dist/input/schema.d.ts.map +0 -1
  250. package/dist/input/schema.js +0 -228
  251. package/dist/loader.d.ts +0 -43
  252. package/dist/loader.d.ts.map +0 -1
  253. package/dist/loader.js +0 -59
  254. package/dist/manifest/index.d.ts +0 -5
  255. package/dist/manifest/index.d.ts.map +0 -1
  256. package/dist/manifest/index.js +0 -8
  257. package/dist/manifest/load-file.d.ts +0 -4
  258. package/dist/manifest/load-file.d.ts.map +0 -1
  259. package/dist/manifest/load-file.js +0 -14
  260. package/dist/manifest/load.d.ts +0 -117
  261. package/dist/manifest/load.d.ts.map +0 -1
  262. package/dist/manifest/load.js +0 -255
  263. package/dist/manifest/schema.d.ts +0 -173
  264. package/dist/manifest/schema.d.ts.map +0 -1
  265. package/dist/manifest/schema.js +0 -302
  266. package/dist/physics/collision-system.d.ts +0 -41
  267. package/dist/physics/collision-system.d.ts.map +0 -1
  268. package/dist/physics/collision-system.js +0 -64
  269. package/dist/physics/physics-registry.d.ts +0 -45
  270. package/dist/physics/physics-registry.d.ts.map +0 -1
  271. package/dist/physics/physics-registry.js +0 -65
  272. package/dist/physics/transform-writer.d.ts +0 -16
  273. package/dist/physics/transform-writer.d.ts.map +0 -1
  274. package/dist/physics/transform-writer.js +0 -38
  275. package/dist/physics/trigger-dispatch.d.ts +0 -24
  276. package/dist/physics/trigger-dispatch.d.ts.map +0 -1
  277. package/dist/physics/trigger-dispatch.js +0 -80
  278. package/dist/react/game-state.d.ts +0 -105
  279. package/dist/react/game-state.d.ts.map +0 -1
  280. package/dist/react/game-state.js +0 -144
  281. package/dist/react/use-data.d.ts +0 -60
  282. package/dist/react/use-data.d.ts.map +0 -1
  283. package/dist/react/use-data.js +0 -96
  284. package/dist/react/use-selection.d.ts +0 -75
  285. package/dist/react/use-selection.d.ts.map +0 -1
  286. package/dist/react/use-selection.js +0 -90
  287. package/dist/render/auto-batcher.d.ts +0 -34
  288. package/dist/render/auto-batcher.d.ts.map +0 -1
  289. package/dist/render/auto-batcher.js +0 -140
  290. package/dist/render/render-batch-system.d.ts +0 -33
  291. package/dist/render/render-batch-system.d.ts.map +0 -1
  292. package/dist/render/render-batch-system.js +0 -230
  293. package/dist/render/render-features.d.ts +0 -47
  294. package/dist/render/render-features.d.ts.map +0 -1
  295. package/dist/render/render-features.js +0 -105
  296. package/dist/render/render-settings.d.ts +0 -36
  297. package/dist/render/render-settings.d.ts.map +0 -1
  298. package/dist/render/render-settings.js +0 -51
  299. package/dist/runtime/create-runtime.d.ts +0 -280
  300. package/dist/runtime/create-runtime.d.ts.map +0 -1
  301. package/dist/runtime/create-runtime.js +0 -795
  302. package/dist/runtime/frame-selector-cache.d.ts +0 -41
  303. package/dist/runtime/frame-selector-cache.d.ts.map +0 -1
  304. package/dist/runtime/frame-selector-cache.js +0 -65
  305. package/dist/runtime/game.d.ts +0 -433
  306. package/dist/runtime/game.d.ts.map +0 -1
  307. package/dist/runtime/game.js +0 -569
  308. package/dist/runtime/input-router.d.ts +0 -78
  309. package/dist/runtime/input-router.d.ts.map +0 -1
  310. package/dist/runtime/input-router.js +0 -171
  311. package/dist/runtime/mount-game.d.ts +0 -129
  312. package/dist/runtime/mount-game.d.ts.map +0 -1
  313. package/dist/runtime/mount-game.js +0 -152
  314. package/dist/runtime/mount-manifest.d.ts +0 -119
  315. package/dist/runtime/mount-manifest.d.ts.map +0 -1
  316. package/dist/runtime/mount-manifest.js +0 -204
  317. package/dist/runtime/render-audio-control.d.ts +0 -110
  318. package/dist/runtime/render-audio-control.d.ts.map +0 -1
  319. package/dist/runtime/render-audio-control.js +0 -111
  320. package/dist/runtime/render-control.d.ts +0 -291
  321. package/dist/runtime/render-control.d.ts.map +0 -1
  322. package/dist/runtime/render-control.js +0 -264
  323. package/dist/runtime/render-seed.d.ts +0 -57
  324. package/dist/runtime/render-seed.d.ts.map +0 -1
  325. package/dist/runtime/render-seed.js +0 -74
  326. package/dist/runtime/scene-ui-bridge.d.ts +0 -69
  327. package/dist/runtime/scene-ui-bridge.d.ts.map +0 -1
  328. package/dist/runtime/scene-ui-bridge.js +0 -23
  329. package/dist/runtime/scene-ui-data.d.ts +0 -13
  330. package/dist/runtime/scene-ui-data.d.ts.map +0 -1
  331. package/dist/runtime/scene-ui-data.js +0 -92
  332. package/dist/runtime/state-bridge.d.ts +0 -47
  333. package/dist/runtime/state-bridge.d.ts.map +0 -1
  334. package/dist/runtime/state-bridge.js +0 -53
  335. package/dist/runtime/types.d.ts +0 -179
  336. package/dist/runtime/types.d.ts.map +0 -1
  337. package/dist/runtime/types.js +0 -1
  338. package/dist/scene/asset-loaders.d.ts +0 -79
  339. package/dist/scene/asset-loaders.d.ts.map +0 -1
  340. package/dist/scene/asset-loaders.js +0 -141
  341. package/dist/scene/asset-paths.d.ts +0 -11
  342. package/dist/scene/asset-paths.d.ts.map +0 -1
  343. package/dist/scene/asset-paths.js +0 -108
  344. package/dist/scene/asset-ref-check.d.ts +0 -88
  345. package/dist/scene/asset-ref-check.d.ts.map +0 -1
  346. package/dist/scene/asset-ref-check.js +0 -214
  347. package/dist/scene/asset-registry.d.ts +0 -30
  348. package/dist/scene/asset-registry.d.ts.map +0 -1
  349. package/dist/scene/asset-registry.js +0 -50
  350. package/dist/scene/collider-dimensions.d.ts +0 -63
  351. package/dist/scene/collider-dimensions.d.ts.map +0 -1
  352. package/dist/scene/collider-dimensions.js +0 -98
  353. package/dist/scene/component-registry.d.ts +0 -17
  354. package/dist/scene/component-registry.d.ts.map +0 -1
  355. package/dist/scene/component-registry.js +0 -28
  356. package/dist/scene/defaults.d.ts +0 -252
  357. package/dist/scene/defaults.d.ts.map +0 -1
  358. package/dist/scene/defaults.js +0 -151
  359. package/dist/scene/geometries/index.d.ts +0 -8
  360. package/dist/scene/geometries/index.d.ts.map +0 -1
  361. package/dist/scene/geometries/index.js +0 -7
  362. package/dist/scene/geometries/terrain.d.ts +0 -2
  363. package/dist/scene/geometries/terrain.d.ts.map +0 -1
  364. package/dist/scene/geometries/terrain.js +0 -37
  365. package/dist/scene/geometry-registry.d.ts +0 -24
  366. package/dist/scene/geometry-registry.d.ts.map +0 -1
  367. package/dist/scene/geometry-registry.js +0 -20
  368. package/dist/scene/instance-registry.d.ts +0 -36
  369. package/dist/scene/instance-registry.d.ts.map +0 -1
  370. package/dist/scene/instance-registry.js +0 -55
  371. package/dist/scene/instancers/grid.d.ts +0 -2
  372. package/dist/scene/instancers/grid.d.ts.map +0 -1
  373. package/dist/scene/instancers/grid.js +0 -36
  374. package/dist/scene/instancers/index.d.ts +0 -8
  375. package/dist/scene/instancers/index.d.ts.map +0 -1
  376. package/dist/scene/instancers/index.js +0 -7
  377. package/dist/scene/light-camera-factory.d.ts +0 -23
  378. package/dist/scene/light-camera-factory.d.ts.map +0 -1
  379. package/dist/scene/light-camera-factory.js +0 -68
  380. package/dist/scene/material-factory.d.ts +0 -17
  381. package/dist/scene/material-factory.d.ts.map +0 -1
  382. package/dist/scene/material-factory.js +0 -197
  383. package/dist/scene/material-registry.d.ts +0 -40
  384. package/dist/scene/material-registry.d.ts.map +0 -1
  385. package/dist/scene/material-registry.js +0 -44
  386. package/dist/scene/materials/index.d.ts +0 -8
  387. package/dist/scene/materials/index.d.ts.map +0 -1
  388. package/dist/scene/materials/index.js +0 -7
  389. package/dist/scene/materials/water.d.ts +0 -2
  390. package/dist/scene/materials/water.d.ts.map +0 -1
  391. package/dist/scene/materials/water.js +0 -54
  392. package/dist/scene/parse.d.ts +0 -23
  393. package/dist/scene/parse.d.ts.map +0 -1
  394. package/dist/scene/parse.js +0 -179
  395. package/dist/scene/particles-factory.d.ts +0 -33
  396. package/dist/scene/particles-factory.d.ts.map +0 -1
  397. package/dist/scene/particles-factory.js +0 -282
  398. package/dist/scene/scene-apply.d.ts +0 -109
  399. package/dist/scene/scene-apply.d.ts.map +0 -1
  400. package/dist/scene/scene-apply.js +0 -326
  401. package/dist/scene/scene-diff-schema.d.ts +0 -285
  402. package/dist/scene/scene-diff-schema.d.ts.map +0 -1
  403. package/dist/scene/scene-diff-schema.js +0 -92
  404. package/dist/scene/scene-diff-types.d.ts +0 -40
  405. package/dist/scene/scene-diff-types.d.ts.map +0 -1
  406. package/dist/scene/scene-diff-types.js +0 -14
  407. package/dist/scene/scene-loader.d.ts +0 -177
  408. package/dist/scene/scene-loader.d.ts.map +0 -1
  409. package/dist/scene/scene-loader.js +0 -1213
  410. package/dist/scene/scene-query.d.ts +0 -11
  411. package/dist/scene/scene-query.d.ts.map +0 -1
  412. package/dist/scene/scene-query.js +0 -63
  413. package/dist/scene/scene-types.d.ts +0 -10
  414. package/dist/scene/scene-types.d.ts.map +0 -1
  415. package/dist/scene/scene-types.js +0 -8
  416. package/dist/scene/scene-version.d.ts +0 -26
  417. package/dist/scene/scene-version.d.ts.map +0 -1
  418. package/dist/scene/scene-version.js +0 -34
  419. package/dist/scene/schema/animation.d.ts +0 -8
  420. package/dist/scene/schema/animation.d.ts.map +0 -1
  421. package/dist/scene/schema/animation.js +0 -42
  422. package/dist/scene/schema/audio.d.ts +0 -13
  423. package/dist/scene/schema/audio.d.ts.map +0 -1
  424. package/dist/scene/schema/audio.js +0 -22
  425. package/dist/scene/schema/camera.d.ts +0 -28
  426. package/dist/scene/schema/camera.d.ts.map +0 -1
  427. package/dist/scene/schema/camera.js +0 -17
  428. package/dist/scene/schema/collider.d.ts +0 -40
  429. package/dist/scene/schema/collider.d.ts.map +0 -1
  430. package/dist/scene/schema/collider.js +0 -55
  431. package/dist/scene/schema/entity-ref.d.ts +0 -31
  432. package/dist/scene/schema/entity-ref.d.ts.map +0 -1
  433. package/dist/scene/schema/entity-ref.js +0 -61
  434. package/dist/scene/schema/entity.d.ts +0 -1036
  435. package/dist/scene/schema/entity.d.ts.map +0 -1
  436. package/dist/scene/schema/entity.js +0 -153
  437. package/dist/scene/schema/environment.d.ts +0 -425
  438. package/dist/scene/schema/environment.d.ts.map +0 -1
  439. package/dist/scene/schema/environment.js +0 -357
  440. package/dist/scene/schema/index.d.ts +0 -39
  441. package/dist/scene/schema/index.d.ts.map +0 -1
  442. package/dist/scene/schema/index.js +0 -20
  443. package/dist/scene/schema/instances.d.ts +0 -14
  444. package/dist/scene/schema/instances.d.ts.map +0 -1
  445. package/dist/scene/schema/instances.js +0 -28
  446. package/dist/scene/schema/joint.d.ts +0 -23
  447. package/dist/scene/schema/joint.d.ts.map +0 -1
  448. package/dist/scene/schema/joint.js +0 -23
  449. package/dist/scene/schema/light.d.ts +0 -38
  450. package/dist/scene/schema/light.d.ts.map +0 -1
  451. package/dist/scene/schema/light.js +0 -26
  452. package/dist/scene/schema/material.d.ts +0 -199
  453. package/dist/scene/schema/material.d.ts.map +0 -1
  454. package/dist/scene/schema/material.js +0 -99
  455. package/dist/scene/schema/mesh.d.ts +0 -48
  456. package/dist/scene/schema/mesh.d.ts.map +0 -1
  457. package/dist/scene/schema/mesh.js +0 -82
  458. package/dist/scene/schema/particles.d.ts +0 -2178
  459. package/dist/scene/schema/particles.d.ts.map +0 -1
  460. package/dist/scene/schema/particles.js +0 -321
  461. package/dist/scene/schema/physics.d.ts +0 -56
  462. package/dist/scene/schema/physics.d.ts.map +0 -1
  463. package/dist/scene/schema/physics.js +0 -37
  464. package/dist/scene/schema/scene-file.d.ts +0 -304
  465. package/dist/scene/schema/scene-file.d.ts.map +0 -1
  466. package/dist/scene/schema/scene-file.js +0 -262
  467. package/dist/scene/schema/shadow.d.ts +0 -28
  468. package/dist/scene/schema/shadow.d.ts.map +0 -1
  469. package/dist/scene/schema/shadow.js +0 -20
  470. package/dist/scene/schema/spline.d.ts +0 -25
  471. package/dist/scene/schema/spline.d.ts.map +0 -1
  472. package/dist/scene/schema/spline.js +0 -15
  473. package/dist/scene/schema/tuples.d.ts +0 -12
  474. package/dist/scene/schema/tuples.d.ts.map +0 -1
  475. package/dist/scene/schema/tuples.js +0 -14
  476. package/dist/scene/schema/ui.d.ts +0 -880
  477. package/dist/scene/schema/ui.d.ts.map +0 -1
  478. package/dist/scene/schema/ui.js +0 -506
  479. package/dist/scene/user-data.d.ts +0 -171
  480. package/dist/scene/user-data.d.ts.map +0 -1
  481. package/dist/scene/user-data.js +0 -137
  482. package/dist/setup/setup-audio.d.ts +0 -20
  483. package/dist/setup/setup-audio.d.ts.map +0 -1
  484. package/dist/setup/setup-audio.js +0 -41
  485. package/dist/setup/setup-particles.d.ts +0 -17
  486. package/dist/setup/setup-particles.d.ts.map +0 -1
  487. package/dist/setup/setup-particles.js +0 -16
  488. package/dist/setup/setup-physics.d.ts +0 -25
  489. package/dist/setup/setup-physics.d.ts.map +0 -1
  490. package/dist/setup/setup-physics.js +0 -51
  491. package/dist/setup/setup-renderer.d.ts +0 -69
  492. package/dist/setup/setup-renderer.d.ts.map +0 -1
  493. package/dist/setup/setup-renderer.js +0 -363
  494. package/dist/tools/define-tool.d.ts +0 -105
  495. package/dist/tools/define-tool.d.ts.map +0 -1
  496. package/dist/tools/define-tool.js +0 -82
  497. package/dist/world2d/authoring-2d.d.ts +0 -76
  498. package/dist/world2d/authoring-2d.d.ts.map +0 -1
  499. package/dist/world2d/authoring-2d.js +0 -176
  500. package/dist/world2d/capture-to-scene2d.d.ts +0 -5
  501. package/dist/world2d/capture-to-scene2d.d.ts.map +0 -1
  502. package/dist/world2d/capture-to-scene2d.js +0 -49
  503. package/dist/world2d/collision-2d.d.ts +0 -52
  504. package/dist/world2d/collision-2d.d.ts.map +0 -1
  505. package/dist/world2d/collision-2d.js +0 -70
  506. package/dist/world2d/components-2d.d.ts +0 -47
  507. package/dist/world2d/components-2d.d.ts.map +0 -1
  508. package/dist/world2d/components-2d.js +0 -77
  509. package/dist/world2d/index.d.ts +0 -34
  510. package/dist/world2d/index.d.ts.map +0 -1
  511. package/dist/world2d/index.js +0 -32
  512. package/dist/world2d/ingest-iframe-2d.d.ts +0 -82
  513. package/dist/world2d/ingest-iframe-2d.d.ts.map +0 -1
  514. package/dist/world2d/ingest-iframe-2d.js +0 -166
  515. package/dist/world2d/ingest2d.d.ts +0 -97
  516. package/dist/world2d/ingest2d.d.ts.map +0 -1
  517. package/dist/world2d/ingest2d.js +0 -40
  518. package/dist/world2d/physics2d-registry.d.ts +0 -24
  519. package/dist/world2d/physics2d-registry.d.ts.map +0 -1
  520. package/dist/world2d/physics2d-registry.js +0 -38
  521. package/dist/world2d/pixi-game-adapter.d.ts +0 -107
  522. package/dist/world2d/pixi-game-adapter.d.ts.map +0 -1
  523. package/dist/world2d/pixi-game-adapter.js +0 -211
  524. package/dist/world2d/pixi-surface.d.ts +0 -39
  525. package/dist/world2d/pixi-surface.d.ts.map +0 -1
  526. package/dist/world2d/pixi-surface.js +0 -47
  527. package/dist/world2d/scene-capture-2d.d.ts +0 -43
  528. package/dist/world2d/scene-capture-2d.d.ts.map +0 -1
  529. package/dist/world2d/scene-capture-2d.js +0 -92
  530. package/dist/world2d/scene2d-loader.d.ts +0 -27
  531. package/dist/world2d/scene2d-loader.d.ts.map +0 -1
  532. package/dist/world2d/scene2d-loader.js +0 -274
  533. package/dist/world2d/schema/entity2d.d.ts +0 -102
  534. package/dist/world2d/schema/entity2d.d.ts.map +0 -1
  535. package/dist/world2d/schema/entity2d.js +0 -119
  536. package/dist/world2d/schema/physics2d.d.ts +0 -46
  537. package/dist/world2d/schema/physics2d.d.ts.map +0 -1
  538. package/dist/world2d/schema/physics2d.js +0 -45
  539. package/dist/world2d/schema/sprite.d.ts +0 -42
  540. package/dist/world2d/schema/sprite.d.ts.map +0 -1
  541. package/dist/world2d/schema/sprite.js +0 -63
  542. package/dist/world2d/schema/tilemap.d.ts +0 -15
  543. package/dist/world2d/schema/tilemap.d.ts.map +0 -1
  544. package/dist/world2d/schema/tilemap.js +0 -19
  545. package/dist/world2d/schema/tuples2d.d.ts +0 -20
  546. package/dist/world2d/schema/tuples2d.d.ts.map +0 -1
  547. package/dist/world2d/schema/tuples2d.js +0 -19
  548. package/dist/world2d/system-adapters-2d.d.ts +0 -16
  549. package/dist/world2d/system-adapters-2d.d.ts.map +0 -1
  550. package/dist/world2d/system-adapters-2d.js +0 -37
  551. package/dist/world2d/transform-writer-2d.d.ts +0 -16
  552. package/dist/world2d/transform-writer-2d.d.ts.map +0 -1
  553. package/dist/world2d/transform-writer-2d.js +0 -22
  554. package/dist/world2d/types.d.ts +0 -53
  555. package/dist/world2d/types.d.ts.map +0 -1
  556. package/dist/world2d/types.js +0 -1
  557. package/src/runtime/scene-ui-bridge.ts +0 -86
  558. package/src/runtime/scene-ui-data.ts +0 -119
  559. package/src/scene/schema/ui.ts +0 -602
@@ -1,151 +0,0 @@
1
- /** Single source of truth for all scene default values. */
2
- export const DEFAULTS = {
3
- transform: {
4
- position: [0, 0, 0],
5
- rotation: [0, 0, 0, 1],
6
- scale: [1, 1, 1],
7
- },
8
- entity: {
9
- visible: true,
10
- locked: false,
11
- pivot: [0, 0, 0],
12
- },
13
- material: {
14
- type: 'standard',
15
- color: '#888888',
16
- metalness: 0,
17
- roughness: 0.5,
18
- emissive: '#000000',
19
- emissiveIntensity: 0,
20
- opacity: 1,
21
- transparent: false,
22
- side: 'front',
23
- flatShading: false,
24
- clearcoat: { clearcoat: 1, clearcoatRoughness: 0 },
25
- transmission: { transmission: 1, ior: 1.5, thickness: 0.5 },
26
- sheen: { sheen: 1, sheenColor: '#ffffff', sheenRoughness: 0.5 },
27
- iridescence: {
28
- iridescence: 1,
29
- iridescenceIOR: 1.3,
30
- iridescenceThicknessRange: [100, 400],
31
- },
32
- displacementScale: 1,
33
- displacementBias: 0,
34
- },
35
- light: {
36
- color: '#ffffff',
37
- intensity: 1,
38
- groundColor: '#000000',
39
- distance: 0,
40
- angle: Math.PI / 6,
41
- penumbra: 0,
42
- // three.js's own RectAreaLight constructor defaults (area lights only).
43
- width: 10,
44
- height: 10,
45
- },
46
- camera: {
47
- fov: 60,
48
- near: 0.1,
49
- far: 1000,
50
- orthoSize: 5,
51
- width: 1920,
52
- height: 1080,
53
- },
54
- audio: {
55
- spatial: true,
56
- volume: 1,
57
- refDistance: 1,
58
- rolloffFactor: 1,
59
- maxDistance: 10000,
60
- loop: false,
61
- autoplay: false,
62
- },
63
- collider: {
64
- cuboid: { halfExtents: [0.5, 0.5, 0.5] },
65
- ball: { radius: 0.5 },
66
- capsule: { radius: 0.25, halfHeight: 0.5 },
67
- },
68
- shadow: {
69
- mapSize: 1024,
70
- },
71
- animation: {
72
- loop: true,
73
- },
74
- fog: {
75
- linear: { near: 1, far: 100 },
76
- exponential: { density: 0.01 },
77
- },
78
- environment: {
79
- envMapIntensity: 1.0,
80
- },
81
- toneMapping: {
82
- // T1.13: the effective renderer default is ACES (see
83
- // setup-renderer.ts's `createHostRenderer` + `applyScenePostProcessing`,
84
- // which both hardcode `THREE.ACESFilmicToneMapping`/'aces' as the
85
- // fallback when a scene omits `environment.toneMapping`) — NOT 'none'.
86
- // This used to say 'none', silently disagreeing with the runtime and
87
- // with the editor's Tone Mapping inspector dropdown.
88
- mode: 'aces',
89
- exposure: 1.0,
90
- },
91
- postProcessing: {
92
- bloom: { intensity: 1.0, luminanceThreshold: 0.9, luminanceSmoothing: 0.025 },
93
- vignette: { darkness: 0.5, offset: 0.5 },
94
- brightnessContrast: { brightness: 0, contrast: 0 },
95
- hueSaturation: { hue: 0, saturation: 0 },
96
- sepia: { intensity: 1.0 },
97
- colorDepth: { bits: 16 },
98
- chromaticAberration: { offsetX: 0.002, offsetY: 0.002, modulationOffset: 0.15 },
99
- lensDistortion: { distortionX: 0, distortionY: 0, focalLengthX: 1, focalLengthY: 1, skew: 0 },
100
- depthOfField: { worldFocusDistance: 10, worldFocusRange: 5, bokehScale: 3, focalLength: 0.04 },
101
- tiltShift: { offset: 0, rotation: 0, focusArea: 0.4, feather: 0.3 },
102
- noise: { premultiply: false },
103
- scanline: { density: 1.25 },
104
- dotScreen: { angle: 1.57, scale: 1.0 },
105
- grid: { scale: 1.0, lineWidth: 0.0 },
106
- pixelation: { granularity: 6 },
107
- glitch: {
108
- delayX: 1.5,
109
- delayY: 3.5,
110
- durationX: 0.6,
111
- durationY: 1.0,
112
- strengthX: 0.3,
113
- strengthY: 1.0,
114
- columns: 0.05,
115
- ratio: 0.85,
116
- },
117
- shockWave: { speed: 2, maxRadius: 1, waveSize: 0.2, amplitude: 0.05 },
118
- smaa: { preset: 'high' },
119
- ssao: { radius: 0.05, intensity: 2.0, bias: 0.025, samples: 16, rings: 7, fade: 0.01 },
120
- n8ao: {
121
- aoSamples: 16,
122
- aoRadius: 5.0,
123
- intensity: 5,
124
- denoiseSamples: 8,
125
- denoiseRadius: 12,
126
- distanceFalloff: 1.0,
127
- },
128
- godRays: { density: 0.96, decay: 0.93, weight: 0.4, exposure: 0.6, samples: 60 },
129
- outline: {
130
- edgeStrength: 3,
131
- pulseSpeed: 0,
132
- visibleEdgeColor: '#ffffff',
133
- hiddenEdgeColor: '#22090a',
134
- },
135
- ssr: { intensity: 1, exponent: 1, distance: 10, thickness: 10, maxRoughness: 1 },
136
- ssgi: { intensity: 1, distance: 10, thickness: 10, maxRoughness: 1 },
137
- motionBlur: { intensity: 1, jitter: 1, samples: 16 },
138
- },
139
- navigation: {
140
- cellSize: 0.3,
141
- cellHeight: 0.2,
142
- walkableSlopeAngle: 45,
143
- walkableHeight: 2,
144
- walkableClimb: 1,
145
- walkableRadius: 0.5,
146
- maxEdgeLen: 12,
147
- maxSimplificationError: 1.3,
148
- minRegionArea: 8,
149
- mergeRegionArea: 20,
150
- },
151
- };
@@ -1,8 +0,0 @@
1
- /**
2
- * Built-in geometry generators. Importing this module for its side effects
3
- * registers the built-ins into the geometry registry. Both the runtime factory
4
- * (scene-loader) and the editor factory (entity-factory) import it so generated
5
- * meshes resolve on whichever side builds first.
6
- */
7
- import './terrain';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scene/geometries/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,WAAW,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Built-in geometry generators. Importing this module for its side effects
3
- * registers the built-ins into the geometry registry. Both the runtime factory
4
- * (scene-loader) and the editor factory (entity-factory) import it so generated
5
- * meshes resolve on whichever side builds first.
6
- */
7
- import './terrain';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=terrain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terrain.d.ts","sourceRoot":"","sources":["../../../src/scene/geometries/terrain.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- import * as THREE from 'three';
2
- import { registerGeometryGenerator } from '../geometry-registry';
3
- /**
4
- * Built-in "Terrain" geometry generator — a horizontal heightfield (XZ plane,
5
- * height in +Y) displaced by a deterministic sum-of-sines, so it pairs with a
6
- * `trimesh` collider for matching terrain physics. Proof material for roadmap #3.
7
- *
8
- * Params: width, depth (world size), segments (grid resolution per axis),
9
- * amplitude (max height), frequency (wave scale). Deterministic — no Math.random.
10
- */
11
- function heightAt(x, z, amplitude, frequency) {
12
- return (amplitude *
13
- (Math.sin(x * frequency) * 0.5 +
14
- Math.cos(z * frequency * 1.3) * 0.3 +
15
- Math.sin((x + z) * frequency * 0.5) * 0.2));
16
- }
17
- registerGeometryGenerator('Terrain', {
18
- build(params) {
19
- const width = params['width'] ?? 40;
20
- const depth = params['depth'] ?? 40;
21
- const segments = params['segments'] ?? 64;
22
- const amplitude = params['amplitude'] ?? 3;
23
- const frequency = params['frequency'] ?? 0.25;
24
- const geo = new THREE.PlaneGeometry(width, depth, segments, segments);
25
- // Lay the plane flat (XZ) with normal +Y, then displace Y by the heightfield.
26
- geo.rotateX(-Math.PI / 2);
27
- const pos = geo.attributes['position'];
28
- for (let i = 0; i < pos.count; i++) {
29
- const x = pos.getX(i);
30
- const z = pos.getZ(i);
31
- pos.setY(i, heightAt(x, z, amplitude, frequency));
32
- }
33
- pos.needsUpdate = true;
34
- geo.computeVertexNormals();
35
- return geo;
36
- },
37
- });
@@ -1,24 +0,0 @@
1
- import type * as THREE from 'three';
2
- /**
3
- * A geometry-generator definition. Registered by name and resolved when a scene
4
- * mesh declares `{ generator: <name> }`. Mirrors the material/instancer registry
5
- * pattern: the generation logic lives here in code, the authored params arrive as
6
- * scene data.
7
- *
8
- * `build` returns a real THREE.BufferGeometry. Paired with a `trimesh` collider,
9
- * the generated geometry also drives physics (e.g. terrain), so the visual and
10
- * collision surfaces match exactly.
11
- */
12
- export interface GeometryGeneratorDef {
13
- build(params: Record<string, unknown>): THREE.BufferGeometry;
14
- }
15
- /** Register a geometry generator under `name`. */
16
- export declare function registerGeometryGenerator(name: string, def: GeometryGeneratorDef): void;
17
- /** Look up a registered geometry generator. */
18
- export declare function getGeometryGenerator(name: string): GeometryGeneratorDef | undefined;
19
- /**
20
- * Build a procedural geometry by registered generator name. Throws if the
21
- * generator is unknown (fail loud — same posture as the other registries).
22
- */
23
- export declare function buildGeneratedGeometry(name: string, params: Record<string, unknown>): THREE.BufferGeometry;
24
- //# sourceMappingURL=geometry-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"geometry-registry.d.ts","sourceRoot":"","sources":["../../src/scene/geometry-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;CAC9D;AAID,kDAAkD;AAClD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAEvF;AAED,+CAA+C;AAC/C,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAEnF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,KAAK,CAAC,cAAc,CAMtB"}
@@ -1,20 +0,0 @@
1
- const registry = new Map();
2
- /** Register a geometry generator under `name`. */
3
- export function registerGeometryGenerator(name, def) {
4
- registry.set(name, def);
5
- }
6
- /** Look up a registered geometry generator. */
7
- export function getGeometryGenerator(name) {
8
- return registry.get(name);
9
- }
10
- /**
11
- * Build a procedural geometry by registered generator name. Throws if the
12
- * generator is unknown (fail loud — same posture as the other registries).
13
- */
14
- export function buildGeneratedGeometry(name, params) {
15
- const def = registry.get(name);
16
- if (!def) {
17
- throw new Error(`Geometry generator "${name}" not found in geometry registry`);
18
- }
19
- return def.build(params ?? {});
20
- }
@@ -1,36 +0,0 @@
1
- import * as THREE from 'three';
2
- import type { InstancesFile } from './schema/instances';
3
- /**
4
- * An instancer definition. Registered by name and resolved when a scene mesh
5
- * declares `{ instancer: <name> }`. Mirrors the material-registry pattern: the
6
- * generation logic lives here in code (the "behavior" half), the authored params
7
- * arrive as scene data (the "data" half).
8
- *
9
- * `build` returns per-instance LOCAL transforms; the factory packs them into a
10
- * single THREE.InstancedMesh, so N instances cost one draw call.
11
- */
12
- export interface InstancerDef {
13
- /** Produce per-instance local matrices from authored params. */
14
- build(params: Record<string, unknown>): THREE.Matrix4[];
15
- }
16
- /** Register an instancer definition under `name`. */
17
- export declare function registerInstancer(name: string, def: InstancerDef): void;
18
- /** Look up a registered instancer. */
19
- export declare function getInstancer(name: string): InstancerDef | undefined;
20
- /**
21
- * Build a THREE.InstancedMesh from a registered instancer. Throws if the
22
- * instancer is unknown (fail loud — same posture as the component/material
23
- * registries). One InstancedMesh = one draw call for all instances.
24
- */
25
- export declare function buildInstancedMesh(geometry: THREE.BufferGeometry, material: THREE.Material, name: string, params: Record<string, unknown>): THREE.InstancedMesh;
26
- /**
27
- * Build a THREE.InstancedMesh directly from an already-parsed `.instances.json`
28
- * tuple array (F3, docs/VSCN-STRUCTURAL-GAPS-DESIGN.md — the declarative,
29
- * authored-data counterpart to `buildInstancedMesh`'s code-registered
30
- * instancers). Each tuple is
31
- * `[posX,posY,posZ, quatX,quatY,quatZ,quatW, scaleX,scaleY,scaleZ]`. Pure and
32
- * synchronous (no fetch) so it's exercisable headlessly by both the scene
33
- * loader (after it fetches+parses the asset) and unit tests.
34
- */
35
- export declare function buildInstancedMeshFromTuples(geometry: THREE.BufferGeometry, material: THREE.Material, tuples: InstancesFile): THREE.InstancedMesh;
36
- //# sourceMappingURL=instance-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instance-registry.d.ts","sourceRoot":"","sources":["../../src/scene/instance-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,gEAAgE;IAChE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;CACzD;AAID,qDAAqD;AACrD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,IAAI,CAEvE;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,KAAK,CAAC,aAAa,CAarB;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,MAAM,EAAE,aAAa,GACpB,KAAK,CAAC,aAAa,CAgBrB"}
@@ -1,55 +0,0 @@
1
- import * as THREE from 'three';
2
- const registry = new Map();
3
- /** Register an instancer definition under `name`. */
4
- export function registerInstancer(name, def) {
5
- registry.set(name, def);
6
- }
7
- /** Look up a registered instancer. */
8
- export function getInstancer(name) {
9
- return registry.get(name);
10
- }
11
- /**
12
- * Build a THREE.InstancedMesh from a registered instancer. Throws if the
13
- * instancer is unknown (fail loud — same posture as the component/material
14
- * registries). One InstancedMesh = one draw call for all instances.
15
- */
16
- export function buildInstancedMesh(geometry, material, name, params) {
17
- const def = registry.get(name);
18
- if (!def) {
19
- throw new Error(`Instancer "${name}" not found in instancer registry`);
20
- }
21
- const matrices = def.build(params ?? {});
22
- const mesh = new THREE.InstancedMesh(geometry, material, matrices.length);
23
- for (let i = 0; i < matrices.length; i++) {
24
- mesh.setMatrixAt(i, matrices[i]);
25
- }
26
- mesh.instanceMatrix.needsUpdate = true;
27
- mesh.userData['__instancer'] = name;
28
- return mesh;
29
- }
30
- /**
31
- * Build a THREE.InstancedMesh directly from an already-parsed `.instances.json`
32
- * tuple array (F3, docs/VSCN-STRUCTURAL-GAPS-DESIGN.md — the declarative,
33
- * authored-data counterpart to `buildInstancedMesh`'s code-registered
34
- * instancers). Each tuple is
35
- * `[posX,posY,posZ, quatX,quatY,quatZ,quatW, scaleX,scaleY,scaleZ]`. Pure and
36
- * synchronous (no fetch) so it's exercisable headlessly by both the scene
37
- * loader (after it fetches+parses the asset) and unit tests.
38
- */
39
- export function buildInstancedMeshFromTuples(geometry, material, tuples) {
40
- const mesh = new THREE.InstancedMesh(geometry, material, tuples.length);
41
- const pos = new THREE.Vector3();
42
- const quat = new THREE.Quaternion();
43
- const scale = new THREE.Vector3();
44
- const matrix = new THREE.Matrix4();
45
- for (let i = 0; i < tuples.length; i++) {
46
- const t = tuples[i];
47
- pos.set(t[0], t[1], t[2]);
48
- quat.set(t[3], t[4], t[5], t[6]);
49
- scale.set(t[7], t[8], t[9]);
50
- matrix.compose(pos, quat, scale);
51
- mesh.setMatrixAt(i, matrix);
52
- }
53
- mesh.instanceMatrix.needsUpdate = true;
54
- return mesh;
55
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=grid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../src/scene/instancers/grid.ts"],"names":[],"mappings":""}
@@ -1,36 +0,0 @@
1
- import * as THREE from 'three';
2
- import { registerInstancer } from '../instance-registry';
3
- /**
4
- * Built-in "Grid" instancer — a countX × countZ grid of instances on the XZ
5
- * plane, centred on the entity origin, with optional deterministic y-jitter.
6
- * Proof material for roadmap #2 (first-class instancing): a 100×100 grid is
7
- * 10,000 instances in one draw call.
8
- *
9
- * Determinism: uses a seeded LCG (not Math.random) so a scene renders the same
10
- * layout every load — important for reproducible scenes and tests.
11
- */
12
- registerInstancer('Grid', {
13
- build(params) {
14
- const countX = params['countX'] ?? 100;
15
- const countZ = params['countZ'] ?? 100;
16
- const spacing = params['spacing'] ?? 2;
17
- const jitter = params['jitter'] ?? 0;
18
- let seed = params['seed'] ?? 1;
19
- const rand = () => {
20
- seed = (seed * 1664525 + 1013904223) % 4294967296;
21
- return seed / 4294967296;
22
- };
23
- const offX = ((countX - 1) * spacing) / 2;
24
- const offZ = ((countZ - 1) * spacing) / 2;
25
- const matrices = [];
26
- const m = new THREE.Matrix4();
27
- for (let x = 0; x < countX; x++) {
28
- for (let z = 0; z < countZ; z++) {
29
- const y = jitter ? (rand() - 0.5) * jitter : 0;
30
- m.makeTranslation(x * spacing - offX, y, z * spacing - offZ);
31
- matrices.push(m.clone());
32
- }
33
- }
34
- return matrices;
35
- },
36
- });
@@ -1,8 +0,0 @@
1
- /**
2
- * Built-in instancer definitions. Importing this module for its side effects
3
- * registers the built-ins into the instancer registry. Both the runtime factory
4
- * (scene-loader) and the editor factory (entity-factory) import it so instanced
5
- * meshes resolve on whichever side builds first.
6
- */
7
- import './grid';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scene/instancers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,QAAQ,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Built-in instancer definitions. Importing this module for its side effects
3
- * registers the built-ins into the instancer registry. Both the runtime factory
4
- * (scene-loader) and the editor factory (entity-factory) import it so instanced
5
- * meshes resolve on whichever side builds first.
6
- */
7
- import './grid';
@@ -1,23 +0,0 @@
1
- /**
2
- * Shared light + camera factory (T1.13 — DEFAULTS truth).
3
- *
4
- * `createLight`/`createCamera` used to be duplicated verbatim between the
5
- * runtime loader (`scene-loader.ts`) and the editor preview
6
- * (`entity-factory.ts`) — both hardcoded the same fallback literals (color
7
- * '#ffffff', fov 60, near 0.1, far 1000, etc.) that happened to agree with
8
- * `DEFAULTS.light`/`DEFAULTS.camera` by luck rather than by reading them. Any
9
- * edit to one copy (or to `DEFAULTS`) could silently diverge from the other.
10
- *
11
- * This module is now the ONE place that builds a `THREE.Light`/`THREE.Camera`
12
- * from a `SceneLight`/`SceneCamera` descriptor, reading its fallbacks from
13
- * `DEFAULTS` (the single source of truth for scene default values — see
14
- * `scene/defaults.ts`). Both the loader and the editor import it, so they
15
- * can no longer disagree.
16
- */
17
- import * as THREE from 'three';
18
- import type { SceneCamera, SceneLight } from './scene-types';
19
- /** Build a Three.js light from a `SceneLight` descriptor. */
20
- export declare function createLight(def: SceneLight): THREE.Light;
21
- /** Build a Three.js camera from a `SceneCamera` descriptor. */
22
- export declare function createCamera(def: SceneCamera): THREE.Camera;
23
- //# sourceMappingURL=light-camera-factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"light-camera-factory.d.ts","sourceRoot":"","sources":["../../src/scene/light-camera-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI7D,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,KAAK,CAAC,KAAK,CAsCxD;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,CAoB3D"}
@@ -1,68 +0,0 @@
1
- /**
2
- * Shared light + camera factory (T1.13 — DEFAULTS truth).
3
- *
4
- * `createLight`/`createCamera` used to be duplicated verbatim between the
5
- * runtime loader (`scene-loader.ts`) and the editor preview
6
- * (`entity-factory.ts`) — both hardcoded the same fallback literals (color
7
- * '#ffffff', fov 60, near 0.1, far 1000, etc.) that happened to agree with
8
- * `DEFAULTS.light`/`DEFAULTS.camera` by luck rather than by reading them. Any
9
- * edit to one copy (or to `DEFAULTS`) could silently diverge from the other.
10
- *
11
- * This module is now the ONE place that builds a `THREE.Light`/`THREE.Camera`
12
- * from a `SceneLight`/`SceneCamera` descriptor, reading its fallbacks from
13
- * `DEFAULTS` (the single source of truth for scene default values — see
14
- * `scene/defaults.ts`). Both the loader and the editor import it, so they
15
- * can no longer disagree.
16
- */
17
- import * as THREE from 'three';
18
- // F2 (docs/VSCN-STRUCTURAL-GAPS-DESIGN.md) — area lights. `RectAreaLight`
19
- // requires its LTC lookup-texture uniforms initialized once before the first
20
- // instance is constructed; three.js ships that setup as an addon, not part
21
- // of core. Imported via the `three/addons/*` alias (package.json `exports`:
22
- // `"./addons/*": "./examples/jsm/*"` — the identical file as
23
- // `three/examples/jsm/lights/RectAreaLightUniformsLib.js`) because a literal
24
- // `/examples/` specifier trips `engine-host-no-game-imports.test.ts`'s
25
- // game/editor-example guard (a same-substring false positive against this
26
- // repo's OWN `packages/editor/template/src/examples/` convention, unrelated
27
- // to three.js's addon folder naming).
28
- import { RectAreaLightUniformsLib } from 'three/addons/lights/RectAreaLightUniformsLib.js';
29
- import { DEFAULTS } from './defaults';
30
- let rectAreaLightUniformsInitialized = false;
31
- /** Build a Three.js light from a `SceneLight` descriptor. */
32
- export function createLight(def) {
33
- const d = DEFAULTS.light;
34
- const color = def.color ?? d.color;
35
- const intensity = def.intensity ?? d.intensity;
36
- switch (def.type) {
37
- case 'directional':
38
- return new THREE.DirectionalLight(color, intensity);
39
- case 'point':
40
- return new THREE.PointLight(color, intensity, def.distance ?? d.distance);
41
- case 'spot':
42
- return new THREE.SpotLight(color, intensity, def.distance ?? d.distance, def.angle ?? d.angle, def.penumbra ?? d.penumbra);
43
- case 'hemisphere':
44
- return new THREE.HemisphereLight(color, def.groundColor ?? d.groundColor, intensity);
45
- case 'area': {
46
- // No shadow map is ever wired for this light (RectAreaLight does not
47
- // support shadows in three.js — see the honesty note on the schema
48
- // field's .describe(); degrade loudly, not silently).
49
- if (!rectAreaLightUniformsInitialized) {
50
- RectAreaLightUniformsLib.init();
51
- rectAreaLightUniformsInitialized = true;
52
- }
53
- return new THREE.RectAreaLight(color, intensity, def.width ?? d.width, def.height ?? d.height);
54
- }
55
- default:
56
- return new THREE.DirectionalLight(color, intensity);
57
- }
58
- }
59
- /** Build a Three.js camera from a `SceneCamera` descriptor. */
60
- export function createCamera(def) {
61
- const d = DEFAULTS.camera;
62
- const aspect = (def.width ?? d.width) / (def.height ?? d.height);
63
- if (def.type === 'orthographic') {
64
- const size = def.orthoSize ?? d.orthoSize;
65
- return new THREE.OrthographicCamera(-size * aspect, size * aspect, size, -size, def.near ?? d.near, def.far ?? d.far);
66
- }
67
- return new THREE.PerspectiveCamera(def.fov ?? d.fov, aspect, def.near ?? d.near, def.far ?? d.far);
68
- }
@@ -1,17 +0,0 @@
1
- import * as THREE from 'three';
2
- import type { SceneMaterial, SceneMesh } from './scene-types';
3
- /**
4
- * Single source of truth for turning a `SceneMesh` / `SceneMaterial` descriptor
5
- * into Three.js geometry/material. Both the runtime scene-loader and the editor's
6
- * entity-factory import these, so the editor preview renders exactly what the game
7
- * renders (the WYSIWYG guarantee in ARCHITECTURE.md). Previously these were
8
- * copy-pasted in two places and had to be hand-synced — any new material feature
9
- * added to one and not the other silently broke that guarantee.
10
- *
11
- * Callers must have imported the side-effect registration modules
12
- * (`./geometries`, `./materials`, plus any custom defs) so `buildGeneratedGeometry`
13
- * and `buildCustomMaterial` resolve their registries.
14
- */
15
- export declare function createGeometry(mesh: SceneMesh): THREE.BufferGeometry;
16
- export declare function createMaterial(mat?: SceneMaterial): THREE.Material;
17
- //# sourceMappingURL=material-factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"material-factory.d.ts","sourceRoot":"","sources":["../../src/scene/material-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;;;;;;;;GAWG;AAEH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC,cAAc,CAwBpE;AAGD,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,QAAQ,CAmKlE"}