@vgai/engine 0.5.0 → 0.5.2

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 (538) hide show
  1. package/package.json +1 -1
  2. package/schemas/engine-capabilities.json +4 -4
  3. package/schemas/vgai-game.schema.json +2 -2
  4. package/src/adapter/authoring.ts +42 -0
  5. package/src/adapter/index.ts +3 -0
  6. package/src/adapter/ingest/overlay-apply.ts +50 -6
  7. package/src/adapter/ingest/scene-capture.ts +51 -2
  8. package/src/adapter/vgai-scene-game-adapter.ts +24 -0
  9. package/src/manifest/schema.ts +7 -3
  10. package/src/runtime/create-runtime.ts +97 -0
  11. package/src/runtime/game.ts +11 -1
  12. package/src/scene/asset-ref-check.ts +1 -1
  13. package/src/scene/scene-loader.ts +2 -2
  14. package/src/scene/user-data.ts +18 -0
  15. package/src/world3d-react/behavior.tsx +19 -11
  16. package/src/world3d-react/r3f-adapter.tsx +8 -0
  17. package/dist/adapter/adapter-surface.d.ts +0 -30
  18. package/dist/adapter/adapter-surface.d.ts.map +0 -1
  19. package/dist/adapter/adapter-surface.js +0 -18
  20. package/dist/adapter/authoring.d.ts +0 -461
  21. package/dist/adapter/authoring.d.ts.map +0 -1
  22. package/dist/adapter/authoring.js +0 -22
  23. package/dist/adapter/colyseus-networking-adapter.d.ts +0 -43
  24. package/dist/adapter/colyseus-networking-adapter.d.ts.map +0 -1
  25. package/dist/adapter/colyseus-networking-adapter.js +0 -38
  26. package/dist/adapter/first-party-systems.d.ts +0 -38
  27. package/dist/adapter/first-party-systems.d.ts.map +0 -1
  28. package/dist/adapter/first-party-systems.js +0 -77
  29. package/dist/adapter/game-adapter.d.ts +0 -133
  30. package/dist/adapter/game-adapter.d.ts.map +0 -1
  31. package/dist/adapter/game-adapter.js +0 -10
  32. package/dist/adapter/host-context.d.ts +0 -71
  33. package/dist/adapter/host-context.d.ts.map +0 -1
  34. package/dist/adapter/host-context.js +0 -16
  35. package/dist/adapter/index.d.ts +0 -22
  36. package/dist/adapter/index.d.ts.map +0 -1
  37. package/dist/adapter/index.js +0 -15
  38. package/dist/adapter/ingest/game-contract.d.ts +0 -53
  39. package/dist/adapter/ingest/game-contract.d.ts.map +0 -1
  40. package/dist/adapter/ingest/game-contract.js +0 -30
  41. package/dist/adapter/ingest/overlay-applier.d.ts +0 -118
  42. package/dist/adapter/ingest/overlay-applier.d.ts.map +0 -1
  43. package/dist/adapter/ingest/overlay-applier.js +0 -132
  44. package/dist/adapter/ingest/overlay-apply.d.ts +0 -60
  45. package/dist/adapter/ingest/overlay-apply.d.ts.map +0 -1
  46. package/dist/adapter/ingest/overlay-apply.js +0 -101
  47. package/dist/adapter/ingest/overlay-file.d.ts +0 -79
  48. package/dist/adapter/ingest/overlay-file.d.ts.map +0 -1
  49. package/dist/adapter/ingest/overlay-file.js +0 -66
  50. package/dist/adapter/ingest/overlay-report.d.ts +0 -113
  51. package/dist/adapter/ingest/overlay-report.d.ts.map +0 -1
  52. package/dist/adapter/ingest/overlay-report.js +0 -103
  53. package/dist/adapter/ingest/scene-capture.d.ts +0 -97
  54. package/dist/adapter/ingest/scene-capture.d.ts.map +0 -1
  55. package/dist/adapter/ingest/scene-capture.js +0 -248
  56. package/dist/adapter/ingest/upstream-pin.d.ts +0 -47
  57. package/dist/adapter/ingest/upstream-pin.d.ts.map +0 -1
  58. package/dist/adapter/ingest/upstream-pin.js +0 -50
  59. package/dist/adapter/loop-gate-report.d.ts +0 -34
  60. package/dist/adapter/loop-gate-report.d.ts.map +0 -1
  61. package/dist/adapter/loop-gate-report.js +0 -37
  62. package/dist/adapter/rapier-physics-adapter.d.ts +0 -12
  63. package/dist/adapter/rapier-physics-adapter.d.ts.map +0 -1
  64. package/dist/adapter/rapier-physics-adapter.js +0 -46
  65. package/dist/adapter/system-adapter.d.ts +0 -206
  66. package/dist/adapter/system-adapter.d.ts.map +0 -1
  67. package/dist/adapter/system-adapter.js +0 -13
  68. package/dist/adapter/transform.d.ts +0 -18
  69. package/dist/adapter/transform.d.ts.map +0 -1
  70. package/dist/adapter/transform.js +0 -1
  71. package/dist/adapter/vgai-scene-game-adapter.d.ts +0 -108
  72. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +0 -1
  73. package/dist/adapter/vgai-scene-game-adapter.js +0 -762
  74. package/dist/ai/navigation.d.ts +0 -64
  75. package/dist/ai/navigation.d.ts.map +0 -1
  76. package/dist/ai/navigation.js +0 -133
  77. package/dist/animation/anim-graph-types.d.ts +0 -25
  78. package/dist/animation/anim-graph-types.d.ts.map +0 -1
  79. package/dist/animation/anim-graph-types.js +0 -1
  80. package/dist/animation/animation-clock.d.ts +0 -213
  81. package/dist/animation/animation-clock.d.ts.map +0 -1
  82. package/dist/animation/animation-clock.js +0 -301
  83. package/dist/animation/blend-node.d.ts +0 -22
  84. package/dist/animation/blend-node.d.ts.map +0 -1
  85. package/dist/animation/blend-node.js +0 -97
  86. package/dist/animation/camera-ownership.d.ts +0 -250
  87. package/dist/animation/camera-ownership.d.ts.map +0 -1
  88. package/dist/animation/camera-ownership.js +0 -169
  89. package/dist/animation/cinematic-cues.d.ts +0 -200
  90. package/dist/animation/cinematic-cues.d.ts.map +0 -1
  91. package/dist/animation/cinematic-cues.js +0 -213
  92. package/dist/animation/clip-map.d.ts +0 -12
  93. package/dist/animation/clip-map.d.ts.map +0 -1
  94. package/dist/animation/clip-map.js +0 -37
  95. package/dist/animation/gsap-registration.d.ts +0 -119
  96. package/dist/animation/gsap-registration.d.ts.map +0 -1
  97. package/dist/animation/gsap-registration.js +0 -92
  98. package/dist/animation/theatre-clock-binding.d.ts +0 -89
  99. package/dist/animation/theatre-clock-binding.d.ts.map +0 -1
  100. package/dist/animation/theatre-clock-binding.js +0 -29
  101. package/dist/animation/theatre-director.d.ts +0 -242
  102. package/dist/animation/theatre-director.d.ts.map +0 -1
  103. package/dist/animation/theatre-director.js +0 -235
  104. package/dist/animation/theatre-object-binding.d.ts +0 -305
  105. package/dist/animation/theatre-object-binding.d.ts.map +0 -1
  106. package/dist/animation/theatre-object-binding.js +0 -351
  107. package/dist/animation/xstate-animation-binding.d.ts +0 -56
  108. package/dist/animation/xstate-animation-binding.d.ts.map +0 -1
  109. package/dist/animation/xstate-animation-binding.js +0 -331
  110. package/dist/animation/xstate-animation-meta.d.ts +0 -266
  111. package/dist/animation/xstate-animation-meta.d.ts.map +0 -1
  112. package/dist/animation/xstate-animation-meta.js +0 -252
  113. package/dist/assets.d.ts +0 -26
  114. package/dist/assets.d.ts.map +0 -1
  115. package/dist/assets.js +0 -55
  116. package/dist/audio/index.d.ts +0 -4
  117. package/dist/audio/index.d.ts.map +0 -1
  118. package/dist/audio/index.js +0 -24
  119. package/dist/audio/tone-clock-binding.d.ts +0 -75
  120. package/dist/audio/tone-clock-binding.d.ts.map +0 -1
  121. package/dist/audio/tone-clock-binding.js +0 -29
  122. package/dist/audio/tone-context.d.ts +0 -114
  123. package/dist/audio/tone-context.d.ts.map +0 -1
  124. package/dist/audio/tone-context.js +0 -39
  125. package/dist/audio/tone-offline-render.d.ts +0 -90
  126. package/dist/audio/tone-offline-render.d.ts.map +0 -1
  127. package/dist/audio/tone-offline-render.js +0 -56
  128. package/dist/audio/wav-encode.d.ts +0 -38
  129. package/dist/audio/wav-encode.d.ts.map +0 -1
  130. package/dist/audio/wav-encode.js +0 -97
  131. package/dist/character/cloth-sim.d.ts +0 -179
  132. package/dist/character/cloth-sim.d.ts.map +0 -1
  133. package/dist/character/cloth-sim.js +0 -334
  134. package/dist/character/spring-chain.d.ts +0 -135
  135. package/dist/character/spring-chain.d.ts.map +0 -1
  136. package/dist/character/spring-chain.js +0 -165
  137. package/dist/core/game-loop.d.ts +0 -42
  138. package/dist/core/game-loop.d.ts.map +0 -1
  139. package/dist/core/game-loop.js +0 -167
  140. package/dist/core/seeded-random.d.ts +0 -69
  141. package/dist/core/seeded-random.d.ts.map +0 -1
  142. package/dist/core/seeded-random.js +0 -121
  143. package/dist/core/system-runner.d.ts +0 -120
  144. package/dist/core/system-runner.d.ts.map +0 -1
  145. package/dist/core/system-runner.js +0 -297
  146. package/dist/core/types.d.ts +0 -92
  147. package/dist/core/types.d.ts.map +0 -1
  148. package/dist/core/types.js +0 -25
  149. package/dist/data/data-asset.d.ts +0 -101
  150. package/dist/data/data-asset.d.ts.map +0 -1
  151. package/dist/data/data-asset.js +0 -122
  152. package/dist/data/data-check-core.d.ts +0 -110
  153. package/dist/data/data-check-core.d.ts.map +0 -1
  154. package/dist/data/data-check-core.js +0 -178
  155. package/dist/data/data-ref.d.ts +0 -79
  156. package/dist/data/data-ref.d.ts.map +0 -1
  157. package/dist/data/data-ref.js +0 -130
  158. package/dist/data/vite-plugin-data.d.ts +0 -79
  159. package/dist/data/vite-plugin-data.d.ts.map +0 -1
  160. package/dist/data/vite-plugin-data.js +0 -217
  161. package/dist/dev/console-bridge.d.ts +0 -22
  162. package/dist/dev/console-bridge.d.ts.map +0 -1
  163. package/dist/dev/console-bridge.js +0 -71
  164. package/dist/dev/debug-draw.d.ts +0 -24
  165. package/dist/dev/debug-draw.d.ts.map +0 -1
  166. package/dist/dev/debug-draw.js +0 -73
  167. package/dist/dev/logger.d.ts +0 -30
  168. package/dist/dev/logger.d.ts.map +0 -1
  169. package/dist/dev/logger.js +0 -90
  170. package/dist/dev/performance-profiler.d.ts +0 -60
  171. package/dist/dev/performance-profiler.d.ts.map +0 -1
  172. package/dist/dev/performance-profiler.js +0 -181
  173. package/dist/dev/webgl-gpu-timer.d.ts +0 -8
  174. package/dist/dev/webgl-gpu-timer.d.ts.map +0 -1
  175. package/dist/dev/webgl-gpu-timer.js +0 -52
  176. package/dist/ecs/component-manager.d.ts +0 -205
  177. package/dist/ecs/component-manager.d.ts.map +0 -1
  178. package/dist/ecs/component-manager.js +0 -706
  179. package/dist/ecs/game-component.d.ts +0 -146
  180. package/dist/ecs/game-component.d.ts.map +0 -1
  181. package/dist/ecs/game-component.js +0 -141
  182. package/dist/ecs/hmr-swap-report.d.ts +0 -53
  183. package/dist/ecs/hmr-swap-report.d.ts.map +0 -1
  184. package/dist/ecs/hmr-swap-report.js +0 -55
  185. package/dist/humanoid/bake.operation.d.ts +0 -119
  186. package/dist/humanoid/bake.operation.d.ts.map +0 -1
  187. package/dist/humanoid/bake.operation.js +0 -228
  188. package/dist/humanoid/body.d.ts +0 -101
  189. package/dist/humanoid/body.d.ts.map +0 -1
  190. package/dist/humanoid/body.js +0 -530
  191. package/dist/humanoid/clips.d.ts +0 -62
  192. package/dist/humanoid/clips.d.ts.map +0 -1
  193. package/dist/humanoid/clips.js +0 -121
  194. package/dist/humanoid/compose.d.ts +0 -75
  195. package/dist/humanoid/compose.d.ts.map +0 -1
  196. package/dist/humanoid/compose.js +0 -176
  197. package/dist/humanoid/generate.d.ts +0 -92
  198. package/dist/humanoid/generate.d.ts.map +0 -1
  199. package/dist/humanoid/generate.js +0 -124
  200. package/dist/humanoid/index.d.ts +0 -24
  201. package/dist/humanoid/index.d.ts.map +0 -1
  202. package/dist/humanoid/index.js +0 -18
  203. package/dist/humanoid/schema.d.ts +0 -35
  204. package/dist/humanoid/schema.d.ts.map +0 -1
  205. package/dist/humanoid/schema.js +0 -87
  206. package/dist/humanoid/skeleton.d.ts +0 -103
  207. package/dist/humanoid/skeleton.d.ts.map +0 -1
  208. package/dist/humanoid/skeleton.js +0 -289
  209. package/dist/index.d.ts +0 -37
  210. package/dist/index.d.ts.map +0 -1
  211. package/dist/index.js +0 -30
  212. package/dist/input/input-manager.d.ts +0 -945
  213. package/dist/input/input-manager.d.ts.map +0 -1
  214. package/dist/input/input-manager.js +0 -2207
  215. package/dist/input/input-types.d.ts +0 -174
  216. package/dist/input/input-types.d.ts.map +0 -1
  217. package/dist/input/input-types.js +0 -1
  218. package/dist/input/prompt-labels.d.ts +0 -21
  219. package/dist/input/prompt-labels.d.ts.map +0 -1
  220. package/dist/input/prompt-labels.js +0 -121
  221. package/dist/input/rebind-controller.d.ts +0 -59
  222. package/dist/input/rebind-controller.d.ts.map +0 -1
  223. package/dist/input/rebind-controller.js +0 -85
  224. package/dist/input/schema.d.ts +0 -16
  225. package/dist/input/schema.d.ts.map +0 -1
  226. package/dist/input/schema.js +0 -228
  227. package/dist/loader.d.ts +0 -43
  228. package/dist/loader.d.ts.map +0 -1
  229. package/dist/loader.js +0 -59
  230. package/dist/manifest/index.d.ts +0 -5
  231. package/dist/manifest/index.d.ts.map +0 -1
  232. package/dist/manifest/index.js +0 -8
  233. package/dist/manifest/load-file.d.ts +0 -4
  234. package/dist/manifest/load-file.d.ts.map +0 -1
  235. package/dist/manifest/load-file.js +0 -14
  236. package/dist/manifest/load.d.ts +0 -144
  237. package/dist/manifest/load.d.ts.map +0 -1
  238. package/dist/manifest/load.js +0 -273
  239. package/dist/manifest/schema.d.ts +0 -230
  240. package/dist/manifest/schema.d.ts.map +0 -1
  241. package/dist/manifest/schema.js +0 -394
  242. package/dist/physics/collision-system.d.ts +0 -41
  243. package/dist/physics/collision-system.d.ts.map +0 -1
  244. package/dist/physics/collision-system.js +0 -64
  245. package/dist/physics/physics-registry.d.ts +0 -45
  246. package/dist/physics/physics-registry.d.ts.map +0 -1
  247. package/dist/physics/physics-registry.js +0 -65
  248. package/dist/physics/transform-writer.d.ts +0 -16
  249. package/dist/physics/transform-writer.d.ts.map +0 -1
  250. package/dist/physics/transform-writer.js +0 -38
  251. package/dist/physics/trigger-dispatch.d.ts +0 -24
  252. package/dist/physics/trigger-dispatch.d.ts.map +0 -1
  253. package/dist/physics/trigger-dispatch.js +0 -80
  254. package/dist/react/game-state.d.ts +0 -156
  255. package/dist/react/game-state.d.ts.map +0 -1
  256. package/dist/react/game-state.js +0 -222
  257. package/dist/react/root-adapter.d.ts +0 -11
  258. package/dist/react/root-adapter.d.ts.map +0 -1
  259. package/dist/react/root-adapter.js +0 -41
  260. package/dist/react/unmanaged-root-detector.d.ts +0 -12
  261. package/dist/react/unmanaged-root-detector.d.ts.map +0 -1
  262. package/dist/react/unmanaged-root-detector.js +0 -45
  263. package/dist/react/use-data.d.ts +0 -60
  264. package/dist/react/use-data.d.ts.map +0 -1
  265. package/dist/react/use-data.js +0 -101
  266. package/dist/react/use-selection.d.ts +0 -75
  267. package/dist/react/use-selection.d.ts.map +0 -1
  268. package/dist/react/use-selection.js +0 -90
  269. package/dist/render/auto-batcher.d.ts +0 -34
  270. package/dist/render/auto-batcher.d.ts.map +0 -1
  271. package/dist/render/auto-batcher.js +0 -140
  272. package/dist/render/render-batch-system.d.ts +0 -33
  273. package/dist/render/render-batch-system.d.ts.map +0 -1
  274. package/dist/render/render-batch-system.js +0 -230
  275. package/dist/render/render-features.d.ts +0 -47
  276. package/dist/render/render-features.d.ts.map +0 -1
  277. package/dist/render/render-features.js +0 -105
  278. package/dist/render/render-settings.d.ts +0 -36
  279. package/dist/render/render-settings.d.ts.map +0 -1
  280. package/dist/render/render-settings.js +0 -51
  281. package/dist/runtime/create-runtime.d.ts +0 -249
  282. package/dist/runtime/create-runtime.d.ts.map +0 -1
  283. package/dist/runtime/create-runtime.js +0 -641
  284. package/dist/runtime/debug-bridge.d.ts +0 -257
  285. package/dist/runtime/debug-bridge.d.ts.map +0 -1
  286. package/dist/runtime/debug-bridge.js +0 -224
  287. package/dist/runtime/debug-registry.d.ts +0 -288
  288. package/dist/runtime/debug-registry.d.ts.map +0 -1
  289. package/dist/runtime/debug-registry.js +0 -513
  290. package/dist/runtime/frame-selector-cache.d.ts +0 -41
  291. package/dist/runtime/frame-selector-cache.d.ts.map +0 -1
  292. package/dist/runtime/frame-selector-cache.js +0 -65
  293. package/dist/runtime/game.d.ts +0 -496
  294. package/dist/runtime/game.d.ts.map +0 -1
  295. package/dist/runtime/game.js +0 -741
  296. package/dist/runtime/gameplay-rng-trap.d.ts +0 -48
  297. package/dist/runtime/gameplay-rng-trap.d.ts.map +0 -1
  298. package/dist/runtime/gameplay-rng-trap.js +0 -96
  299. package/dist/runtime/input-router.d.ts +0 -78
  300. package/dist/runtime/input-router.d.ts.map +0 -1
  301. package/dist/runtime/input-router.js +0 -171
  302. package/dist/runtime/mount-game.d.ts +0 -129
  303. package/dist/runtime/mount-game.d.ts.map +0 -1
  304. package/dist/runtime/mount-game.js +0 -152
  305. package/dist/runtime/mount-manifest.d.ts +0 -173
  306. package/dist/runtime/mount-manifest.d.ts.map +0 -1
  307. package/dist/runtime/mount-manifest.js +0 -297
  308. package/dist/runtime/render-audio-control.d.ts +0 -110
  309. package/dist/runtime/render-audio-control.d.ts.map +0 -1
  310. package/dist/runtime/render-audio-control.js +0 -111
  311. package/dist/runtime/render-control.d.ts +0 -291
  312. package/dist/runtime/render-control.d.ts.map +0 -1
  313. package/dist/runtime/render-control.js +0 -264
  314. package/dist/runtime/render-seed.d.ts +0 -57
  315. package/dist/runtime/render-seed.d.ts.map +0 -1
  316. package/dist/runtime/render-seed.js +0 -74
  317. package/dist/runtime/state-bridge.d.ts +0 -61
  318. package/dist/runtime/state-bridge.d.ts.map +0 -1
  319. package/dist/runtime/state-bridge.js +0 -63
  320. package/dist/runtime/types.d.ts +0 -253
  321. package/dist/runtime/types.d.ts.map +0 -1
  322. package/dist/runtime/types.js +0 -1
  323. package/dist/scene/asset-loaders.d.ts +0 -79
  324. package/dist/scene/asset-loaders.d.ts.map +0 -1
  325. package/dist/scene/asset-loaders.js +0 -141
  326. package/dist/scene/asset-paths.d.ts +0 -11
  327. package/dist/scene/asset-paths.d.ts.map +0 -1
  328. package/dist/scene/asset-paths.js +0 -108
  329. package/dist/scene/asset-ref-check.d.ts +0 -88
  330. package/dist/scene/asset-ref-check.d.ts.map +0 -1
  331. package/dist/scene/asset-ref-check.js +0 -214
  332. package/dist/scene/asset-registry.d.ts +0 -38
  333. package/dist/scene/asset-registry.d.ts.map +0 -1
  334. package/dist/scene/asset-registry.js +0 -66
  335. package/dist/scene/collider-dimensions.d.ts +0 -63
  336. package/dist/scene/collider-dimensions.d.ts.map +0 -1
  337. package/dist/scene/collider-dimensions.js +0 -98
  338. package/dist/scene/component-registry.d.ts +0 -22
  339. package/dist/scene/component-registry.d.ts.map +0 -1
  340. package/dist/scene/component-registry.js +0 -37
  341. package/dist/scene/defaults.d.ts +0 -252
  342. package/dist/scene/defaults.d.ts.map +0 -1
  343. package/dist/scene/defaults.js +0 -151
  344. package/dist/scene/geometries/index.d.ts +0 -8
  345. package/dist/scene/geometries/index.d.ts.map +0 -1
  346. package/dist/scene/geometries/index.js +0 -7
  347. package/dist/scene/geometries/terrain.d.ts +0 -2
  348. package/dist/scene/geometries/terrain.d.ts.map +0 -1
  349. package/dist/scene/geometries/terrain.js +0 -37
  350. package/dist/scene/geometry-registry.d.ts +0 -24
  351. package/dist/scene/geometry-registry.d.ts.map +0 -1
  352. package/dist/scene/geometry-registry.js +0 -20
  353. package/dist/scene/instance-registry.d.ts +0 -36
  354. package/dist/scene/instance-registry.d.ts.map +0 -1
  355. package/dist/scene/instance-registry.js +0 -55
  356. package/dist/scene/instancers/grid.d.ts +0 -2
  357. package/dist/scene/instancers/grid.d.ts.map +0 -1
  358. package/dist/scene/instancers/grid.js +0 -36
  359. package/dist/scene/instancers/index.d.ts +0 -8
  360. package/dist/scene/instancers/index.d.ts.map +0 -1
  361. package/dist/scene/instancers/index.js +0 -7
  362. package/dist/scene/light-camera-factory.d.ts +0 -23
  363. package/dist/scene/light-camera-factory.d.ts.map +0 -1
  364. package/dist/scene/light-camera-factory.js +0 -68
  365. package/dist/scene/material-factory.d.ts +0 -17
  366. package/dist/scene/material-factory.d.ts.map +0 -1
  367. package/dist/scene/material-factory.js +0 -197
  368. package/dist/scene/material-registry.d.ts +0 -40
  369. package/dist/scene/material-registry.d.ts.map +0 -1
  370. package/dist/scene/material-registry.js +0 -44
  371. package/dist/scene/materials/index.d.ts +0 -8
  372. package/dist/scene/materials/index.d.ts.map +0 -1
  373. package/dist/scene/materials/index.js +0 -7
  374. package/dist/scene/materials/water.d.ts +0 -2
  375. package/dist/scene/materials/water.d.ts.map +0 -1
  376. package/dist/scene/materials/water.js +0 -54
  377. package/dist/scene/parse.d.ts +0 -23
  378. package/dist/scene/parse.d.ts.map +0 -1
  379. package/dist/scene/parse.js +0 -179
  380. package/dist/scene/particles-factory.d.ts +0 -33
  381. package/dist/scene/particles-factory.d.ts.map +0 -1
  382. package/dist/scene/particles-factory.js +0 -282
  383. package/dist/scene/scene-apply.d.ts +0 -109
  384. package/dist/scene/scene-apply.d.ts.map +0 -1
  385. package/dist/scene/scene-apply.js +0 -370
  386. package/dist/scene/scene-diff-schema.d.ts +0 -285
  387. package/dist/scene/scene-diff-schema.d.ts.map +0 -1
  388. package/dist/scene/scene-diff-schema.js +0 -92
  389. package/dist/scene/scene-diff-types.d.ts +0 -40
  390. package/dist/scene/scene-diff-types.d.ts.map +0 -1
  391. package/dist/scene/scene-diff-types.js +0 -14
  392. package/dist/scene/scene-loader.d.ts +0 -167
  393. package/dist/scene/scene-loader.d.ts.map +0 -1
  394. package/dist/scene/scene-loader.js +0 -1211
  395. package/dist/scene/scene-query.d.ts +0 -11
  396. package/dist/scene/scene-query.d.ts.map +0 -1
  397. package/dist/scene/scene-query.js +0 -63
  398. package/dist/scene/scene-types.d.ts +0 -10
  399. package/dist/scene/scene-types.d.ts.map +0 -1
  400. package/dist/scene/scene-types.js +0 -8
  401. package/dist/scene/scene-version.d.ts +0 -26
  402. package/dist/scene/scene-version.d.ts.map +0 -1
  403. package/dist/scene/scene-version.js +0 -34
  404. package/dist/scene/schema/animation.d.ts +0 -8
  405. package/dist/scene/schema/animation.d.ts.map +0 -1
  406. package/dist/scene/schema/animation.js +0 -42
  407. package/dist/scene/schema/audio.d.ts +0 -13
  408. package/dist/scene/schema/audio.d.ts.map +0 -1
  409. package/dist/scene/schema/audio.js +0 -22
  410. package/dist/scene/schema/camera.d.ts +0 -28
  411. package/dist/scene/schema/camera.d.ts.map +0 -1
  412. package/dist/scene/schema/camera.js +0 -17
  413. package/dist/scene/schema/collider.d.ts +0 -40
  414. package/dist/scene/schema/collider.d.ts.map +0 -1
  415. package/dist/scene/schema/collider.js +0 -55
  416. package/dist/scene/schema/entity-ref.d.ts +0 -31
  417. package/dist/scene/schema/entity-ref.d.ts.map +0 -1
  418. package/dist/scene/schema/entity-ref.js +0 -61
  419. package/dist/scene/schema/entity.d.ts +0 -1036
  420. package/dist/scene/schema/entity.d.ts.map +0 -1
  421. package/dist/scene/schema/entity.js +0 -153
  422. package/dist/scene/schema/environment.d.ts +0 -425
  423. package/dist/scene/schema/environment.d.ts.map +0 -1
  424. package/dist/scene/schema/environment.js +0 -357
  425. package/dist/scene/schema/index.d.ts +0 -37
  426. package/dist/scene/schema/index.d.ts.map +0 -1
  427. package/dist/scene/schema/index.js +0 -19
  428. package/dist/scene/schema/instances.d.ts +0 -14
  429. package/dist/scene/schema/instances.d.ts.map +0 -1
  430. package/dist/scene/schema/instances.js +0 -28
  431. package/dist/scene/schema/joint.d.ts +0 -23
  432. package/dist/scene/schema/joint.d.ts.map +0 -1
  433. package/dist/scene/schema/joint.js +0 -23
  434. package/dist/scene/schema/light.d.ts +0 -38
  435. package/dist/scene/schema/light.d.ts.map +0 -1
  436. package/dist/scene/schema/light.js +0 -26
  437. package/dist/scene/schema/material.d.ts +0 -199
  438. package/dist/scene/schema/material.d.ts.map +0 -1
  439. package/dist/scene/schema/material.js +0 -103
  440. package/dist/scene/schema/mesh.d.ts +0 -48
  441. package/dist/scene/schema/mesh.d.ts.map +0 -1
  442. package/dist/scene/schema/mesh.js +0 -82
  443. package/dist/scene/schema/particles.d.ts +0 -2178
  444. package/dist/scene/schema/particles.d.ts.map +0 -1
  445. package/dist/scene/schema/particles.js +0 -321
  446. package/dist/scene/schema/physics.d.ts +0 -56
  447. package/dist/scene/schema/physics.d.ts.map +0 -1
  448. package/dist/scene/schema/physics.js +0 -37
  449. package/dist/scene/schema/scene-file.d.ts +0 -303
  450. package/dist/scene/schema/scene-file.d.ts.map +0 -1
  451. package/dist/scene/schema/scene-file.js +0 -256
  452. package/dist/scene/schema/shadow.d.ts +0 -28
  453. package/dist/scene/schema/shadow.d.ts.map +0 -1
  454. package/dist/scene/schema/shadow.js +0 -20
  455. package/dist/scene/schema/spline.d.ts +0 -25
  456. package/dist/scene/schema/spline.d.ts.map +0 -1
  457. package/dist/scene/schema/spline.js +0 -15
  458. package/dist/scene/schema/tuples.d.ts +0 -12
  459. package/dist/scene/schema/tuples.d.ts.map +0 -1
  460. package/dist/scene/schema/tuples.js +0 -14
  461. package/dist/scene/user-data.d.ts +0 -185
  462. package/dist/scene/user-data.d.ts.map +0 -1
  463. package/dist/scene/user-data.js +0 -144
  464. package/dist/setup/setup-audio.d.ts +0 -20
  465. package/dist/setup/setup-audio.d.ts.map +0 -1
  466. package/dist/setup/setup-audio.js +0 -41
  467. package/dist/setup/setup-particles.d.ts +0 -17
  468. package/dist/setup/setup-particles.d.ts.map +0 -1
  469. package/dist/setup/setup-particles.js +0 -16
  470. package/dist/setup/setup-physics.d.ts +0 -25
  471. package/dist/setup/setup-physics.d.ts.map +0 -1
  472. package/dist/setup/setup-physics.js +0 -51
  473. package/dist/setup/setup-renderer.d.ts +0 -69
  474. package/dist/setup/setup-renderer.d.ts.map +0 -1
  475. package/dist/setup/setup-renderer.js +0 -363
  476. package/dist/tools/define-tool.d.ts +0 -130
  477. package/dist/tools/define-tool.d.ts.map +0 -1
  478. package/dist/tools/define-tool.js +0 -96
  479. package/dist/world2d/authoring-2d.d.ts +0 -80
  480. package/dist/world2d/authoring-2d.d.ts.map +0 -1
  481. package/dist/world2d/authoring-2d.js +0 -195
  482. package/dist/world2d/capture-to-scene2d.d.ts +0 -5
  483. package/dist/world2d/capture-to-scene2d.d.ts.map +0 -1
  484. package/dist/world2d/capture-to-scene2d.js +0 -49
  485. package/dist/world2d/collision-2d.d.ts +0 -52
  486. package/dist/world2d/collision-2d.d.ts.map +0 -1
  487. package/dist/world2d/collision-2d.js +0 -70
  488. package/dist/world2d/components-2d.d.ts +0 -47
  489. package/dist/world2d/components-2d.d.ts.map +0 -1
  490. package/dist/world2d/components-2d.js +0 -77
  491. package/dist/world2d/index.d.ts +0 -34
  492. package/dist/world2d/index.d.ts.map +0 -1
  493. package/dist/world2d/index.js +0 -32
  494. package/dist/world2d/ingest-iframe-2d.d.ts +0 -82
  495. package/dist/world2d/ingest-iframe-2d.d.ts.map +0 -1
  496. package/dist/world2d/ingest-iframe-2d.js +0 -166
  497. package/dist/world2d/ingest2d.d.ts +0 -97
  498. package/dist/world2d/ingest2d.d.ts.map +0 -1
  499. package/dist/world2d/ingest2d.js +0 -40
  500. package/dist/world2d/physics2d-registry.d.ts +0 -24
  501. package/dist/world2d/physics2d-registry.d.ts.map +0 -1
  502. package/dist/world2d/physics2d-registry.js +0 -38
  503. package/dist/world2d/pixi-game-adapter.d.ts +0 -107
  504. package/dist/world2d/pixi-game-adapter.d.ts.map +0 -1
  505. package/dist/world2d/pixi-game-adapter.js +0 -210
  506. package/dist/world2d/pixi-surface.d.ts +0 -39
  507. package/dist/world2d/pixi-surface.d.ts.map +0 -1
  508. package/dist/world2d/pixi-surface.js +0 -47
  509. package/dist/world2d/scene-capture-2d.d.ts +0 -43
  510. package/dist/world2d/scene-capture-2d.d.ts.map +0 -1
  511. package/dist/world2d/scene-capture-2d.js +0 -92
  512. package/dist/world2d/scene2d-loader.d.ts +0 -27
  513. package/dist/world2d/scene2d-loader.d.ts.map +0 -1
  514. package/dist/world2d/scene2d-loader.js +0 -275
  515. package/dist/world2d/schema/entity2d.d.ts +0 -102
  516. package/dist/world2d/schema/entity2d.d.ts.map +0 -1
  517. package/dist/world2d/schema/entity2d.js +0 -119
  518. package/dist/world2d/schema/physics2d.d.ts +0 -46
  519. package/dist/world2d/schema/physics2d.d.ts.map +0 -1
  520. package/dist/world2d/schema/physics2d.js +0 -45
  521. package/dist/world2d/schema/sprite.d.ts +0 -42
  522. package/dist/world2d/schema/sprite.d.ts.map +0 -1
  523. package/dist/world2d/schema/sprite.js +0 -63
  524. package/dist/world2d/schema/tilemap.d.ts +0 -15
  525. package/dist/world2d/schema/tilemap.d.ts.map +0 -1
  526. package/dist/world2d/schema/tilemap.js +0 -19
  527. package/dist/world2d/schema/tuples2d.d.ts +0 -20
  528. package/dist/world2d/schema/tuples2d.d.ts.map +0 -1
  529. package/dist/world2d/schema/tuples2d.js +0 -19
  530. package/dist/world2d/system-adapters-2d.d.ts +0 -16
  531. package/dist/world2d/system-adapters-2d.d.ts.map +0 -1
  532. package/dist/world2d/system-adapters-2d.js +0 -37
  533. package/dist/world2d/transform-writer-2d.d.ts +0 -16
  534. package/dist/world2d/transform-writer-2d.d.ts.map +0 -1
  535. package/dist/world2d/transform-writer-2d.js +0 -22
  536. package/dist/world2d/types.d.ts +0 -59
  537. package/dist/world2d/types.d.ts.map +0 -1
  538. package/dist/world2d/types.js +0 -1
@@ -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"}
@@ -1,197 +0,0 @@
1
- import * as THREE from 'three';
2
- import { loadTexture } from './asset-loaders';
3
- import { DEFAULTS } from './defaults';
4
- import { buildGeneratedGeometry } from './geometry-registry';
5
- import { buildCustomMaterial } from './material-registry';
6
- /**
7
- * Single source of truth for turning a `SceneMesh` / `SceneMaterial` descriptor
8
- * into Three.js geometry/material. Both the runtime scene-loader and the editor's
9
- * entity-factory import these, so the editor preview renders exactly what the game
10
- * renders (the WYSIWYG guarantee in ARCHITECTURE.md). Previously these were
11
- * copy-pasted in two places and had to be hand-synced — any new material feature
12
- * added to one and not the other silently broke that guarantee.
13
- *
14
- * Callers must have imported the side-effect registration modules
15
- * (`./geometries`, `./materials`, plus any custom defs) so `buildGeneratedGeometry`
16
- * and `buildCustomMaterial` resolve their registries.
17
- */
18
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: straightforward type-based switch with fallback args
19
- export function createGeometry(mesh) {
20
- if (mesh.generator) {
21
- return buildGeneratedGeometry(mesh.generator, mesh.generatorParams ?? {});
22
- }
23
- const args = mesh.args ?? [];
24
- switch (mesh.type) {
25
- case 'box':
26
- return new THREE.BoxGeometry(args[0] ?? 1, args[1] ?? 1, args[2] ?? 1);
27
- case 'sphere':
28
- return new THREE.SphereGeometry(args[0] ?? 0.5, args[1] ?? 32, args[2] ?? 16);
29
- case 'plane':
30
- return new THREE.PlaneGeometry(args[0] ?? 1, args[1] ?? 1);
31
- case 'cylinder':
32
- return new THREE.CylinderGeometry(args[0] ?? 0.5, args[1] ?? 0.5, args[2] ?? 1, args[3] ?? 32);
33
- case 'capsule':
34
- return new THREE.CapsuleGeometry(args[0] ?? 0.5, args[1] ?? 1, args[2] ?? 4, args[3] ?? 16);
35
- default:
36
- return new THREE.BoxGeometry(1, 1, 1);
37
- }
38
- }
39
- // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: flat type-based switch building Three materials
40
- export function createMaterial(mat) {
41
- if (!mat)
42
- return new THREE.MeshStandardMaterial({ color: DEFAULTS.material.color });
43
- // Only include texture props when actually defined (Three.js warns on undefined values)
44
- const textures = {};
45
- if (mat.map)
46
- textures.map = loadTexture(mat.map);
47
- if (mat.normalMap)
48
- textures.normalMap = loadTexture(mat.normalMap);
49
- if (mat.emissiveMap)
50
- textures.emissiveMap = loadTexture(mat.emissiveMap);
51
- if (mat.aoMap)
52
- textures.aoMap = loadTexture(mat.aoMap);
53
- if (mat.lightMap)
54
- textures.lightMap = loadTexture(mat.lightMap);
55
- if (mat.roughnessMap)
56
- textures.roughnessMap = loadTexture(mat.roughnessMap);
57
- if (mat.metalnessMap)
58
- textures.metalnessMap = loadTexture(mat.metalnessMap);
59
- // R1c — every fallback below reads DEFAULTS.material.* instead of
60
- // duplicating its value as a bare literal, so DEFAULTS stays the single
61
- // source of truth for what an omitted field renders as (see
62
- // defaults-out-of-scope-consistency.test.ts / material-factory.test.ts's
63
- // "omitted-field" locks, which fail if either copy drifts from the other).
64
- const dMat = DEFAULTS.material;
65
- const sideValue = mat.side ?? dMat.side;
66
- const side = sideValue === 'back'
67
- ? THREE.BackSide
68
- : sideValue === 'double'
69
- ? THREE.DoubleSide
70
- : THREE.FrontSide;
71
- const opacity = mat.opacity ?? dMat.opacity;
72
- const transparent = mat.transparent ?? dMat.transparent;
73
- switch (mat.type) {
74
- case 'basic':
75
- return new THREE.MeshBasicMaterial({
76
- color: mat.color ?? dMat.color,
77
- ...textures,
78
- lightMapIntensity: mat.lightMapIntensity ?? 1,
79
- opacity,
80
- transparent,
81
- side,
82
- });
83
- case 'toon':
84
- return new THREE.MeshToonMaterial({
85
- color: mat.color ?? dMat.color,
86
- ...textures,
87
- lightMapIntensity: mat.lightMapIntensity ?? 1,
88
- emissive: mat.emissive ?? dMat.emissive,
89
- emissiveIntensity: mat.emissiveIntensity ?? dMat.emissiveIntensity,
90
- opacity,
91
- transparent,
92
- side,
93
- });
94
- case 'physical':
95
- return new THREE.MeshPhysicalMaterial({
96
- color: mat.color ?? dMat.color,
97
- metalness: mat.metalness ?? dMat.metalness,
98
- roughness: mat.roughness ?? dMat.roughness,
99
- ...textures,
100
- lightMapIntensity: mat.lightMapIntensity ?? 1,
101
- emissive: mat.emissive ?? dMat.emissive,
102
- emissiveIntensity: mat.emissiveIntensity ?? dMat.emissiveIntensity,
103
- opacity,
104
- transparent,
105
- side,
106
- flatShading: mat.flatShading ?? dMat.flatShading,
107
- // Clearcoat
108
- ...(mat.clearcoat
109
- ? {
110
- clearcoat: mat.clearcoat.clearcoat,
111
- clearcoatRoughness: mat.clearcoat.clearcoatRoughness ?? dMat.clearcoat.clearcoatRoughness,
112
- ...(mat.clearcoat.clearcoatMap
113
- ? { clearcoatMap: loadTexture(mat.clearcoat.clearcoatMap) }
114
- : {}),
115
- ...(mat.clearcoat.clearcoatRoughnessMap
116
- ? { clearcoatRoughnessMap: loadTexture(mat.clearcoat.clearcoatRoughnessMap) }
117
- : {}),
118
- }
119
- : {}),
120
- // Transmission — `thickness` used to hardcode a literal `0` here,
121
- // silently diverging from DEFAULTS.material.transmission.thickness
122
- // (0.5, per the editor's Transmission inspector default). Fixed:
123
- // read DEFAULTS directly, like every other fallback in this file.
124
- ...(mat.transmission
125
- ? {
126
- transmission: mat.transmission.transmission,
127
- ior: mat.transmission.ior ?? dMat.transmission.ior,
128
- thickness: mat.transmission.thickness ?? dMat.transmission.thickness,
129
- ...(mat.transmission.attenuationColor
130
- ? { attenuationColor: new THREE.Color(mat.transmission.attenuationColor) }
131
- : {}),
132
- attenuationDistance: mat.transmission.attenuationDistance ?? Infinity,
133
- ...(mat.transmission.transmissionMap
134
- ? { transmissionMap: loadTexture(mat.transmission.transmissionMap) }
135
- : {}),
136
- }
137
- : {}),
138
- // Sheen
139
- ...(mat.sheen
140
- ? {
141
- sheen: mat.sheen.sheen,
142
- sheenColor: new THREE.Color(mat.sheen.sheenColor ?? dMat.sheen.sheenColor),
143
- sheenRoughness: mat.sheen.sheenRoughness ?? dMat.sheen.sheenRoughness,
144
- ...(mat.sheen.sheenColorMap
145
- ? { sheenColorMap: loadTexture(mat.sheen.sheenColorMap) }
146
- : {}),
147
- ...(mat.sheen.sheenRoughnessMap
148
- ? { sheenRoughnessMap: loadTexture(mat.sheen.sheenRoughnessMap) }
149
- : {}),
150
- }
151
- : {}),
152
- // Iridescence
153
- ...(mat.iridescence
154
- ? {
155
- iridescence: mat.iridescence.iridescence,
156
- iridescenceIOR: mat.iridescence.iridescenceIOR ?? dMat.iridescence.iridescenceIOR,
157
- iridescenceThicknessRange: mat.iridescence.iridescenceThicknessRange ??
158
- dMat.iridescence.iridescenceThicknessRange,
159
- ...(mat.iridescence.iridescenceMap
160
- ? { iridescenceMap: loadTexture(mat.iridescence.iridescenceMap) }
161
- : {}),
162
- ...(mat.iridescence.iridescenceThicknessMap
163
- ? {
164
- iridescenceThicknessMap: loadTexture(mat.iridescence.iridescenceThicknessMap),
165
- }
166
- : {}),
167
- }
168
- : {}),
169
- // Displacement
170
- ...(mat.displacementMap ? { displacementMap: loadTexture(mat.displacementMap) } : {}),
171
- ...(mat.displacementScale !== undefined
172
- ? { displacementScale: mat.displacementScale }
173
- : {}),
174
- ...(mat.displacementBias !== undefined ? { displacementBias: mat.displacementBias } : {}),
175
- });
176
- case 'custom': {
177
- if (!mat.def) {
178
- throw new Error('Custom material requires a "def" (registered material name)');
179
- }
180
- return buildCustomMaterial(mat.def, mat.uniforms ?? {});
181
- }
182
- default:
183
- return new THREE.MeshStandardMaterial({
184
- color: mat.color ?? dMat.color,
185
- metalness: mat.metalness ?? dMat.metalness,
186
- roughness: mat.roughness ?? dMat.roughness,
187
- ...textures,
188
- lightMapIntensity: mat.lightMapIntensity ?? 1,
189
- emissive: mat.emissive ?? dMat.emissive,
190
- emissiveIntensity: mat.emissiveIntensity ?? dMat.emissiveIntensity,
191
- opacity,
192
- transparent,
193
- side,
194
- flatShading: mat.flatShading ?? dMat.flatShading,
195
- });
196
- }
197
- }
@@ -1,40 +0,0 @@
1
- import type * as THREE from 'three';
2
- /**
3
- * A custom-material definition. Registered by name and resolved when a scene
4
- * material declares `{ type: 'custom', def: <name> }`.
5
- *
6
- * The GLSL program lives here in code (the "behavior" half); the per-entity
7
- * authored uniform values arrive as data on the scene material's `uniforms`
8
- * (the "data" half) and are passed to `build`. A def may optionally tick its
9
- * own uniforms each frame (e.g. uTime) via `update`.
10
- *
11
- * This is the native extension point of the material system — not a wrapper:
12
- * `build` returns a real THREE.Material (typically a ShaderMaterial, or a stock
13
- * material patched via onBeforeCompile), and the engine renders it directly.
14
- */
15
- export interface MaterialDef {
16
- /** Build a real THREE material from authored uniform values. */
17
- build(uniforms: Record<string, unknown>): THREE.Material;
18
- /** Optional per-frame uniform update for self-animating materials. */
19
- update?(dt: number, material: THREE.Material, uniforms: Record<string, unknown>): void;
20
- /** Representative flat color (CSS hex) for the editor's "unlit" view mode. */
21
- previewColor?: string;
22
- }
23
- /** Register a custom-material definition under `name`. */
24
- export declare function registerMaterial(name: string, def: MaterialDef): void;
25
- /** Look up a registered material definition. */
26
- export declare function getMaterialDef(name: string): MaterialDef | undefined;
27
- /**
28
- * Build a custom material by registered def name. Tags the resulting material's
29
- * `userData` so the per-frame tick and the editor view-mode override can find it.
30
- * Throws if the def is unknown (fail loud — same posture as the component registry).
31
- */
32
- export declare function buildCustomMaterial(name: string, uniforms: Record<string, unknown>): THREE.Material;
33
- /**
34
- * Tick every custom material under `root` (self-animating uniforms). Called from
35
- * the runtime `preRender` phase and from the editor's edit-mode RAF — one code
36
- * path, both modes. Walks the scene graph; materials without a `__matDef` tag are
37
- * skipped.
38
- */
39
- export declare function tickCustomMaterials(root: THREE.Object3D, dt: number): void;
40
- //# sourceMappingURL=material-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"material-registry.d.ts","sourceRoot":"","sources":["../../src/scene/material-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;IACzD,sEAAsE;IACtE,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvF,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAErE;AAED,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,KAAK,CAAC,QAAQ,CAShB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAW1E"}
@@ -1,44 +0,0 @@
1
- const registry = new Map();
2
- /** Register a custom-material definition under `name`. */
3
- export function registerMaterial(name, def) {
4
- registry.set(name, def);
5
- }
6
- /** Look up a registered material definition. */
7
- export function getMaterialDef(name) {
8
- return registry.get(name);
9
- }
10
- /**
11
- * Build a custom material by registered def name. Tags the resulting material's
12
- * `userData` so the per-frame tick and the editor view-mode override can find it.
13
- * Throws if the def is unknown (fail loud — same posture as the component registry).
14
- */
15
- export function buildCustomMaterial(name, uniforms) {
16
- const def = registry.get(name);
17
- if (!def) {
18
- throw new Error(`Custom material def "${name}" not found in material registry`);
19
- }
20
- const material = def.build(uniforms ?? {});
21
- material.userData['__matDef'] = name;
22
- material.userData['__uniforms'] = uniforms ?? {};
23
- return material;
24
- }
25
- /**
26
- * Tick every custom material under `root` (self-animating uniforms). Called from
27
- * the runtime `preRender` phase and from the editor's edit-mode RAF — one code
28
- * path, both modes. Walks the scene graph; materials without a `__matDef` tag are
29
- * skipped.
30
- */
31
- export function tickCustomMaterials(root, dt) {
32
- root.traverse((obj) => {
33
- const material = obj.material;
34
- if (!material)
35
- return;
36
- const list = Array.isArray(material) ? material : [material];
37
- for (const mat of list) {
38
- const defName = mat.userData?.['__matDef'];
39
- if (!defName)
40
- continue;
41
- registry.get(defName)?.update?.(dt, mat, mat.userData['__uniforms'] ?? {});
42
- }
43
- });
44
- }
@@ -1,8 +0,0 @@
1
- /**
2
- * Built-in custom-material definitions. Importing this module for its side
3
- * effects registers the built-ins into the material registry. Both the runtime
4
- * factory (scene-loader) and the editor factory (entity-factory) import it so
5
- * custom materials resolve on whichever side builds first.
6
- */
7
- import './water';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scene/materials/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,SAAS,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Built-in custom-material definitions. Importing this module for its side
3
- * effects registers the built-ins into the material registry. Both the runtime
4
- * factory (scene-loader) and the editor factory (entity-factory) import it so
5
- * custom materials resolve on whichever side builds first.
6
- */
7
- import './water';
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=water.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"water.d.ts","sourceRoot":"","sources":["../../../src/scene/materials/water.ts"],"names":[],"mappings":""}
@@ -1,54 +0,0 @@
1
- import * as THREE from 'three';
2
- import { registerMaterial } from '../material-registry';
3
- /**
4
- * Built-in "Water" custom material — the proof-of-concept for first-class custom
5
- * shaders (roadmap item #1). Vertex shader displaces a plane with travelling sine
6
- * waves driven by `uTime`; fragment tints by `uColor` with a little wave-crest
7
- * lightening. Demonstrates: authored uniforms (color, waveHeight), a real
8
- * ShaderMaterial built from scene JSON, and a self-animating uniform (uTime).
9
- */
10
- const vertexShader = /* glsl */ `
11
- uniform float uTime;
12
- uniform float uWaveHeight;
13
- varying float vWave;
14
- void main() {
15
- vec3 p = position;
16
- // PlaneGeometry lies in local XY with normal +Z; displace along the normal so
17
- // a plane rotated flat (XZ) ripples upward in world Y.
18
- float wave =
19
- sin(p.x * 1.5 + uTime) * 0.6 +
20
- cos(p.y * 1.2 + uTime * 0.8) * 0.4;
21
- p.z += wave * uWaveHeight;
22
- vWave = wave;
23
- gl_Position = projectionMatrix * modelViewMatrix * vec4(p, 1.0);
24
- }
25
- `;
26
- const fragmentShader = /* glsl */ `
27
- uniform vec3 uColor;
28
- varying float vWave;
29
- void main() {
30
- vec3 c = uColor + vWave * 0.12;
31
- gl_FragColor = vec4(c, 1.0);
32
- }
33
- `;
34
- registerMaterial('Water', {
35
- previewColor: '#0a5fa5',
36
- build(uniforms) {
37
- const color = uniforms['color'] ?? '#0a5fa5';
38
- const waveHeight = uniforms['waveHeight'] ?? 0.4;
39
- return new THREE.ShaderMaterial({
40
- uniforms: {
41
- uTime: { value: 0 },
42
- uColor: { value: new THREE.Color(color) },
43
- uWaveHeight: { value: waveHeight },
44
- },
45
- vertexShader,
46
- fragmentShader,
47
- });
48
- },
49
- update(dt, material) {
50
- const uTime = material.uniforms['uTime'];
51
- if (uTime)
52
- uTime.value += dt;
53
- },
54
- });
@@ -1,23 +0,0 @@
1
- import type { ZodIssue } from 'zod';
2
- import type { InstancesFile, MaterialFile, PrefabFile, SceneFile } from './schema';
3
- export declare class SceneParseError extends Error {
4
- readonly issues: ZodIssue[];
5
- /** The offending file's path/URL, when the caller knows it (T4.6). */
6
- readonly filePath?: string | undefined;
7
- constructor(issues: ZodIssue[], filePath?: string);
8
- }
9
- export declare function parseSceneFile(json: unknown, filePath?: string): SceneFile;
10
- export declare function parsePrefabFile(json: unknown, filePath?: string): PrefabFile;
11
- /**
12
- * Parse a `.mat.json` shared material asset (T4.6). Unlike scene/prefab files,
13
- * there is no version-range gate yet for this format — `MaterialFileSchema`'s
14
- * `version` field is RESERVED (see `schema-consumption-map.ts`).
15
- */
16
- export declare function parseMaterialFile(json: unknown, filePath?: string): MaterialFile;
17
- /**
18
- * Parse a `.instances.json` instance-transform asset (F3,
19
- * docs/VSCN-STRUCTURAL-GAPS-DESIGN.md). Mirrors `parseMaterialFile` exactly —
20
- * no version-range gate (the format is a bare tuple array, no `version` field).
21
- */
22
- export declare function parseInstancesFile(json: unknown, filePath?: string): InstancesFile;
23
- //# sourceMappingURL=parse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/scene/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAQnF,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE3B,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM;CAQlD;AAmID,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAY1E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAS5E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,CAMhF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAMlF"}