@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,303 +0,0 @@
1
- import { z } from 'zod';
2
- import { type SceneEntity } from './entity';
3
- export declare const SceneFileSchema: z.ZodObject<{
4
- version: z.ZodNumber;
5
- name: z.ZodString;
6
- environment: z.ZodOptional<z.ZodObject<{
7
- background: z.ZodOptional<z.ZodString>;
8
- ambient: z.ZodOptional<z.ZodObject<{
9
- color: z.ZodString;
10
- intensity: z.ZodNumber;
11
- }, z.core.$strip>>;
12
- fog: z.ZodOptional<z.ZodObject<{
13
- type: z.ZodEnum<{
14
- linear: "linear";
15
- exponential: "exponential";
16
- }>;
17
- color: z.ZodString;
18
- near: z.ZodOptional<z.ZodNumber>;
19
- far: z.ZodOptional<z.ZodNumber>;
20
- density: z.ZodOptional<z.ZodNumber>;
21
- }, z.core.$strip>>;
22
- skybox: z.ZodOptional<z.ZodString>;
23
- envMapIntensity: z.ZodOptional<z.ZodNumber>;
24
- toneMapping: z.ZodOptional<z.ZodObject<{
25
- mode: z.ZodOptional<z.ZodEnum<{
26
- none: "none";
27
- linear: "linear";
28
- reinhard: "reinhard";
29
- cineon: "cineon";
30
- aces: "aces";
31
- agx: "agx";
32
- }>>;
33
- exposure: z.ZodOptional<z.ZodNumber>;
34
- }, z.core.$strip>>;
35
- postProcessing: z.ZodOptional<z.ZodObject<{
36
- bloom: z.ZodOptional<z.ZodObject<{
37
- enabled: z.ZodOptional<z.ZodBoolean>;
38
- intensity: z.ZodOptional<z.ZodNumber>;
39
- luminanceThreshold: z.ZodOptional<z.ZodNumber>;
40
- luminanceSmoothing: z.ZodOptional<z.ZodNumber>;
41
- }, z.core.$strip>>;
42
- vignette: z.ZodOptional<z.ZodObject<{
43
- enabled: z.ZodOptional<z.ZodBoolean>;
44
- darkness: z.ZodOptional<z.ZodNumber>;
45
- offset: z.ZodOptional<z.ZodNumber>;
46
- }, z.core.$strip>>;
47
- brightnessContrast: z.ZodOptional<z.ZodObject<{
48
- enabled: z.ZodOptional<z.ZodBoolean>;
49
- brightness: z.ZodOptional<z.ZodNumber>;
50
- contrast: z.ZodOptional<z.ZodNumber>;
51
- }, z.core.$strip>>;
52
- hueSaturation: z.ZodOptional<z.ZodObject<{
53
- enabled: z.ZodOptional<z.ZodBoolean>;
54
- hue: z.ZodOptional<z.ZodNumber>;
55
- saturation: z.ZodOptional<z.ZodNumber>;
56
- }, z.core.$strip>>;
57
- sepia: z.ZodOptional<z.ZodObject<{
58
- enabled: z.ZodOptional<z.ZodBoolean>;
59
- intensity: z.ZodOptional<z.ZodNumber>;
60
- }, z.core.$strip>>;
61
- colorDepth: z.ZodOptional<z.ZodObject<{
62
- enabled: z.ZodOptional<z.ZodBoolean>;
63
- bits: z.ZodOptional<z.ZodNumber>;
64
- }, z.core.$strip>>;
65
- chromaticAberration: z.ZodOptional<z.ZodObject<{
66
- enabled: z.ZodOptional<z.ZodBoolean>;
67
- offsetX: z.ZodOptional<z.ZodNumber>;
68
- offsetY: z.ZodOptional<z.ZodNumber>;
69
- radialModulation: z.ZodOptional<z.ZodBoolean>;
70
- modulationOffset: z.ZodOptional<z.ZodNumber>;
71
- }, z.core.$strip>>;
72
- lensDistortion: z.ZodOptional<z.ZodObject<{
73
- enabled: z.ZodOptional<z.ZodBoolean>;
74
- distortionX: z.ZodOptional<z.ZodNumber>;
75
- distortionY: z.ZodOptional<z.ZodNumber>;
76
- focalLengthX: z.ZodOptional<z.ZodNumber>;
77
- focalLengthY: z.ZodOptional<z.ZodNumber>;
78
- skew: z.ZodOptional<z.ZodNumber>;
79
- }, z.core.$strip>>;
80
- depthOfField: z.ZodOptional<z.ZodObject<{
81
- enabled: z.ZodOptional<z.ZodBoolean>;
82
- worldFocusDistance: z.ZodOptional<z.ZodNumber>;
83
- worldFocusRange: z.ZodOptional<z.ZodNumber>;
84
- bokehScale: z.ZodOptional<z.ZodNumber>;
85
- focalLength: z.ZodOptional<z.ZodNumber>;
86
- }, z.core.$strip>>;
87
- tiltShift: z.ZodOptional<z.ZodObject<{
88
- enabled: z.ZodOptional<z.ZodBoolean>;
89
- offset: z.ZodOptional<z.ZodNumber>;
90
- rotation: z.ZodOptional<z.ZodNumber>;
91
- focusArea: z.ZodOptional<z.ZodNumber>;
92
- feather: z.ZodOptional<z.ZodNumber>;
93
- }, z.core.$strip>>;
94
- noise: z.ZodOptional<z.ZodObject<{
95
- enabled: z.ZodOptional<z.ZodBoolean>;
96
- premultiply: z.ZodOptional<z.ZodBoolean>;
97
- }, z.core.$strip>>;
98
- scanline: z.ZodOptional<z.ZodObject<{
99
- enabled: z.ZodOptional<z.ZodBoolean>;
100
- density: z.ZodOptional<z.ZodNumber>;
101
- }, z.core.$strip>>;
102
- dotScreen: z.ZodOptional<z.ZodObject<{
103
- enabled: z.ZodOptional<z.ZodBoolean>;
104
- angle: z.ZodOptional<z.ZodNumber>;
105
- scale: z.ZodOptional<z.ZodNumber>;
106
- }, z.core.$strip>>;
107
- grid: z.ZodOptional<z.ZodObject<{
108
- enabled: z.ZodOptional<z.ZodBoolean>;
109
- scale: z.ZodOptional<z.ZodNumber>;
110
- lineWidth: z.ZodOptional<z.ZodNumber>;
111
- }, z.core.$strip>>;
112
- pixelation: z.ZodOptional<z.ZodObject<{
113
- enabled: z.ZodOptional<z.ZodBoolean>;
114
- granularity: z.ZodOptional<z.ZodNumber>;
115
- }, z.core.$strip>>;
116
- glitch: z.ZodOptional<z.ZodObject<{
117
- enabled: z.ZodOptional<z.ZodBoolean>;
118
- delayX: z.ZodOptional<z.ZodNumber>;
119
- delayY: z.ZodOptional<z.ZodNumber>;
120
- durationX: z.ZodOptional<z.ZodNumber>;
121
- durationY: z.ZodOptional<z.ZodNumber>;
122
- strengthX: z.ZodOptional<z.ZodNumber>;
123
- strengthY: z.ZodOptional<z.ZodNumber>;
124
- columns: z.ZodOptional<z.ZodNumber>;
125
- ratio: z.ZodOptional<z.ZodNumber>;
126
- }, z.core.$strip>>;
127
- shockWave: z.ZodOptional<z.ZodObject<{
128
- enabled: z.ZodOptional<z.ZodBoolean>;
129
- speed: z.ZodOptional<z.ZodNumber>;
130
- maxRadius: z.ZodOptional<z.ZodNumber>;
131
- waveSize: z.ZodOptional<z.ZodNumber>;
132
- amplitude: z.ZodOptional<z.ZodNumber>;
133
- positionX: z.ZodOptional<z.ZodNumber>;
134
- positionY: z.ZodOptional<z.ZodNumber>;
135
- positionZ: z.ZodOptional<z.ZodNumber>;
136
- }, z.core.$strip>>;
137
- smaa: z.ZodOptional<z.ZodObject<{
138
- enabled: z.ZodOptional<z.ZodBoolean>;
139
- preset: z.ZodOptional<z.ZodEnum<{
140
- low: "low";
141
- medium: "medium";
142
- high: "high";
143
- ultra: "ultra";
144
- }>>;
145
- }, z.core.$strip>>;
146
- ssao: z.ZodOptional<z.ZodObject<{
147
- enabled: z.ZodOptional<z.ZodBoolean>;
148
- radius: z.ZodOptional<z.ZodNumber>;
149
- intensity: z.ZodOptional<z.ZodNumber>;
150
- bias: z.ZodOptional<z.ZodNumber>;
151
- samples: z.ZodOptional<z.ZodNumber>;
152
- rings: z.ZodOptional<z.ZodNumber>;
153
- fade: z.ZodOptional<z.ZodNumber>;
154
- color: z.ZodOptional<z.ZodString>;
155
- }, z.core.$strip>>;
156
- n8ao: z.ZodOptional<z.ZodObject<{
157
- enabled: z.ZodOptional<z.ZodBoolean>;
158
- aoSamples: z.ZodOptional<z.ZodNumber>;
159
- aoRadius: z.ZodOptional<z.ZodNumber>;
160
- intensity: z.ZodOptional<z.ZodNumber>;
161
- denoiseSamples: z.ZodOptional<z.ZodNumber>;
162
- denoiseRadius: z.ZodOptional<z.ZodNumber>;
163
- distanceFalloff: z.ZodOptional<z.ZodNumber>;
164
- screenSpaceRadius: z.ZodOptional<z.ZodBoolean>;
165
- color: z.ZodOptional<z.ZodString>;
166
- halfRes: z.ZodOptional<z.ZodBoolean>;
167
- }, z.core.$strip>>;
168
- godRays: z.ZodOptional<z.ZodObject<{
169
- enabled: z.ZodOptional<z.ZodBoolean>;
170
- sourceEntity: z.ZodOptional<z.ZodString>;
171
- density: z.ZodOptional<z.ZodNumber>;
172
- decay: z.ZodOptional<z.ZodNumber>;
173
- weight: z.ZodOptional<z.ZodNumber>;
174
- exposure: z.ZodOptional<z.ZodNumber>;
175
- samples: z.ZodOptional<z.ZodNumber>;
176
- }, z.core.$strip>>;
177
- outline: z.ZodOptional<z.ZodObject<{
178
- enabled: z.ZodOptional<z.ZodBoolean>;
179
- tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
180
- edgeStrength: z.ZodOptional<z.ZodNumber>;
181
- pulseSpeed: z.ZodOptional<z.ZodNumber>;
182
- visibleEdgeColor: z.ZodOptional<z.ZodString>;
183
- hiddenEdgeColor: z.ZodOptional<z.ZodString>;
184
- xRay: z.ZodOptional<z.ZodBoolean>;
185
- }, z.core.$strip>>;
186
- ssr: z.ZodOptional<z.ZodObject<{
187
- enabled: z.ZodOptional<z.ZodBoolean>;
188
- intensity: z.ZodOptional<z.ZodNumber>;
189
- exponent: z.ZodOptional<z.ZodNumber>;
190
- distance: z.ZodOptional<z.ZodNumber>;
191
- thickness: z.ZodOptional<z.ZodNumber>;
192
- maxRoughness: z.ZodOptional<z.ZodNumber>;
193
- }, z.core.$strip>>;
194
- ssgi: z.ZodOptional<z.ZodObject<{
195
- enabled: z.ZodOptional<z.ZodBoolean>;
196
- intensity: z.ZodOptional<z.ZodNumber>;
197
- distance: z.ZodOptional<z.ZodNumber>;
198
- thickness: z.ZodOptional<z.ZodNumber>;
199
- maxRoughness: z.ZodOptional<z.ZodNumber>;
200
- }, z.core.$strip>>;
201
- motionBlur: z.ZodOptional<z.ZodObject<{
202
- enabled: z.ZodOptional<z.ZodBoolean>;
203
- intensity: z.ZodOptional<z.ZodNumber>;
204
- jitter: z.ZodOptional<z.ZodNumber>;
205
- samples: z.ZodOptional<z.ZodNumber>;
206
- }, z.core.$strip>>;
207
- }, z.core.$strip>>;
208
- navigation: z.ZodOptional<z.ZodObject<{
209
- cellSize: z.ZodOptional<z.ZodNumber>;
210
- cellHeight: z.ZodOptional<z.ZodNumber>;
211
- walkableSlopeAngle: z.ZodOptional<z.ZodNumber>;
212
- walkableHeight: z.ZodOptional<z.ZodNumber>;
213
- walkableClimb: z.ZodOptional<z.ZodNumber>;
214
- walkableRadius: z.ZodOptional<z.ZodNumber>;
215
- maxEdgeLen: z.ZodOptional<z.ZodNumber>;
216
- maxSimplificationError: z.ZodOptional<z.ZodNumber>;
217
- minRegionArea: z.ZodOptional<z.ZodNumber>;
218
- mergeRegionArea: z.ZodOptional<z.ZodNumber>;
219
- }, z.core.$strip>>;
220
- physics: z.ZodOptional<z.ZodObject<{
221
- collisionLayers: z.ZodOptional<z.ZodArray<z.ZodString>>;
222
- }, z.core.$strip>>;
223
- rendering: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
224
- }, z.core.$strip>>;
225
- entities: z.ZodArray<z.ZodType<SceneEntity, unknown, z.core.$ZodTypeInternals<SceneEntity, unknown>>>;
226
- }, z.core.$strict>;
227
- export type SceneFile = z.infer<typeof SceneFileSchema>;
228
- export declare const PrefabFileSchema: z.ZodObject<{
229
- version: z.ZodNumber;
230
- name: z.ZodString;
231
- root: z.ZodType<SceneEntity, unknown, z.core.$ZodTypeInternals<SceneEntity, unknown>>;
232
- }, z.core.$strip>;
233
- export type PrefabFile = z.infer<typeof PrefabFileSchema>;
234
- /**
235
- * Merge a prefab root definition with an instance's overrides.
236
- *
237
- * Per-field merge rules (exactly as implemented below):
238
- *
239
- * - transform: instance wins entirely if set, else the prefab root's transform
240
- * (placement is per-instance; transforms are not blended field-by-field).
241
- * - name: instance always wins.
242
- * - id: instance wins if set (each instance has its own id); else prefab's.
243
- * - prefab: stripped from the result so spawnEntity recursion terminates.
244
- *
245
- * - Sections — `mesh`, `light`, `camera`, `animation`, `audio`, `particles`,
246
- * `spline`, `render`: SHALLOW merge per section. If the instance sets the
247
- * section, its top-level fields override the prefab root's same-named
248
- * fields ({ ...prefabSection, ...instanceSection }); fields the instance
249
- * omits fall through to the prefab. Nested objects are replaced, not
250
- * deep-merged. If only the prefab has the section it is kept as-is.
251
- * (CB4: `spline` is included here; CB5: see metadata below; T1.10: `render`
252
- * is now included — an instance's per-entity render overrides are honored
253
- * and merged the same way as `mesh`/`material`.)
254
- *
255
- * NOTE (T1.10 audit): `mesh.instancerParams`/`mesh.generatorParams` and
256
- * `animation.parameters`/`animation.clipAliases` are keyed dict maps nested
257
- * one level down, and `particles` nests discriminated-union shapes/behaviors
258
- * arrays. These have the same "shallow replace" defect as `material`/
259
- * `physics` did, but no single well-defined field-merge semantics (dict keys
260
- * authors may legitimately want fully replaced; discriminated unions can't
261
- * be safely field-merged across different variants). Left as wholesale
262
- * per-section replace; flagged here rather than silently "fixed" with a
263
- * guess. Revisit if this causes real authoring pain.
264
- *
265
- * - `material`: shallow merge at the top level, PLUS deep-merge of the four
266
- * nested physical-material feature groups (`clearcoat`, `transmission`,
267
- * `sheen`, `iridescence`) so an instance overriding e.g. `clearcoat.clearcoat`
268
- * preserves the prefab's `clearcoat.clearcoatRoughness` (T1.10 — previously
269
- * these nested groups were wholesale-replaced like any other shallow field).
270
- *
271
- * - `physics`: shallow merge at the top level (`bodyType`, `mass`), PLUS
272
- * deep-merge of the nested `collider` object so a partial instance collider
273
- * override (e.g. just `isSensor`) preserves the prefab's `type` and other
274
- * collider fields instead of dropping them (T1.10 AC).
275
- *
276
- * - `shadow`: shallow merge at the top level, PLUS deep-merge of the nested
277
- * `camera` (shadow-camera frustum bounds) object, for the same reason as
278
- * `physics.collider` (T1.10 audit — same defect, same fix).
279
- *
280
- * - components: DEEP merge, keyed by component name. The union of component
281
- * names is taken; for each, instance fields override prefab fields
282
- * ({ ...prefabComp, ...instanceComp }).
283
- *
284
- * - joints: REPLACE — if the instance sets joints, its array wins wholesale
285
- * (arrays are not field-mergeable); else the prefab's joints are kept.
286
- * - children: APPEND — prefab children first, then instance-only children.
287
- *
288
- * - Instance-level metadata `visible`, `materialRef`, `tags`, `locked`,
289
- * `navigation`, `pivot`: instance wins if explicitly set, otherwise the
290
- * prefab root's value is inherited. (CB5: spline + these metadata fields are
291
- * now instance-wins; previously dropped.)
292
- *
293
- * - Re-validation (T1.10): the merged entity is re-parsed through
294
- * `SceneEntitySchema` before being returned. This is what makes the
295
- * material/materialRef mutual-exclusion refine fire on the MERGED result —
296
- * previously a prefab's inline `material` plus an instance's `materialRef`
297
- * (or vice versa) silently combined into an entity carrying both, bypassing
298
- * the refine entirely (it only ever saw the pre-merge, individually-valid
299
- * halves). A merge that produces an invalid entity now throws, naming the
300
- * offending prefab path + instance name.
301
- */
302
- export declare function mergePrefabInstance(prefabRoot: SceneEntity, instance: SceneEntity): SceneEntity;
303
- //# sourceMappingURL=scene-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scene-file.d.ts","sourceRoot":"","sources":["../../../src/scene/schema/scene-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,UAAU,CAAC;AAG/D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAQU,CAAC;AAEvC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,gBAAgB;;;;iBAMY,CAAC;AAE1C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AA8D1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,CA+B/F"}
@@ -1,256 +0,0 @@
1
- import { z } from 'zod';
2
- import { SceneEntitySchema } from './entity';
3
- import { SceneEnvironmentSchema } from './environment';
4
- export const SceneFileSchema = z
5
- .object({
6
- version: z.number().describe('Scene file format version'),
7
- name: z.string().describe('Scene display name'),
8
- environment: SceneEnvironmentSchema.optional().describe('Scene-level environment settings'),
9
- entities: z.array(SceneEntitySchema).describe('Top-level entities in the scene'),
10
- })
11
- .strict()
12
- .describe('Scene file (.vscn.json)');
13
- export const PrefabFileSchema = z
14
- .object({
15
- version: z.number().describe('Prefab file format version'),
16
- name: z.string().describe('Prefab display name'),
17
- root: SceneEntitySchema.describe('Root entity of the prefab'),
18
- })
19
- .describe('Prefab file (.prefab.json)');
20
- /**
21
- * Shallow-merge a section, but deep-merge specific named nested sub-objects
22
- * within it (e.g. `physics.collider`, `material.clearcoat`). A partial
23
- * instance override of a nested sub-object would otherwise wholesale-replace
24
- * it and drop the prefab's other fields in that sub-object (e.g. an instance
25
- * overriding one collider field would silently lose the prefab's `type`).
26
- */
27
- function mergeSectionDeepNested(prefabSection, instanceSection, nestedKeys) {
28
- if (instanceSection === undefined)
29
- return prefabSection;
30
- if (prefabSection === undefined)
31
- return instanceSection;
32
- const merged = { ...prefabSection, ...instanceSection };
33
- for (const key of nestedKeys) {
34
- const p = prefabSection[key];
35
- const i = instanceSection[key];
36
- if (i !== undefined &&
37
- p !== undefined &&
38
- typeof i === 'object' &&
39
- typeof p === 'object' &&
40
- !Array.isArray(i) &&
41
- !Array.isArray(p)) {
42
- merged[key] = { ...p, ...i };
43
- }
44
- }
45
- return merged;
46
- }
47
- /**
48
- * Sections whose nested sub-object needs deep merging (T1.10) — see the
49
- * `mergePrefabInstance` docstring for the reasoning behind each.
50
- */
51
- const DEEP_NESTED_SECTIONS = [
52
- { key: 'physics', nestedKeys: ['collider'] },
53
- { key: 'material', nestedKeys: ['clearcoat', 'transmission', 'sheen', 'iridescence'] },
54
- { key: 'shadow', nestedKeys: ['camera'] },
55
- ];
56
- /**
57
- * Re-validate a merged entity through `SceneEntitySchema` (T1.10). This is
58
- * the gate that catches a prefab's inline `material` combined with an
59
- * instance's `materialRef` (or vice versa) — each half is individually valid,
60
- * so only the MERGED entity can trip the material/materialRef
61
- * mutual-exclusion refine. Throws naming the offending prefab path + instance
62
- * so a bad scene file points straight at the offender.
63
- */
64
- function validateMergedEntity(merged, instance) {
65
- const validated = SceneEntitySchema.safeParse(merged);
66
- if (validated.success)
67
- return validated.data;
68
- const issues = validated.error.issues.map((issue) => issue.message).join('; ');
69
- const prefabPath = instance.prefab ?? '<unknown prefab>';
70
- throw new Error(`Prefab merge produced an invalid entity — prefab "${prefabPath}", instance "${instance.name}": ${issues}`);
71
- }
72
- /**
73
- * Merge a prefab root definition with an instance's overrides.
74
- *
75
- * Per-field merge rules (exactly as implemented below):
76
- *
77
- * - transform: instance wins entirely if set, else the prefab root's transform
78
- * (placement is per-instance; transforms are not blended field-by-field).
79
- * - name: instance always wins.
80
- * - id: instance wins if set (each instance has its own id); else prefab's.
81
- * - prefab: stripped from the result so spawnEntity recursion terminates.
82
- *
83
- * - Sections — `mesh`, `light`, `camera`, `animation`, `audio`, `particles`,
84
- * `spline`, `render`: SHALLOW merge per section. If the instance sets the
85
- * section, its top-level fields override the prefab root's same-named
86
- * fields ({ ...prefabSection, ...instanceSection }); fields the instance
87
- * omits fall through to the prefab. Nested objects are replaced, not
88
- * deep-merged. If only the prefab has the section it is kept as-is.
89
- * (CB4: `spline` is included here; CB5: see metadata below; T1.10: `render`
90
- * is now included — an instance's per-entity render overrides are honored
91
- * and merged the same way as `mesh`/`material`.)
92
- *
93
- * NOTE (T1.10 audit): `mesh.instancerParams`/`mesh.generatorParams` and
94
- * `animation.parameters`/`animation.clipAliases` are keyed dict maps nested
95
- * one level down, and `particles` nests discriminated-union shapes/behaviors
96
- * arrays. These have the same "shallow replace" defect as `material`/
97
- * `physics` did, but no single well-defined field-merge semantics (dict keys
98
- * authors may legitimately want fully replaced; discriminated unions can't
99
- * be safely field-merged across different variants). Left as wholesale
100
- * per-section replace; flagged here rather than silently "fixed" with a
101
- * guess. Revisit if this causes real authoring pain.
102
- *
103
- * - `material`: shallow merge at the top level, PLUS deep-merge of the four
104
- * nested physical-material feature groups (`clearcoat`, `transmission`,
105
- * `sheen`, `iridescence`) so an instance overriding e.g. `clearcoat.clearcoat`
106
- * preserves the prefab's `clearcoat.clearcoatRoughness` (T1.10 — previously
107
- * these nested groups were wholesale-replaced like any other shallow field).
108
- *
109
- * - `physics`: shallow merge at the top level (`bodyType`, `mass`), PLUS
110
- * deep-merge of the nested `collider` object so a partial instance collider
111
- * override (e.g. just `isSensor`) preserves the prefab's `type` and other
112
- * collider fields instead of dropping them (T1.10 AC).
113
- *
114
- * - `shadow`: shallow merge at the top level, PLUS deep-merge of the nested
115
- * `camera` (shadow-camera frustum bounds) object, for the same reason as
116
- * `physics.collider` (T1.10 audit — same defect, same fix).
117
- *
118
- * - components: DEEP merge, keyed by component name. The union of component
119
- * names is taken; for each, instance fields override prefab fields
120
- * ({ ...prefabComp, ...instanceComp }).
121
- *
122
- * - joints: REPLACE — if the instance sets joints, its array wins wholesale
123
- * (arrays are not field-mergeable); else the prefab's joints are kept.
124
- * - children: APPEND — prefab children first, then instance-only children.
125
- *
126
- * - Instance-level metadata `visible`, `materialRef`, `tags`, `locked`,
127
- * `navigation`, `pivot`: instance wins if explicitly set, otherwise the
128
- * prefab root's value is inherited. (CB5: spline + these metadata fields are
129
- * now instance-wins; previously dropped.)
130
- *
131
- * - Re-validation (T1.10): the merged entity is re-parsed through
132
- * `SceneEntitySchema` before being returned. This is what makes the
133
- * material/materialRef mutual-exclusion refine fire on the MERGED result —
134
- * previously a prefab's inline `material` plus an instance's `materialRef`
135
- * (or vice versa) silently combined into an entity carrying both, bypassing
136
- * the refine entirely (it only ever saw the pre-merge, individually-valid
137
- * halves). A merge that produces an invalid entity now throws, naming the
138
- * offending prefab path + instance name.
139
- */
140
- export function mergePrefabInstance(prefabRoot, instance) {
141
- const merged = {
142
- ...prefabRoot,
143
- name: instance.name,
144
- };
145
- // Handle optional fields explicitly to satisfy exactOptionalPropertyTypes
146
- const resolvedTransform = instance.transform ?? prefabRoot.transform;
147
- if (resolvedTransform)
148
- merged.transform = resolvedTransform;
149
- if (instance.id)
150
- merged.id = instance.id;
151
- // Strip prefab field so spawnEntity won't recurse infinitely
152
- delete merged.prefab;
153
- applyInstanceMetadata(merged, prefabRoot, instance);
154
- applyDeepNestedSections(merged, prefabRoot, instance);
155
- applyShallowSections(merged, prefabRoot, instance);
156
- const components = mergeComponents(prefabRoot, instance);
157
- if (components !== undefined)
158
- merged.components = components;
159
- // Joints: instance wins (array, not shallow-mergeable)
160
- if (instance.joints !== undefined) {
161
- merged.joints = instance.joints;
162
- }
163
- const children = mergeChildren(prefabRoot, instance);
164
- if (children !== undefined)
165
- merged.children = children;
166
- // Re-validate the merged result (T1.10) — see `validateMergedEntity` above.
167
- return validateMergedEntity(merged, instance);
168
- }
169
- /**
170
- * Visibility + instance-level metadata (`materialRef`, `tags`, `locked`,
171
- * `navigation`, `pivot`): instance wins if explicitly set, otherwise the
172
- * prefab root's value (already present on `merged` via the initial spread in
173
- * `mergePrefabInstance`) is kept.
174
- */
175
- function applyInstanceMetadata(merged, prefabRoot, instance) {
176
- if (instance.visible !== undefined)
177
- merged.visible = instance.visible;
178
- if (instance.materialRef !== undefined)
179
- merged.materialRef = instance.materialRef;
180
- if (instance.tags !== undefined)
181
- merged.tags = instance.tags;
182
- if (instance.locked !== undefined)
183
- merged.locked = instance.locked;
184
- if (instance.navigation !== undefined)
185
- merged.navigation = instance.navigation;
186
- if (instance.pivot !== undefined) {
187
- merged.pivot = instance.pivot;
188
- }
189
- else if (prefabRoot.pivot !== undefined) {
190
- merged.pivot = prefabRoot.pivot;
191
- }
192
- }
193
- /**
194
- * Sections whose nested sub-object needs deep (not shallow) merging — see the
195
- * `mergePrefabInstance` docstring for the reasoning behind each.
196
- */
197
- function applyDeepNestedSections(merged, prefabRoot, instance) {
198
- for (const { key, nestedKeys } of DEEP_NESTED_SECTIONS) {
199
- const result = mergeSectionDeepNested(
200
- // biome-ignore lint/suspicious/noExplicitAny: TS can't correlate indexed access across a union of keys
201
- prefabRoot[key],
202
- // biome-ignore lint/suspicious/noExplicitAny: TS can't correlate indexed access across a union of keys
203
- instance[key], nestedKeys);
204
- // biome-ignore lint/suspicious/noExplicitAny: TS can't correlate indexed access across a union of keys
205
- if (result !== undefined)
206
- merged[key] = result;
207
- }
208
- }
209
- /** Sections shallow-merged whole (material/physics/shadow handled separately above). */
210
- const SHALLOW_SECTIONS = [
211
- 'mesh',
212
- 'light',
213
- 'camera',
214
- 'animation',
215
- 'audio',
216
- 'particles',
217
- 'spline',
218
- 'render',
219
- ];
220
- /**
221
- * Shallow merge per remaining section — instance fields override within the
222
- * section ({ ...prefabSection, ...instanceSection }); if only the prefab has
223
- * the section it is kept as-is.
224
- */
225
- function applyShallowSections(merged, prefabRoot, instance) {
226
- for (const key of SHALLOW_SECTIONS) {
227
- if (instance[key] === undefined)
228
- continue;
229
- // biome-ignore lint/suspicious/noExplicitAny: TS can't correlate indexed access across a union of keys
230
- merged[key] =
231
- prefabRoot[key] !== undefined
232
- ? // biome-ignore lint/suspicious/noExplicitAny: TS can't correlate indexed access across a union of keys
233
- { ...prefabRoot[key], ...instance[key] }
234
- : instance[key];
235
- }
236
- }
237
- /** Deep merge `components`, keyed by component name (instance fields win per-component). */
238
- function mergeComponents(prefabRoot, instance) {
239
- if (!instance.components && !prefabRoot.components)
240
- return undefined;
241
- const base = prefabRoot.components ?? {};
242
- const over = instance.components ?? {};
243
- const result = {};
244
- for (const comp of new Set([...Object.keys(base), ...Object.keys(over)])) {
245
- result[comp] = { ...base[comp], ...over[comp] };
246
- }
247
- return result;
248
- }
249
- /** Children: prefab children first, then instance-only children appended. */
250
- function mergeChildren(prefabRoot, instance) {
251
- const prefabChildren = prefabRoot.children ?? [];
252
- const instanceChildren = instance.children ?? [];
253
- if (prefabChildren.length === 0 && instanceChildren.length === 0)
254
- return undefined;
255
- return [...prefabChildren, ...instanceChildren];
256
- }
@@ -1,28 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const SceneShadowSchema: z.ZodObject<{
3
- enabled: z.ZodBoolean;
4
- mapSize: z.ZodOptional<z.ZodNumber>;
5
- camera: z.ZodOptional<z.ZodObject<{
6
- left: z.ZodOptional<z.ZodNumber>;
7
- right: z.ZodOptional<z.ZodNumber>;
8
- top: z.ZodOptional<z.ZodNumber>;
9
- bottom: z.ZodOptional<z.ZodNumber>;
10
- }, z.core.$strip>>;
11
- radius: z.ZodOptional<z.ZodNumber>;
12
- bias: z.ZodOptional<z.ZodNumber>;
13
- }, z.core.$strip>;
14
- /** Partial schema for prefab instance overrides (enabled not required). */
15
- export declare const SceneShadowOverrideSchema: z.ZodObject<{
16
- enabled: z.ZodOptional<z.ZodBoolean>;
17
- mapSize: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
18
- camera: z.ZodOptional<z.ZodOptional<z.ZodObject<{
19
- left: z.ZodOptional<z.ZodNumber>;
20
- right: z.ZodOptional<z.ZodNumber>;
21
- top: z.ZodOptional<z.ZodNumber>;
22
- bottom: z.ZodOptional<z.ZodNumber>;
23
- }, z.core.$strip>>>;
24
- radius: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
25
- bias: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
26
- }, z.core.$strip>;
27
- export type SceneShadow = z.infer<typeof SceneShadowSchema>;
28
- //# sourceMappingURL=shadow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shadow.d.ts","sourceRoot":"","sources":["../../../src/scene/schema/shadow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;;;;;;;;iBAgBa,CAAC;AAE5C,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB;;;;;;;;;;;iBAA8B,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,20 +0,0 @@
1
- import { z } from 'zod';
2
- export const SceneShadowSchema = z
3
- .object({
4
- enabled: z.boolean().describe('Whether this light casts shadows'),
5
- mapSize: z.number().optional().describe('Shadow map resolution in pixels (e.g. 1024, 2048)'),
6
- camera: z
7
- .object({
8
- left: z.number().optional().describe('Left bound of shadow camera frustum'),
9
- right: z.number().optional().describe('Right bound of shadow camera frustum'),
10
- top: z.number().optional().describe('Top bound of shadow camera frustum'),
11
- bottom: z.number().optional().describe('Bottom bound of shadow camera frustum'),
12
- })
13
- .optional()
14
- .describe('Shadow camera frustum bounds (directional lights)'),
15
- radius: z.number().optional().describe('Shadow map blur radius for soft shadows'),
16
- bias: z.number().optional().describe('Shadow bias to reduce shadow acne artifacts'),
17
- })
18
- .describe('Shadow casting configuration');
19
- /** Partial schema for prefab instance overrides (enabled not required). */
20
- export const SceneShadowOverrideSchema = SceneShadowSchema.partial();
@@ -1,25 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const SceneSplineSchema: z.ZodObject<{
3
- curveType: z.ZodEnum<{
4
- centripetal: "centripetal";
5
- chordal: "chordal";
6
- catmullrom: "catmullrom";
7
- }>;
8
- points: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
9
- closed: z.ZodOptional<z.ZodBoolean>;
10
- tension: z.ZodOptional<z.ZodNumber>;
11
- resolution: z.ZodOptional<z.ZodNumber>;
12
- }, z.core.$strip>;
13
- export type SceneSpline = z.infer<typeof SceneSplineSchema>;
14
- export declare const SceneSplineOverrideSchema: z.ZodObject<{
15
- curveType: z.ZodOptional<z.ZodEnum<{
16
- centripetal: "centripetal";
17
- chordal: "chordal";
18
- catmullrom: "catmullrom";
19
- }>>;
20
- points: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>>;
21
- closed: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
22
- tension: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
23
- resolution: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
24
- }, z.core.$strip>;
25
- //# sourceMappingURL=spline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spline.d.ts","sourceRoot":"","sources":["../../../src/scene/schema/spline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAa5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAA8B,CAAC"}
@@ -1,15 +0,0 @@
1
- import { z } from 'zod';
2
- import { Vec3Schema } from './tuples';
3
- export const SceneSplineSchema = z.object({
4
- curveType: z
5
- .enum(['centripetal', 'chordal', 'catmullrom'])
6
- .describe('CatmullRomCurve3 parameterization type. Matches Three.js curveType parameter'),
7
- points: z.array(Vec3Schema).min(2).describe('Control point positions in local space'),
8
- closed: z.boolean().optional().describe('Whether the spline forms a closed loop'),
9
- tension: z
10
- .number()
11
- .optional()
12
- .describe('Curve tension (default 0.5). Only used when curveType is catmullrom; ignored for centripetal and chordal'),
13
- resolution: z.number().optional().describe('Number of line segments for rendering the curve'),
14
- });
15
- export const SceneSplineOverrideSchema = SceneSplineSchema.partial();