@vgai/engine 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +3 -1
  2. package/dist/adapter/authoring.d.ts +404 -0
  3. package/dist/adapter/authoring.d.ts.map +1 -0
  4. package/dist/adapter/authoring.js +22 -0
  5. package/dist/adapter/colyseus-networking-adapter.d.ts +43 -0
  6. package/dist/adapter/colyseus-networking-adapter.d.ts.map +1 -0
  7. package/dist/adapter/colyseus-networking-adapter.js +38 -0
  8. package/dist/adapter/first-party-systems.d.ts +38 -0
  9. package/dist/adapter/first-party-systems.d.ts.map +1 -0
  10. package/dist/adapter/first-party-systems.js +77 -0
  11. package/dist/adapter/game-adapter.d.ts +133 -0
  12. package/dist/adapter/game-adapter.d.ts.map +1 -0
  13. package/dist/adapter/game-adapter.js +10 -0
  14. package/dist/adapter/host-context.d.ts +73 -0
  15. package/dist/adapter/host-context.d.ts.map +1 -0
  16. package/dist/adapter/host-context.js +16 -0
  17. package/dist/adapter/index.d.ts +22 -0
  18. package/dist/adapter/index.d.ts.map +1 -0
  19. package/dist/adapter/index.js +15 -0
  20. package/dist/adapter/ingest/game-contract.d.ts +53 -0
  21. package/dist/adapter/ingest/game-contract.d.ts.map +1 -0
  22. package/dist/adapter/ingest/game-contract.js +30 -0
  23. package/dist/adapter/ingest/overlay-applier.d.ts +118 -0
  24. package/dist/adapter/ingest/overlay-applier.d.ts.map +1 -0
  25. package/dist/adapter/ingest/overlay-applier.js +132 -0
  26. package/dist/adapter/ingest/overlay-apply.d.ts +60 -0
  27. package/dist/adapter/ingest/overlay-apply.d.ts.map +1 -0
  28. package/dist/adapter/ingest/overlay-apply.js +101 -0
  29. package/dist/adapter/ingest/overlay-file.d.ts +79 -0
  30. package/dist/adapter/ingest/overlay-file.d.ts.map +1 -0
  31. package/dist/adapter/ingest/overlay-file.js +66 -0
  32. package/dist/adapter/ingest/overlay-report.d.ts +113 -0
  33. package/dist/adapter/ingest/overlay-report.d.ts.map +1 -0
  34. package/dist/adapter/ingest/overlay-report.js +103 -0
  35. package/dist/adapter/ingest/scene-capture.d.ts +97 -0
  36. package/dist/adapter/ingest/scene-capture.d.ts.map +1 -0
  37. package/dist/adapter/ingest/scene-capture.js +248 -0
  38. package/dist/adapter/ingest/upstream-pin.d.ts +47 -0
  39. package/dist/adapter/ingest/upstream-pin.d.ts.map +1 -0
  40. package/dist/adapter/ingest/upstream-pin.js +50 -0
  41. package/dist/adapter/loop-gate-report.d.ts +34 -0
  42. package/dist/adapter/loop-gate-report.d.ts.map +1 -0
  43. package/dist/adapter/loop-gate-report.js +37 -0
  44. package/dist/adapter/rapier-physics-adapter.d.ts +12 -0
  45. package/dist/adapter/rapier-physics-adapter.d.ts.map +1 -0
  46. package/dist/adapter/rapier-physics-adapter.js +46 -0
  47. package/dist/adapter/system-adapter.d.ts +133 -0
  48. package/dist/adapter/system-adapter.d.ts.map +1 -0
  49. package/dist/adapter/system-adapter.js +13 -0
  50. package/dist/adapter/transform.d.ts +18 -0
  51. package/dist/adapter/transform.d.ts.map +1 -0
  52. package/dist/adapter/transform.js +1 -0
  53. package/dist/adapter/vgai-scene-game-adapter.d.ts +116 -0
  54. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +1 -0
  55. package/dist/adapter/vgai-scene-game-adapter.js +714 -0
  56. package/dist/adapter/world-kind.d.ts +30 -0
  57. package/dist/adapter/world-kind.d.ts.map +1 -0
  58. package/dist/adapter/world-kind.js +18 -0
  59. package/dist/ai/navigation.d.ts +64 -0
  60. package/dist/ai/navigation.d.ts.map +1 -0
  61. package/dist/ai/navigation.js +133 -0
  62. package/dist/animation/anim-graph-types.d.ts +25 -0
  63. package/dist/animation/anim-graph-types.d.ts.map +1 -0
  64. package/dist/animation/anim-graph-types.js +1 -0
  65. package/dist/animation/animation-clock.d.ts +213 -0
  66. package/dist/animation/animation-clock.d.ts.map +1 -0
  67. package/dist/animation/animation-clock.js +301 -0
  68. package/dist/animation/blend-node.d.ts +22 -0
  69. package/dist/animation/blend-node.d.ts.map +1 -0
  70. package/dist/animation/blend-node.js +97 -0
  71. package/dist/animation/camera-ownership.d.ts +250 -0
  72. package/dist/animation/camera-ownership.d.ts.map +1 -0
  73. package/dist/animation/camera-ownership.js +169 -0
  74. package/dist/animation/cinematic-cues.d.ts +200 -0
  75. package/dist/animation/cinematic-cues.d.ts.map +1 -0
  76. package/dist/animation/cinematic-cues.js +213 -0
  77. package/dist/animation/clip-map.d.ts +12 -0
  78. package/dist/animation/clip-map.d.ts.map +1 -0
  79. package/dist/animation/clip-map.js +37 -0
  80. package/dist/animation/gsap-registration.d.ts +119 -0
  81. package/dist/animation/gsap-registration.d.ts.map +1 -0
  82. package/dist/animation/gsap-registration.js +92 -0
  83. package/dist/animation/theatre-clock-binding.d.ts +89 -0
  84. package/dist/animation/theatre-clock-binding.d.ts.map +1 -0
  85. package/dist/animation/theatre-clock-binding.js +29 -0
  86. package/dist/animation/theatre-director.d.ts +242 -0
  87. package/dist/animation/theatre-director.d.ts.map +1 -0
  88. package/dist/animation/theatre-director.js +235 -0
  89. package/dist/animation/theatre-object-binding.d.ts +305 -0
  90. package/dist/animation/theatre-object-binding.d.ts.map +1 -0
  91. package/dist/animation/theatre-object-binding.js +351 -0
  92. package/dist/animation/xstate-animation-binding.d.ts +111 -0
  93. package/dist/animation/xstate-animation-binding.d.ts.map +1 -0
  94. package/dist/animation/xstate-animation-binding.js +307 -0
  95. package/dist/animation/xstate-animation-meta.d.ts +228 -0
  96. package/dist/animation/xstate-animation-meta.d.ts.map +1 -0
  97. package/dist/animation/xstate-animation-meta.js +221 -0
  98. package/dist/assets.d.ts +26 -0
  99. package/dist/assets.d.ts.map +1 -0
  100. package/dist/assets.js +55 -0
  101. package/dist/audio/index.d.ts +4 -0
  102. package/dist/audio/index.d.ts.map +1 -0
  103. package/dist/audio/index.js +24 -0
  104. package/dist/audio/tone-clock-binding.d.ts +75 -0
  105. package/dist/audio/tone-clock-binding.d.ts.map +1 -0
  106. package/dist/audio/tone-clock-binding.js +29 -0
  107. package/dist/audio/tone-context.d.ts +114 -0
  108. package/dist/audio/tone-context.d.ts.map +1 -0
  109. package/dist/audio/tone-context.js +39 -0
  110. package/dist/audio/tone-offline-render.d.ts +90 -0
  111. package/dist/audio/tone-offline-render.d.ts.map +1 -0
  112. package/dist/audio/tone-offline-render.js +56 -0
  113. package/dist/audio/wav-encode.d.ts +38 -0
  114. package/dist/audio/wav-encode.d.ts.map +1 -0
  115. package/dist/audio/wav-encode.js +97 -0
  116. package/dist/core/game-loop.d.ts +21 -0
  117. package/dist/core/game-loop.d.ts.map +1 -0
  118. package/dist/core/game-loop.js +130 -0
  119. package/dist/core/system-runner.d.ts +120 -0
  120. package/dist/core/system-runner.d.ts.map +1 -0
  121. package/dist/core/system-runner.js +286 -0
  122. package/dist/core/types.d.ts +58 -0
  123. package/dist/core/types.d.ts.map +1 -0
  124. package/dist/core/types.js +25 -0
  125. package/dist/data/data-asset.d.ts +101 -0
  126. package/dist/data/data-asset.d.ts.map +1 -0
  127. package/dist/data/data-asset.js +122 -0
  128. package/dist/data/data-check-core.d.ts +110 -0
  129. package/dist/data/data-check-core.d.ts.map +1 -0
  130. package/dist/data/data-check-core.js +178 -0
  131. package/dist/data/data-ref.d.ts +79 -0
  132. package/dist/data/data-ref.d.ts.map +1 -0
  133. package/dist/data/data-ref.js +130 -0
  134. package/dist/data/vite-plugin-data.d.ts +79 -0
  135. package/dist/data/vite-plugin-data.d.ts.map +1 -0
  136. package/dist/data/vite-plugin-data.js +217 -0
  137. package/dist/dev/console-bridge.d.ts +22 -0
  138. package/dist/dev/console-bridge.d.ts.map +1 -0
  139. package/dist/dev/console-bridge.js +71 -0
  140. package/dist/dev/debug-draw.d.ts +24 -0
  141. package/dist/dev/debug-draw.d.ts.map +1 -0
  142. package/dist/dev/debug-draw.js +73 -0
  143. package/dist/dev/logger.d.ts +30 -0
  144. package/dist/dev/logger.d.ts.map +1 -0
  145. package/dist/dev/logger.js +90 -0
  146. package/dist/ecs/component-manager.d.ts +189 -0
  147. package/dist/ecs/component-manager.d.ts.map +1 -0
  148. package/dist/ecs/component-manager.js +676 -0
  149. package/dist/ecs/game-component.d.ts +97 -0
  150. package/dist/ecs/game-component.d.ts.map +1 -0
  151. package/dist/ecs/game-component.js +80 -0
  152. package/dist/ecs/hmr-swap-report.d.ts +53 -0
  153. package/dist/ecs/hmr-swap-report.d.ts.map +1 -0
  154. package/dist/ecs/hmr-swap-report.js +55 -0
  155. package/dist/index.d.ts +37 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +30 -0
  158. package/dist/input/input-manager.d.ts +596 -0
  159. package/dist/input/input-manager.d.ts.map +1 -0
  160. package/dist/input/input-manager.js +1564 -0
  161. package/dist/input/input-types.d.ts +171 -0
  162. package/dist/input/input-types.d.ts.map +1 -0
  163. package/dist/input/input-types.js +1 -0
  164. package/dist/input/prompt-labels.d.ts +21 -0
  165. package/dist/input/prompt-labels.d.ts.map +1 -0
  166. package/dist/input/prompt-labels.js +121 -0
  167. package/dist/input/rebind-controller.d.ts +59 -0
  168. package/dist/input/rebind-controller.d.ts.map +1 -0
  169. package/dist/input/rebind-controller.js +85 -0
  170. package/dist/input/schema.d.ts +16 -0
  171. package/dist/input/schema.d.ts.map +1 -0
  172. package/dist/input/schema.js +228 -0
  173. package/dist/loader.d.ts +43 -0
  174. package/dist/loader.d.ts.map +1 -0
  175. package/dist/loader.js +59 -0
  176. package/dist/manifest/index.d.ts +5 -0
  177. package/dist/manifest/index.d.ts.map +1 -0
  178. package/dist/manifest/index.js +8 -0
  179. package/dist/manifest/load-file.d.ts +4 -0
  180. package/dist/manifest/load-file.d.ts.map +1 -0
  181. package/dist/manifest/load-file.js +14 -0
  182. package/dist/manifest/load.d.ts +117 -0
  183. package/dist/manifest/load.d.ts.map +1 -0
  184. package/dist/manifest/load.js +255 -0
  185. package/dist/manifest/schema.d.ts +173 -0
  186. package/dist/manifest/schema.d.ts.map +1 -0
  187. package/dist/manifest/schema.js +302 -0
  188. package/dist/physics/collision-system.d.ts +41 -0
  189. package/dist/physics/collision-system.d.ts.map +1 -0
  190. package/dist/physics/collision-system.js +64 -0
  191. package/dist/physics/physics-registry.d.ts +45 -0
  192. package/dist/physics/physics-registry.d.ts.map +1 -0
  193. package/dist/physics/physics-registry.js +65 -0
  194. package/dist/physics/transform-writer.d.ts +16 -0
  195. package/dist/physics/transform-writer.d.ts.map +1 -0
  196. package/dist/physics/transform-writer.js +38 -0
  197. package/dist/physics/trigger-dispatch.d.ts +24 -0
  198. package/dist/physics/trigger-dispatch.d.ts.map +1 -0
  199. package/dist/physics/trigger-dispatch.js +80 -0
  200. package/dist/react/game-state.d.ts +105 -0
  201. package/dist/react/game-state.d.ts.map +1 -0
  202. package/dist/react/game-state.js +144 -0
  203. package/dist/react/use-data.d.ts +60 -0
  204. package/dist/react/use-data.d.ts.map +1 -0
  205. package/dist/react/use-data.js +96 -0
  206. package/dist/react/use-selection.d.ts +75 -0
  207. package/dist/react/use-selection.d.ts.map +1 -0
  208. package/dist/react/use-selection.js +90 -0
  209. package/dist/render/auto-batcher.d.ts +34 -0
  210. package/dist/render/auto-batcher.d.ts.map +1 -0
  211. package/dist/render/auto-batcher.js +140 -0
  212. package/dist/render/render-batch-system.d.ts +33 -0
  213. package/dist/render/render-batch-system.d.ts.map +1 -0
  214. package/dist/render/render-batch-system.js +230 -0
  215. package/dist/render/render-features.d.ts +47 -0
  216. package/dist/render/render-features.d.ts.map +1 -0
  217. package/dist/render/render-features.js +105 -0
  218. package/dist/render/render-settings.d.ts +36 -0
  219. package/dist/render/render-settings.d.ts.map +1 -0
  220. package/dist/render/render-settings.js +51 -0
  221. package/dist/runtime/create-runtime.d.ts +280 -0
  222. package/dist/runtime/create-runtime.d.ts.map +1 -0
  223. package/dist/runtime/create-runtime.js +795 -0
  224. package/dist/runtime/frame-selector-cache.d.ts +41 -0
  225. package/dist/runtime/frame-selector-cache.d.ts.map +1 -0
  226. package/dist/runtime/frame-selector-cache.js +65 -0
  227. package/dist/runtime/game.d.ts +433 -0
  228. package/dist/runtime/game.d.ts.map +1 -0
  229. package/dist/runtime/game.js +569 -0
  230. package/dist/runtime/input-router.d.ts +78 -0
  231. package/dist/runtime/input-router.d.ts.map +1 -0
  232. package/dist/runtime/input-router.js +171 -0
  233. package/dist/runtime/mount-game.d.ts +129 -0
  234. package/dist/runtime/mount-game.d.ts.map +1 -0
  235. package/dist/runtime/mount-game.js +152 -0
  236. package/dist/runtime/mount-manifest.d.ts +119 -0
  237. package/dist/runtime/mount-manifest.d.ts.map +1 -0
  238. package/dist/runtime/mount-manifest.js +204 -0
  239. package/dist/runtime/render-audio-control.d.ts +110 -0
  240. package/dist/runtime/render-audio-control.d.ts.map +1 -0
  241. package/dist/runtime/render-audio-control.js +111 -0
  242. package/dist/runtime/render-control.d.ts +291 -0
  243. package/dist/runtime/render-control.d.ts.map +1 -0
  244. package/dist/runtime/render-control.js +264 -0
  245. package/dist/runtime/render-seed.d.ts +57 -0
  246. package/dist/runtime/render-seed.d.ts.map +1 -0
  247. package/dist/runtime/render-seed.js +74 -0
  248. package/dist/runtime/scene-ui-bridge.d.ts +69 -0
  249. package/dist/runtime/scene-ui-bridge.d.ts.map +1 -0
  250. package/dist/runtime/scene-ui-bridge.js +23 -0
  251. package/dist/runtime/scene-ui-data.d.ts +13 -0
  252. package/dist/runtime/scene-ui-data.d.ts.map +1 -0
  253. package/dist/runtime/scene-ui-data.js +92 -0
  254. package/dist/runtime/state-bridge.d.ts +47 -0
  255. package/dist/runtime/state-bridge.d.ts.map +1 -0
  256. package/dist/runtime/state-bridge.js +53 -0
  257. package/dist/runtime/types.d.ts +179 -0
  258. package/dist/runtime/types.d.ts.map +1 -0
  259. package/dist/runtime/types.js +1 -0
  260. package/dist/scene/asset-loaders.d.ts +79 -0
  261. package/dist/scene/asset-loaders.d.ts.map +1 -0
  262. package/dist/scene/asset-loaders.js +141 -0
  263. package/dist/scene/asset-paths.d.ts +11 -0
  264. package/dist/scene/asset-paths.d.ts.map +1 -0
  265. package/dist/scene/asset-paths.js +108 -0
  266. package/dist/scene/asset-ref-check.d.ts +88 -0
  267. package/dist/scene/asset-ref-check.d.ts.map +1 -0
  268. package/dist/scene/asset-ref-check.js +214 -0
  269. package/dist/scene/asset-registry.d.ts +30 -0
  270. package/dist/scene/asset-registry.d.ts.map +1 -0
  271. package/dist/scene/asset-registry.js +50 -0
  272. package/dist/scene/collider-dimensions.d.ts +63 -0
  273. package/dist/scene/collider-dimensions.d.ts.map +1 -0
  274. package/dist/scene/collider-dimensions.js +98 -0
  275. package/dist/scene/component-registry.d.ts +17 -0
  276. package/dist/scene/component-registry.d.ts.map +1 -0
  277. package/dist/scene/component-registry.js +28 -0
  278. package/dist/scene/defaults.d.ts +252 -0
  279. package/dist/scene/defaults.d.ts.map +1 -0
  280. package/dist/scene/defaults.js +151 -0
  281. package/dist/scene/geometries/index.d.ts +8 -0
  282. package/dist/scene/geometries/index.d.ts.map +1 -0
  283. package/dist/scene/geometries/index.js +7 -0
  284. package/dist/scene/geometries/terrain.d.ts +2 -0
  285. package/dist/scene/geometries/terrain.d.ts.map +1 -0
  286. package/dist/scene/geometries/terrain.js +37 -0
  287. package/dist/scene/geometry-registry.d.ts +24 -0
  288. package/dist/scene/geometry-registry.d.ts.map +1 -0
  289. package/dist/scene/geometry-registry.js +20 -0
  290. package/dist/scene/instance-registry.d.ts +36 -0
  291. package/dist/scene/instance-registry.d.ts.map +1 -0
  292. package/dist/scene/instance-registry.js +55 -0
  293. package/dist/scene/instancers/grid.d.ts +2 -0
  294. package/dist/scene/instancers/grid.d.ts.map +1 -0
  295. package/dist/scene/instancers/grid.js +36 -0
  296. package/dist/scene/instancers/index.d.ts +8 -0
  297. package/dist/scene/instancers/index.d.ts.map +1 -0
  298. package/dist/scene/instancers/index.js +7 -0
  299. package/dist/scene/light-camera-factory.d.ts +23 -0
  300. package/dist/scene/light-camera-factory.d.ts.map +1 -0
  301. package/dist/scene/light-camera-factory.js +68 -0
  302. package/dist/scene/material-factory.d.ts +17 -0
  303. package/dist/scene/material-factory.d.ts.map +1 -0
  304. package/dist/scene/material-factory.js +197 -0
  305. package/dist/scene/material-registry.d.ts +40 -0
  306. package/dist/scene/material-registry.d.ts.map +1 -0
  307. package/dist/scene/material-registry.js +44 -0
  308. package/dist/scene/materials/index.d.ts +8 -0
  309. package/dist/scene/materials/index.d.ts.map +1 -0
  310. package/dist/scene/materials/index.js +7 -0
  311. package/dist/scene/materials/water.d.ts +2 -0
  312. package/dist/scene/materials/water.d.ts.map +1 -0
  313. package/dist/scene/materials/water.js +54 -0
  314. package/dist/scene/parse.d.ts +23 -0
  315. package/dist/scene/parse.d.ts.map +1 -0
  316. package/dist/scene/parse.js +179 -0
  317. package/dist/scene/particles-factory.d.ts +33 -0
  318. package/dist/scene/particles-factory.d.ts.map +1 -0
  319. package/dist/scene/particles-factory.js +282 -0
  320. package/dist/scene/scene-apply.d.ts +109 -0
  321. package/dist/scene/scene-apply.d.ts.map +1 -0
  322. package/dist/scene/scene-apply.js +326 -0
  323. package/dist/scene/scene-diff-schema.d.ts +285 -0
  324. package/dist/scene/scene-diff-schema.d.ts.map +1 -0
  325. package/dist/scene/scene-diff-schema.js +92 -0
  326. package/dist/scene/scene-diff-types.d.ts +40 -0
  327. package/dist/scene/scene-diff-types.d.ts.map +1 -0
  328. package/dist/scene/scene-diff-types.js +14 -0
  329. package/dist/scene/scene-loader.d.ts +177 -0
  330. package/dist/scene/scene-loader.d.ts.map +1 -0
  331. package/dist/scene/scene-loader.js +1213 -0
  332. package/dist/scene/scene-query.d.ts +11 -0
  333. package/dist/scene/scene-query.d.ts.map +1 -0
  334. package/dist/scene/scene-query.js +63 -0
  335. package/dist/scene/scene-types.d.ts +10 -0
  336. package/dist/scene/scene-types.d.ts.map +1 -0
  337. package/dist/scene/scene-types.js +8 -0
  338. package/dist/scene/scene-version.d.ts +26 -0
  339. package/dist/scene/scene-version.d.ts.map +1 -0
  340. package/dist/scene/scene-version.js +34 -0
  341. package/dist/scene/schema/animation.d.ts +8 -0
  342. package/dist/scene/schema/animation.d.ts.map +1 -0
  343. package/dist/scene/schema/animation.js +42 -0
  344. package/dist/scene/schema/audio.d.ts +13 -0
  345. package/dist/scene/schema/audio.d.ts.map +1 -0
  346. package/dist/scene/schema/audio.js +22 -0
  347. package/dist/scene/schema/camera.d.ts +28 -0
  348. package/dist/scene/schema/camera.d.ts.map +1 -0
  349. package/dist/scene/schema/camera.js +17 -0
  350. package/dist/scene/schema/collider.d.ts +40 -0
  351. package/dist/scene/schema/collider.d.ts.map +1 -0
  352. package/dist/scene/schema/collider.js +55 -0
  353. package/dist/scene/schema/entity-ref.d.ts +31 -0
  354. package/dist/scene/schema/entity-ref.d.ts.map +1 -0
  355. package/dist/scene/schema/entity-ref.js +61 -0
  356. package/dist/scene/schema/entity.d.ts +1036 -0
  357. package/dist/scene/schema/entity.d.ts.map +1 -0
  358. package/dist/scene/schema/entity.js +153 -0
  359. package/dist/scene/schema/environment.d.ts +425 -0
  360. package/dist/scene/schema/environment.d.ts.map +1 -0
  361. package/dist/scene/schema/environment.js +357 -0
  362. package/dist/scene/schema/index.d.ts +39 -0
  363. package/dist/scene/schema/index.d.ts.map +1 -0
  364. package/dist/scene/schema/index.js +20 -0
  365. package/dist/scene/schema/instances.d.ts +14 -0
  366. package/dist/scene/schema/instances.d.ts.map +1 -0
  367. package/dist/scene/schema/instances.js +28 -0
  368. package/dist/scene/schema/joint.d.ts +23 -0
  369. package/dist/scene/schema/joint.d.ts.map +1 -0
  370. package/dist/scene/schema/joint.js +23 -0
  371. package/dist/scene/schema/light.d.ts +38 -0
  372. package/dist/scene/schema/light.d.ts.map +1 -0
  373. package/dist/scene/schema/light.js +26 -0
  374. package/dist/scene/schema/material.d.ts +199 -0
  375. package/dist/scene/schema/material.d.ts.map +1 -0
  376. package/dist/scene/schema/material.js +99 -0
  377. package/dist/scene/schema/mesh.d.ts +48 -0
  378. package/dist/scene/schema/mesh.d.ts.map +1 -0
  379. package/dist/scene/schema/mesh.js +82 -0
  380. package/dist/scene/schema/particles.d.ts +2178 -0
  381. package/dist/scene/schema/particles.d.ts.map +1 -0
  382. package/dist/scene/schema/particles.js +321 -0
  383. package/dist/scene/schema/physics.d.ts +56 -0
  384. package/dist/scene/schema/physics.d.ts.map +1 -0
  385. package/dist/scene/schema/physics.js +37 -0
  386. package/dist/scene/schema/scene-file.d.ts +304 -0
  387. package/dist/scene/schema/scene-file.d.ts.map +1 -0
  388. package/dist/scene/schema/scene-file.js +262 -0
  389. package/dist/scene/schema/shadow.d.ts +28 -0
  390. package/dist/scene/schema/shadow.d.ts.map +1 -0
  391. package/dist/scene/schema/shadow.js +20 -0
  392. package/dist/scene/schema/spline.d.ts +25 -0
  393. package/dist/scene/schema/spline.d.ts.map +1 -0
  394. package/dist/scene/schema/spline.js +15 -0
  395. package/dist/scene/schema/tuples.d.ts +12 -0
  396. package/dist/scene/schema/tuples.d.ts.map +1 -0
  397. package/dist/scene/schema/tuples.js +14 -0
  398. package/dist/scene/schema/ui.d.ts +880 -0
  399. package/dist/scene/schema/ui.d.ts.map +1 -0
  400. package/dist/scene/schema/ui.js +506 -0
  401. package/dist/scene/user-data.d.ts +171 -0
  402. package/dist/scene/user-data.d.ts.map +1 -0
  403. package/dist/scene/user-data.js +137 -0
  404. package/dist/setup/setup-audio.d.ts +20 -0
  405. package/dist/setup/setup-audio.d.ts.map +1 -0
  406. package/dist/setup/setup-audio.js +41 -0
  407. package/dist/setup/setup-particles.d.ts +17 -0
  408. package/dist/setup/setup-particles.d.ts.map +1 -0
  409. package/dist/setup/setup-particles.js +16 -0
  410. package/dist/setup/setup-physics.d.ts +25 -0
  411. package/dist/setup/setup-physics.d.ts.map +1 -0
  412. package/dist/setup/setup-physics.js +51 -0
  413. package/dist/setup/setup-renderer.d.ts +69 -0
  414. package/dist/setup/setup-renderer.d.ts.map +1 -0
  415. package/dist/setup/setup-renderer.js +363 -0
  416. package/dist/tools/define-tool.d.ts +105 -0
  417. package/dist/tools/define-tool.d.ts.map +1 -0
  418. package/dist/tools/define-tool.js +82 -0
  419. package/dist/world2d/authoring-2d.d.ts +76 -0
  420. package/dist/world2d/authoring-2d.d.ts.map +1 -0
  421. package/dist/world2d/authoring-2d.js +176 -0
  422. package/dist/world2d/capture-to-scene2d.d.ts +5 -0
  423. package/dist/world2d/capture-to-scene2d.d.ts.map +1 -0
  424. package/dist/world2d/capture-to-scene2d.js +49 -0
  425. package/dist/world2d/collision-2d.d.ts +52 -0
  426. package/dist/world2d/collision-2d.d.ts.map +1 -0
  427. package/dist/world2d/collision-2d.js +70 -0
  428. package/dist/world2d/components-2d.d.ts +47 -0
  429. package/dist/world2d/components-2d.d.ts.map +1 -0
  430. package/dist/world2d/components-2d.js +77 -0
  431. package/dist/world2d/index.d.ts +34 -0
  432. package/dist/world2d/index.d.ts.map +1 -0
  433. package/dist/world2d/index.js +32 -0
  434. package/dist/world2d/ingest-iframe-2d.d.ts +82 -0
  435. package/dist/world2d/ingest-iframe-2d.d.ts.map +1 -0
  436. package/dist/world2d/ingest-iframe-2d.js +166 -0
  437. package/dist/world2d/ingest2d.d.ts +97 -0
  438. package/dist/world2d/ingest2d.d.ts.map +1 -0
  439. package/dist/world2d/ingest2d.js +40 -0
  440. package/dist/world2d/physics2d-registry.d.ts +24 -0
  441. package/dist/world2d/physics2d-registry.d.ts.map +1 -0
  442. package/dist/world2d/physics2d-registry.js +38 -0
  443. package/dist/world2d/pixi-game-adapter.d.ts +107 -0
  444. package/dist/world2d/pixi-game-adapter.d.ts.map +1 -0
  445. package/dist/world2d/pixi-game-adapter.js +211 -0
  446. package/dist/world2d/pixi-surface.d.ts +39 -0
  447. package/dist/world2d/pixi-surface.d.ts.map +1 -0
  448. package/dist/world2d/pixi-surface.js +47 -0
  449. package/dist/world2d/scene-capture-2d.d.ts +43 -0
  450. package/dist/world2d/scene-capture-2d.d.ts.map +1 -0
  451. package/dist/world2d/scene-capture-2d.js +92 -0
  452. package/dist/world2d/scene2d-loader.d.ts +27 -0
  453. package/dist/world2d/scene2d-loader.d.ts.map +1 -0
  454. package/dist/world2d/scene2d-loader.js +274 -0
  455. package/dist/world2d/schema/entity2d.d.ts +102 -0
  456. package/dist/world2d/schema/entity2d.d.ts.map +1 -0
  457. package/dist/world2d/schema/entity2d.js +119 -0
  458. package/dist/world2d/schema/physics2d.d.ts +46 -0
  459. package/dist/world2d/schema/physics2d.d.ts.map +1 -0
  460. package/dist/world2d/schema/physics2d.js +45 -0
  461. package/dist/world2d/schema/sprite.d.ts +42 -0
  462. package/dist/world2d/schema/sprite.d.ts.map +1 -0
  463. package/dist/world2d/schema/sprite.js +63 -0
  464. package/dist/world2d/schema/tilemap.d.ts +15 -0
  465. package/dist/world2d/schema/tilemap.d.ts.map +1 -0
  466. package/dist/world2d/schema/tilemap.js +19 -0
  467. package/dist/world2d/schema/tuples2d.d.ts +20 -0
  468. package/dist/world2d/schema/tuples2d.d.ts.map +1 -0
  469. package/dist/world2d/schema/tuples2d.js +19 -0
  470. package/dist/world2d/system-adapters-2d.d.ts +16 -0
  471. package/dist/world2d/system-adapters-2d.d.ts.map +1 -0
  472. package/dist/world2d/system-adapters-2d.js +37 -0
  473. package/dist/world2d/transform-writer-2d.d.ts +16 -0
  474. package/dist/world2d/transform-writer-2d.d.ts.map +1 -0
  475. package/dist/world2d/transform-writer-2d.js +22 -0
  476. package/dist/world2d/types.d.ts +53 -0
  477. package/dist/world2d/types.d.ts.map +1 -0
  478. package/dist/world2d/types.js +1 -0
  479. package/package.json +18 -4
  480. package/src/adapter/authoring.ts +10 -0
  481. package/src/adapter/first-party-systems.ts +23 -34
  482. package/src/adapter/index.ts +1 -3
  483. package/src/adapter/system-adapter.ts +15 -22
  484. package/src/adapter/vgai-scene-game-adapter.ts +5 -14
  485. package/src/animation/anim-graph-types.ts +12 -43
  486. package/src/animation/animation-clock.ts +479 -0
  487. package/src/animation/camera-ownership.ts +467 -0
  488. package/src/animation/cinematic-cues.ts +451 -0
  489. package/src/animation/clip-map.ts +41 -0
  490. package/src/animation/gsap-registration.ts +184 -0
  491. package/src/animation/theatre-clock-binding.ts +111 -0
  492. package/src/animation/theatre-director.ts +347 -0
  493. package/src/animation/theatre-object-binding.ts +661 -0
  494. package/src/animation/xstate-animation-binding.ts +398 -0
  495. package/src/animation/xstate-animation-meta.ts +282 -0
  496. package/src/audio/index.ts +39 -7
  497. package/src/audio/tone-clock-binding.ts +98 -0
  498. package/src/audio/tone-context.ts +129 -0
  499. package/src/audio/tone-offline-render.ts +167 -0
  500. package/src/audio/wav-encode.ts +119 -0
  501. package/src/core/game-loop.ts +17 -0
  502. package/src/core/types.ts +13 -0
  503. package/src/data/data-asset.ts +167 -0
  504. package/src/data/data-check-core.ts +242 -0
  505. package/src/data/data-ref.ts +145 -0
  506. package/src/data/vite-plugin-data.ts +290 -0
  507. package/src/index.ts +48 -0
  508. package/src/input/input-manager.ts +1206 -32
  509. package/src/input/input-types.ts +155 -3
  510. package/src/input/prompt-labels.ts +122 -0
  511. package/src/input/rebind-controller.ts +105 -0
  512. package/src/input/schema.ts +206 -52
  513. package/src/react/use-data.ts +114 -0
  514. package/src/react/use-selection.tsx +135 -0
  515. package/src/runtime/create-runtime.ts +30 -9
  516. package/src/runtime/render-audio-control.ts +168 -0
  517. package/src/runtime/render-control.ts +522 -0
  518. package/src/runtime/render-seed.ts +79 -0
  519. package/src/runtime/types.ts +0 -5
  520. package/src/scene/asset-loaders.ts +10 -36
  521. package/src/scene/asset-paths.ts +0 -2
  522. package/src/scene/asset-ref-check.ts +248 -0
  523. package/src/scene/parse.ts +133 -0
  524. package/src/scene/scene-loader.ts +81 -96
  525. package/src/scene/schema/animation.ts +30 -79
  526. package/src/scene/schema/entity.ts +20 -0
  527. package/src/scene/schema/index.ts +2 -12
  528. package/src/scene/user-data.ts +8 -9
  529. package/src/setup/setup-renderer.ts +9 -2
  530. package/src/tools/define-tool.ts +152 -0
  531. package/src/animation/anim-graph.ts +0 -406
  532. package/src/animation/anim-system.ts +0 -28
  533. package/src/animation/property-track.ts +0 -178
  534. package/src/animation/schema.ts +0 -204
  535. package/src/audio/ambient.ts +0 -300
  536. package/src/audio/impacts.ts +0 -212
  537. package/src/audio/movement.ts +0 -140
  538. package/src/audio/musical.ts +0 -200
  539. package/src/audio/ui-sounds.ts +0 -171
  540. package/src/audio/vehicle.ts +0 -235
  541. package/src/audio/weapons.ts +0 -152
@@ -0,0 +1,357 @@
1
+ import { z } from 'zod';
2
+ import { buildRenderingZod } from '../../render/render-features';
3
+ export const SceneNavigationSchema = z
4
+ .object({
5
+ cellSize: z
6
+ .number()
7
+ .optional()
8
+ .describe('Navmesh voxel cell size (smaller = more detail, slower bake)'),
9
+ cellHeight: z.number().optional().describe('Navmesh voxel cell height'),
10
+ walkableSlopeAngle: z
11
+ .number()
12
+ .optional()
13
+ .describe('Maximum slope angle (degrees) agents can walk on'),
14
+ walkableHeight: z
15
+ .number()
16
+ .optional()
17
+ .describe('Minimum ceiling height for walkable areas (in voxels)'),
18
+ walkableClimb: z
19
+ .number()
20
+ .optional()
21
+ .describe('Maximum step height agents can climb (in voxels)'),
22
+ walkableRadius: z.number().optional().describe('Agent radius for navmesh erosion (in voxels)'),
23
+ maxEdgeLen: z.number().optional().describe('Maximum contour edge length in the navmesh'),
24
+ maxSimplificationError: z
25
+ .number()
26
+ .optional()
27
+ .describe('Maximum deviation for navmesh edge simplification'),
28
+ minRegionArea: z
29
+ .number()
30
+ .optional()
31
+ .describe('Minimum region area — smaller regions are removed'),
32
+ mergeRegionArea: z
33
+ .number()
34
+ .optional()
35
+ .describe('Regions smaller than this are merged with neighbors'),
36
+ })
37
+ .describe('Recast navigation mesh bake parameters');
38
+ export const SceneToneMappingSchema = z
39
+ .object({
40
+ mode: z
41
+ .enum(['none', 'linear', 'reinhard', 'cineon', 'aces', 'agx'])
42
+ .optional()
43
+ .describe('Tone mapping operator'),
44
+ exposure: z.number().optional().describe('Exposure level'),
45
+ })
46
+ .describe('Tone mapping configuration');
47
+ export const ScenePostProcessingSchema = z
48
+ .object({
49
+ // ── Bloom & Vignette ──────────────────────────────────────────────────
50
+ bloom: z
51
+ .object({
52
+ enabled: z.boolean().optional().describe('Enable bloom effect'),
53
+ intensity: z.number().optional().describe('Bloom intensity multiplier'),
54
+ luminanceThreshold: z.number().optional().describe('Minimum luminance to trigger bloom'),
55
+ luminanceSmoothing: z
56
+ .number()
57
+ .optional()
58
+ .describe('Smoothing applied to luminance threshold'),
59
+ })
60
+ .optional()
61
+ .describe('Bloom glow effect'),
62
+ vignette: z
63
+ .object({
64
+ enabled: z.boolean().optional().describe('Enable vignette effect'),
65
+ darkness: z.number().optional().describe('Vignette darkness intensity'),
66
+ offset: z.number().optional().describe('Vignette offset from center'),
67
+ })
68
+ .optional()
69
+ .describe('Screen-edge darkening effect'),
70
+ // ── Color adjustments ─────────────────────────────────────────────────
71
+ brightnessContrast: z
72
+ .object({
73
+ enabled: z.boolean().optional().describe('Enable brightness/contrast adjustment'),
74
+ brightness: z.number().optional().describe('Brightness adjustment (-1 to 1)'),
75
+ contrast: z.number().optional().describe('Contrast adjustment (-1 to 1)'),
76
+ })
77
+ .optional()
78
+ .describe('Brightness and contrast color adjustment'),
79
+ hueSaturation: z
80
+ .object({
81
+ enabled: z.boolean().optional().describe('Enable hue/saturation adjustment'),
82
+ hue: z.number().optional().describe('Hue rotation in radians'),
83
+ saturation: z.number().optional().describe('Saturation adjustment (-1 to 1)'),
84
+ })
85
+ .optional()
86
+ .describe('Hue rotation and saturation color adjustment'),
87
+ sepia: z
88
+ .object({
89
+ enabled: z.boolean().optional().describe('Enable sepia tone'),
90
+ intensity: z.number().optional().describe('Sepia effect intensity (0 to 1)'),
91
+ })
92
+ .optional()
93
+ .describe('Warm sepia tone for vintage photograph look'),
94
+ colorDepth: z
95
+ .object({
96
+ enabled: z.boolean().optional().describe('Enable color depth reduction'),
97
+ bits: z.number().optional().describe('Number of color bits per channel (1–16)'),
98
+ })
99
+ .optional()
100
+ .describe('Reduce color bit depth for posterized/banded look'),
101
+ // ── Lens effects ──────────────────────────────────────────────────────
102
+ chromaticAberration: z
103
+ .object({
104
+ enabled: z.boolean().optional().describe('Enable chromatic aberration'),
105
+ offsetX: z.number().optional().describe('Horizontal color fringe offset'),
106
+ offsetY: z.number().optional().describe('Vertical color fringe offset'),
107
+ radialModulation: z.boolean().optional().describe('Increase effect toward screen edges'),
108
+ modulationOffset: z.number().optional().describe('Radial modulation offset from center'),
109
+ })
110
+ .optional()
111
+ .describe('Lens chromatic aberration (color fringing at screen edges)'),
112
+ lensDistortion: z
113
+ .object({
114
+ enabled: z.boolean().optional().describe('Enable lens distortion'),
115
+ distortionX: z.number().optional().describe('Horizontal barrel/pincushion distortion'),
116
+ distortionY: z.number().optional().describe('Vertical barrel/pincushion distortion'),
117
+ focalLengthX: z.number().optional().describe('Horizontal focal length'),
118
+ focalLengthY: z.number().optional().describe('Vertical focal length'),
119
+ skew: z.number().optional().describe('Lens skew angle'),
120
+ })
121
+ .optional()
122
+ .describe('Barrel/pincushion lens distortion'),
123
+ depthOfField: z
124
+ .object({
125
+ enabled: z.boolean().optional().describe('Enable depth of field'),
126
+ worldFocusDistance: z.number().optional().describe('Focus distance in world units'),
127
+ worldFocusRange: z.number().optional().describe('Focus range in world units'),
128
+ bokehScale: z.number().optional().describe('Bokeh blur scale'),
129
+ focalLength: z.number().optional().describe('Camera focal length in mm'),
130
+ })
131
+ .optional()
132
+ .describe('Physically-based depth of field with bokeh blur'),
133
+ tiltShift: z
134
+ .object({
135
+ enabled: z.boolean().optional().describe('Enable tilt-shift effect'),
136
+ offset: z.number().optional().describe('Focus band offset from center'),
137
+ rotation: z.number().optional().describe('Focus band rotation in radians'),
138
+ focusArea: z.number().optional().describe('Focus band width (0–1)'),
139
+ feather: z.number().optional().describe('Blur falloff smoothness'),
140
+ })
141
+ .optional()
142
+ .describe('Tilt-shift miniature-world blur effect'),
143
+ // ── Film / retro ──────────────────────────────────────────────────────
144
+ noise: z
145
+ .object({
146
+ enabled: z.boolean().optional().describe('Enable film grain noise'),
147
+ premultiply: z
148
+ .boolean()
149
+ .optional()
150
+ .describe('Multiply noise with input color instead of adding'),
151
+ })
152
+ .optional()
153
+ .describe('Random per-pixel noise overlay (film grain)'),
154
+ scanline: z
155
+ .object({
156
+ enabled: z.boolean().optional().describe('Enable scanline overlay'),
157
+ density: z.number().optional().describe('Number of scanlines across screen height'),
158
+ })
159
+ .optional()
160
+ .describe('Horizontal scanline overlay (CRT monitor look)'),
161
+ dotScreen: z
162
+ .object({
163
+ enabled: z.boolean().optional().describe('Enable dot screen halftone'),
164
+ angle: z.number().optional().describe('Pattern angle in radians'),
165
+ scale: z.number().optional().describe('Pattern dot scale'),
166
+ })
167
+ .optional()
168
+ .describe('Halftone dot pattern (newspaper/comic look)'),
169
+ grid: z
170
+ .object({
171
+ enabled: z.boolean().optional().describe('Enable grid overlay'),
172
+ scale: z.number().optional().describe('Grid cell scale'),
173
+ lineWidth: z.number().optional().describe('Grid line width'),
174
+ })
175
+ .optional()
176
+ .describe('Visible grid pattern overlay'),
177
+ pixelation: z
178
+ .object({
179
+ enabled: z.boolean().optional().describe('Enable pixelation'),
180
+ granularity: z.number().optional().describe('Pixel size (higher = more pixelated)'),
181
+ })
182
+ .optional()
183
+ .describe('Reduce resolution for pixel-art / mosaic effect'),
184
+ glitch: z
185
+ .object({
186
+ enabled: z.boolean().optional().describe('Enable digital glitch effect'),
187
+ delayX: z.number().optional().describe('Minimum delay between glitches (seconds)'),
188
+ delayY: z.number().optional().describe('Maximum delay between glitches (seconds)'),
189
+ durationX: z.number().optional().describe('Minimum glitch duration (seconds)'),
190
+ durationY: z.number().optional().describe('Maximum glitch duration (seconds)'),
191
+ strengthX: z.number().optional().describe('Minimum glitch strength'),
192
+ strengthY: z.number().optional().describe('Maximum glitch strength'),
193
+ columns: z.number().optional().describe('Number of glitch columns'),
194
+ ratio: z.number().optional().describe('Glitch ratio (0–1)'),
195
+ })
196
+ .optional()
197
+ .describe('Random digital glitch artifacts (block displacement, color shifting)'),
198
+ // ── Distortion ────────────────────────────────────────────────────────
199
+ shockWave: z
200
+ .object({
201
+ enabled: z.boolean().optional().describe('Enable shock wave distortion'),
202
+ speed: z.number().optional().describe('Wave propagation speed'),
203
+ maxRadius: z.number().optional().describe('Maximum wave radius'),
204
+ waveSize: z.number().optional().describe('Width of the distortion wave'),
205
+ amplitude: z.number().optional().describe('Distortion strength'),
206
+ positionX: z.number().optional().describe('Wave origin X in world space'),
207
+ positionY: z.number().optional().describe('Wave origin Y in world space'),
208
+ positionZ: z.number().optional().describe('Wave origin Z in world space'),
209
+ })
210
+ .optional()
211
+ .describe('Expanding spherical distortion wave from a point'),
212
+ // ── Anti-aliasing ─────────────────────────────────────────────────────
213
+ smaa: z
214
+ .object({
215
+ enabled: z.boolean().optional().describe('Enable SMAA anti-aliasing'),
216
+ preset: z
217
+ .enum(['low', 'medium', 'high', 'ultra'])
218
+ .optional()
219
+ .describe('Quality preset (higher = better quality, more cost)'),
220
+ })
221
+ .optional()
222
+ .describe('Subpixel Morphological Anti-Aliasing'),
223
+ // ── Ambient occlusion ─────────────────────────────────────────────────
224
+ ssao: z
225
+ .object({
226
+ enabled: z.boolean().optional().describe('Enable screen-space ambient occlusion'),
227
+ radius: z.number().optional().describe('Occlusion sampling radius'),
228
+ intensity: z.number().optional().describe('Occlusion intensity multiplier'),
229
+ bias: z.number().optional().describe('Depth bias to reduce self-occlusion artifacts'),
230
+ samples: z.number().optional().describe('Number of occlusion samples per pixel'),
231
+ rings: z.number().optional().describe('Number of spiral sample rings'),
232
+ fade: z.number().optional().describe('Distance at which occlusion fades out'),
233
+ color: z.string().optional().describe('Occlusion tint color as CSS hex'),
234
+ })
235
+ .optional()
236
+ .describe('Screen-space ambient occlusion (darken creases and crevices)'),
237
+ n8ao: z
238
+ .object({
239
+ enabled: z.boolean().optional().describe('Enable N8AO ambient occlusion'),
240
+ aoSamples: z.number().optional().describe('Number of AO samples (default 16)'),
241
+ aoRadius: z.number().optional().describe('AO sampling radius in world units'),
242
+ intensity: z.number().optional().describe('AO intensity multiplier'),
243
+ denoiseSamples: z.number().optional().describe('Number of denoise samples'),
244
+ denoiseRadius: z.number().optional().describe('Denoise blur radius'),
245
+ distanceFalloff: z.number().optional().describe('AO distance falloff'),
246
+ screenSpaceRadius: z
247
+ .boolean()
248
+ .optional()
249
+ .describe('Use screen-space radius instead of world-space'),
250
+ color: z.string().optional().describe('AO tint color as CSS hex'),
251
+ halfRes: z.boolean().optional().describe('Render AO at half resolution for performance'),
252
+ })
253
+ .optional()
254
+ .describe('High-quality ambient occlusion (N8AO — alternative to SSAO)'),
255
+ // ── Entity-referencing effects ────────────────────────────────────────
256
+ godRays: z
257
+ .object({
258
+ enabled: z.boolean().optional().describe('Enable god rays'),
259
+ sourceEntity: z.string().optional().describe('Entity ID of the light source mesh'),
260
+ density: z.number().optional().describe('Ray density'),
261
+ decay: z.number().optional().describe('Ray intensity decay along distance'),
262
+ weight: z.number().optional().describe('Ray weight / brightness'),
263
+ exposure: z.number().optional().describe('Overall god ray exposure'),
264
+ samples: z.number().optional().describe('Number of ray-march samples'),
265
+ })
266
+ .optional()
267
+ .describe('Volumetric light shafts from a light source entity'),
268
+ outline: z
269
+ .object({
270
+ enabled: z.boolean().optional().describe('Enable outline effect'),
271
+ tags: z.array(z.string()).optional().describe('Entity tags to outline'),
272
+ edgeStrength: z.number().optional().describe('Outline edge thickness / strength'),
273
+ pulseSpeed: z.number().optional().describe('Outline pulse animation speed (0 = no pulse)'),
274
+ visibleEdgeColor: z.string().optional().describe('Color of visible edges as CSS hex'),
275
+ hiddenEdgeColor: z
276
+ .string()
277
+ .optional()
278
+ .describe('Color of hidden/occluded edges as CSS hex'),
279
+ xRay: z.boolean().optional().describe('Show outline through occluding objects'),
280
+ })
281
+ .optional()
282
+ .describe('Highlight entities matching tags with colored outlines'),
283
+ // ── Screen-space reflections & GI (realism-effects) ───────────────────
284
+ ssr: z
285
+ .object({
286
+ enabled: z.boolean().optional().describe('Enable screen-space reflections'),
287
+ intensity: z.number().optional().describe('Reflection intensity'),
288
+ exponent: z.number().optional().describe('Reflection falloff exponent'),
289
+ distance: z.number().optional().describe('Maximum reflection ray distance'),
290
+ thickness: z.number().optional().describe('Depth thickness for hit testing'),
291
+ maxRoughness: z.number().optional().describe('Maximum roughness for reflections (0–1)'),
292
+ })
293
+ .optional()
294
+ .describe('Screen-space reflections for reflective/glossy surfaces'),
295
+ ssgi: z
296
+ .object({
297
+ enabled: z.boolean().optional().describe('Enable screen-space global illumination'),
298
+ intensity: z.number().optional().describe('Indirect light intensity'),
299
+ distance: z.number().optional().describe('Maximum GI ray distance'),
300
+ thickness: z.number().optional().describe('Depth thickness for hit testing'),
301
+ maxRoughness: z.number().optional().describe('Maximum roughness for GI (0–1)'),
302
+ })
303
+ .optional()
304
+ .describe('Screen-space global illumination (indirect lighting bounce)'),
305
+ motionBlur: z
306
+ .object({
307
+ enabled: z.boolean().optional().describe('Enable motion blur'),
308
+ intensity: z.number().optional().describe('Motion blur intensity'),
309
+ jitter: z.number().optional().describe('Sample jitter amount'),
310
+ samples: z.number().optional().describe('Number of blur samples'),
311
+ })
312
+ .optional()
313
+ .describe('Per-object motion blur from camera and object movement'),
314
+ })
315
+ .describe('Post-processing effects');
316
+ export const ScenePhysicsSettingsSchema = z
317
+ .object({
318
+ collisionLayers: z
319
+ .array(z.string())
320
+ .optional()
321
+ .describe('Named collision layers (up to 16). Index = bit position in collision bitmasks'),
322
+ })
323
+ .describe('Physics world settings');
324
+ export const SceneEnvironmentSchema = z
325
+ .object({
326
+ background: z.string().optional().describe('Background color as CSS hex string'),
327
+ ambient: z
328
+ .object({
329
+ color: z.string().describe('Ambient light color'),
330
+ intensity: z.number().describe('Ambient light intensity'),
331
+ })
332
+ .optional()
333
+ .describe('Global ambient light'),
334
+ fog: z
335
+ .object({
336
+ type: z.enum(['linear', 'exponential']).describe('Fog falloff type'),
337
+ color: z.string().describe('Fog color'),
338
+ near: z.number().optional().describe('Fog start distance (linear only)'),
339
+ far: z.number().optional().describe('Fog end distance (linear only)'),
340
+ density: z.number().optional().describe('Fog density (exponential only)'),
341
+ })
342
+ .optional()
343
+ .describe('Distance fog settings'),
344
+ skybox: z.string().optional().describe('Path to HDR/EXR skybox environment map'),
345
+ envMapIntensity: z
346
+ .number()
347
+ .optional()
348
+ .describe('Environment map reflection intensity multiplier'),
349
+ toneMapping: SceneToneMappingSchema.optional().describe('Tone mapping configuration'),
350
+ postProcessing: ScenePostProcessingSchema.optional().describe('Post-processing effects (bloom, vignette)'),
351
+ navigation: SceneNavigationSchema.optional().describe('Navigation mesh bake settings'),
352
+ physics: ScenePhysicsSettingsSchema.optional().describe('Physics world settings'),
353
+ rendering: buildRenderingZod()
354
+ .optional()
355
+ .describe('Scene-level render feature toggles (auto-batching, culling, LOD, shadows, etc.). Omit a field to inherit the engine default. Derived from the render-feature registry.'),
356
+ })
357
+ .describe('Scene-level environment and rendering settings');
@@ -0,0 +1,39 @@
1
+ export type { SceneAnimation } from './animation';
2
+ export { SceneAnimationSchema } from './animation';
3
+ export type { SceneAudio } from './audio';
4
+ export { SceneAudioSchema } from './audio';
5
+ export type { SceneCamera } from './camera';
6
+ export { SceneCameraSchema } from './camera';
7
+ export type { SceneCollider } from './collider';
8
+ export { SceneColliderSchema } from './collider';
9
+ export type { SceneEntity } from './entity';
10
+ export { SceneEntitySchema } from './entity';
11
+ export type { EntityRef } from './entity-ref';
12
+ export { EntityRefSchema, isEntityRefSchema } from './entity-ref';
13
+ export type { SceneEnvironment, SceneNavigation, ScenePhysicsSettings, ScenePostProcessing, SceneToneMapping, } from './environment';
14
+ export { SceneEnvironmentSchema, SceneNavigationSchema, ScenePhysicsSettingsSchema, ScenePostProcessingSchema, SceneToneMappingSchema, } from './environment';
15
+ export type { InstancesFile } from './instances';
16
+ export { InstancesFileSchema } from './instances';
17
+ export type { SceneJoint } from './joint';
18
+ export { SceneJointSchema } from './joint';
19
+ export type { SceneLight } from './light';
20
+ export { SceneLightSchema } from './light';
21
+ export type { MaterialFile, SceneMaterial } from './material';
22
+ export { MaterialFileSchema, SceneMaterialSchema } from './material';
23
+ export type { SceneMesh } from './mesh';
24
+ export { SceneMeshSchema } from './mesh';
25
+ export type { SceneParticles } from './particles';
26
+ export { SceneParticlesOverrideSchema, SceneParticlesSchema } from './particles';
27
+ export type { ScenePhysics } from './physics';
28
+ export { ScenePhysicsSchema } from './physics';
29
+ export type { PrefabFile, SceneFile } from './scene-file';
30
+ export { mergePrefabInstance, PrefabFileSchema, SceneFileSchema } from './scene-file';
31
+ export type { SceneShadow } from './shadow';
32
+ export { SceneShadowSchema } from './shadow';
33
+ export type { SceneSpline } from './spline';
34
+ export { SceneSplineOverrideSchema, SceneSplineSchema } from './spline';
35
+ export type { Quat, SceneTransform, Vec3 } from './tuples';
36
+ export { QuatSchema, TransformSchema, Vec3Schema } from './tuples';
37
+ export type { UIAnimatableProperty, UIAnimation, UIBinding, UIEasing, UIKeyframe, UILayout, UINode, UINodeKind, UIPrefabFile, UIRoot, UIStyle, UITheme, UIThemeFile, UITrack, } from './ui';
38
+ export { UIAnimatablePropertySchema, UIAnimationSchema, UIBindingSchema, UIEasingSchema, UIKeyframeSchema, UILayoutSchema, UINodeKindSchema, UINodeSchema, UIPrefabFileSchema, UIRootSchema, UIStateStylesSchema, UIStyleSchema, UIThemeFileSchema, UIThemeSchema, UITrackSchema, } from './ui';
39
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scene/schema/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACrE,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtF,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAExE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEnE,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,EACZ,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,OAAO,GACR,MAAM,MAAM,CAAC;AACd,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,GACd,MAAM,MAAM,CAAC"}
@@ -0,0 +1,20 @@
1
+ // Zod schemas
2
+ export { SceneAnimationSchema } from './animation';
3
+ export { SceneAudioSchema } from './audio';
4
+ export { SceneCameraSchema } from './camera';
5
+ export { SceneColliderSchema } from './collider';
6
+ export { SceneEntitySchema } from './entity';
7
+ export { EntityRefSchema, isEntityRefSchema } from './entity-ref';
8
+ export { SceneEnvironmentSchema, SceneNavigationSchema, ScenePhysicsSettingsSchema, ScenePostProcessingSchema, SceneToneMappingSchema, } from './environment';
9
+ export { InstancesFileSchema } from './instances';
10
+ export { SceneJointSchema } from './joint';
11
+ export { SceneLightSchema } from './light';
12
+ export { MaterialFileSchema, SceneMaterialSchema } from './material';
13
+ export { SceneMeshSchema } from './mesh';
14
+ export { SceneParticlesOverrideSchema, SceneParticlesSchema } from './particles';
15
+ export { ScenePhysicsSchema } from './physics';
16
+ export { mergePrefabInstance, PrefabFileSchema, SceneFileSchema } from './scene-file';
17
+ export { SceneShadowSchema } from './shadow';
18
+ export { SceneSplineOverrideSchema, SceneSplineSchema } from './spline';
19
+ export { QuatSchema, TransformSchema, Vec3Schema } from './tuples';
20
+ export { UIAnimatablePropertySchema, UIAnimationSchema, UIBindingSchema, UIEasingSchema, UIKeyframeSchema, UILayoutSchema, UINodeKindSchema, UINodeSchema, UIPrefabFileSchema, UIRootSchema, UIStateStylesSchema, UIStyleSchema, UIThemeFileSchema, UIThemeSchema, UITrackSchema, } from './ui';
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * `.instances.json` — a declarative, authored-data instance-transform asset
4
+ * (F3, docs/VSCN-STRUCTURAL-GAPS-DESIGN.md). Referenced by `mesh.instances`
5
+ * as the data counterpart to `mesh.instancer` (a code-registered generator):
6
+ * a bare array of 10-number tuples, one per instance, each
7
+ * `[posX,posY,posZ, quatX,quatY,quatZ,quatW, scaleX,scaleY,scaleZ]`. The
8
+ * scene loader fetches+parses this file and renders it as one
9
+ * `THREE.InstancedMesh` (one draw call) — bulk transform data is referenced
10
+ * as an asset, never inlined into the vscn (keeps vscn thin — gate G4).
11
+ */
12
+ export declare const InstancesFileSchema: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13
+ export type InstancesFile = z.infer<typeof InstancesFileSchema>;
14
+ //# sourceMappingURL=instances.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../../src/scene/schema/instances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,kKAoB7B,CAAC;AAEJ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * `.instances.json` — a declarative, authored-data instance-transform asset
4
+ * (F3, docs/VSCN-STRUCTURAL-GAPS-DESIGN.md). Referenced by `mesh.instances`
5
+ * as the data counterpart to `mesh.instancer` (a code-registered generator):
6
+ * a bare array of 10-number tuples, one per instance, each
7
+ * `[posX,posY,posZ, quatX,quatY,quatZ,quatW, scaleX,scaleY,scaleZ]`. The
8
+ * scene loader fetches+parses this file and renders it as one
9
+ * `THREE.InstancedMesh` (one draw call) — bulk transform data is referenced
10
+ * as an asset, never inlined into the vscn (keeps vscn thin — gate G4).
11
+ */
12
+ export const InstancesFileSchema = z
13
+ .array(z.tuple([
14
+ z.number().describe('posX'),
15
+ z.number().describe('posY'),
16
+ z.number().describe('posZ'),
17
+ z.number().describe('quatX'),
18
+ z.number().describe('quatY'),
19
+ z.number().describe('quatZ'),
20
+ z.number().describe('quatW'),
21
+ z.number().describe('scaleX'),
22
+ z.number().describe('scaleY'),
23
+ z.number().describe('scaleZ'),
24
+ ]))
25
+ .describe('Instance-transform asset (.instances.json): an array of 10-number tuples ' +
26
+ '[posX,posY,posZ, quatX,quatY,quatZ,quatW, scaleX,scaleY,scaleZ], one per instance. ' +
27
+ 'Referenced by a mesh via `mesh.instances` and rendered as a single THREE.InstancedMesh ' +
28
+ '(one draw call).');
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export declare const SceneJointSchema: z.ZodObject<{
3
+ type: z.ZodEnum<{
4
+ fixed: "fixed";
5
+ revolute: "revolute";
6
+ prismatic: "prismatic";
7
+ spherical: "spherical";
8
+ spring: "spring";
9
+ }>;
10
+ target: z.ZodString;
11
+ anchor: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
12
+ targetAnchor: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
13
+ axis: z.ZodOptional<z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>>;
14
+ limits: z.ZodOptional<z.ZodObject<{
15
+ min: z.ZodNumber;
16
+ max: z.ZodNumber;
17
+ }, z.core.$strip>>;
18
+ stiffness: z.ZodOptional<z.ZodNumber>;
19
+ damping: z.ZodOptional<z.ZodNumber>;
20
+ restLength: z.ZodOptional<z.ZodNumber>;
21
+ }, z.core.$strip>;
22
+ export type SceneJoint = z.infer<typeof SceneJointSchema>;
23
+ //# sourceMappingURL=joint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joint.d.ts","sourceRoot":"","sources":["../../../src/scene/schema/joint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;iBAoB6B,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { Vec3Schema } from './tuples';
3
+ export const SceneJointSchema = z
4
+ .object({
5
+ type: z
6
+ .enum(['fixed', 'revolute', 'prismatic', 'spherical', 'spring'])
7
+ .describe('Joint constraint type'),
8
+ target: z.string().describe('Entity ID of the body this joint connects to'),
9
+ anchor: Vec3Schema.optional().describe('Local anchor point on this body'),
10
+ targetAnchor: Vec3Schema.optional().describe('Local anchor point on the target body'),
11
+ axis: Vec3Schema.optional().describe('Rotation/slide axis for revolute and prismatic joints'),
12
+ limits: z
13
+ .object({
14
+ min: z.number().describe('Minimum angle (degrees) or distance'),
15
+ max: z.number().describe('Maximum angle (degrees) or distance'),
16
+ })
17
+ .optional()
18
+ .describe('Angle or distance limits for revolute/prismatic joints'),
19
+ stiffness: z.number().optional().describe('Spring stiffness coefficient'),
20
+ damping: z.number().optional().describe('Spring damping coefficient'),
21
+ restLength: z.number().optional().describe('Spring rest length'),
22
+ })
23
+ .describe('Physics joint constraint between two bodies');
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ export declare const SceneLightSchema: z.ZodObject<{
3
+ type: z.ZodEnum<{
4
+ directional: "directional";
5
+ point: "point";
6
+ spot: "spot";
7
+ hemisphere: "hemisphere";
8
+ area: "area";
9
+ }>;
10
+ color: z.ZodOptional<z.ZodString>;
11
+ intensity: z.ZodOptional<z.ZodNumber>;
12
+ groundColor: z.ZodOptional<z.ZodString>;
13
+ distance: z.ZodOptional<z.ZodNumber>;
14
+ angle: z.ZodOptional<z.ZodNumber>;
15
+ penumbra: z.ZodOptional<z.ZodNumber>;
16
+ width: z.ZodOptional<z.ZodNumber>;
17
+ height: z.ZodOptional<z.ZodNumber>;
18
+ }, z.core.$strip>;
19
+ /** Partial schema for prefab instance overrides (type not required). */
20
+ export declare const SceneLightOverrideSchema: z.ZodObject<{
21
+ type: z.ZodOptional<z.ZodEnum<{
22
+ directional: "directional";
23
+ point: "point";
24
+ spot: "spot";
25
+ hemisphere: "hemisphere";
26
+ area: "area";
27
+ }>>;
28
+ color: z.ZodOptional<z.ZodOptional<z.ZodString>>;
29
+ intensity: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
30
+ groundColor: z.ZodOptional<z.ZodOptional<z.ZodString>>;
31
+ distance: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
32
+ angle: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
33
+ penumbra: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
34
+ width: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
35
+ height: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
36
+ }, z.core.$strip>;
37
+ export type SceneLight = z.infer<typeof SceneLightSchema>;
38
+ //# sourceMappingURL=light.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../../src/scene/schema/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAGW,CAAC;AAEzC,wEAAwE;AACxE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;iBAA2B,CAAC;AAEjE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ const SceneLightBase = z.object({
3
+ type: z.enum(['directional', 'point', 'spot', 'hemisphere', 'area']).describe('Light type'),
4
+ color: z.string().optional().describe('Light color as CSS hex string'),
5
+ intensity: z.number().optional().describe('Light intensity multiplier'),
6
+ groundColor: z.string().optional().describe('Ground color for hemisphere lights'),
7
+ distance: z
8
+ .number()
9
+ .optional()
10
+ .describe('Maximum range of the light. 0 = infinite (point/spot only)'),
11
+ angle: z.number().optional().describe('Spotlight cone angle in radians (spot only)'),
12
+ penumbra: z.number().optional().describe('Spotlight penumbra softness 0–1 (spot only)'),
13
+ width: z
14
+ .number()
15
+ .optional()
16
+ .describe('Area light width (area only). RectAreaLight has NO shadow support and only affects ' +
17
+ 'Standard/Physical materials — degrades loudly, not silently.'),
18
+ height: z
19
+ .number()
20
+ .optional()
21
+ .describe('Area light height (area only). RectAreaLight has NO shadow support and only affects ' +
22
+ 'Standard/Physical materials — degrades loudly, not silently.'),
23
+ });
24
+ export const SceneLightSchema = SceneLightBase.refine((l) => l.type !== 'spot' || l.angle === undefined || l.angle > 0, { message: 'Spot light angle must be positive' }).describe('Light source configuration');
25
+ /** Partial schema for prefab instance overrides (type not required). */
26
+ export const SceneLightOverrideSchema = SceneLightBase.partial();