@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,235 @@
1
+ /**
2
+ * D4 — the Theatre "Director" convention (spec §10 D4, §5.3, §3.2).
3
+ *
4
+ * A `Director` is an ordinary Theatre Sheet Object, authored with Theatre's
5
+ * NATIVE `types.stringLiteral`/`types.boolean` vocabulary exactly as shown in
6
+ * spec §5.3 — this module never wraps or renames that API. It is a
7
+ * *convention* (a documented, stable shape) plus a thin binding, not a new
8
+ * animation format:
9
+ *
10
+ * ```ts
11
+ * import { types } from '@theatre/core';
12
+ * const director = sheet.object('Director', {
13
+ * activeCamera: types.stringLiteral('wide', { wide: 'wide', close: 'close', gameplay: 'gameplay' }),
14
+ * shot: types.stringLiteral('opening', { opening: 'opening', reveal: 'reveal', ending: 'ending' }),
15
+ * letterbox: types.boolean(false),
16
+ * // extensible: any additional directorial prop is carried through verbatim
17
+ * // as `DirectorState.extras`, e.g.:
18
+ * blendSeconds: types.number(0, { range: [0, Infinity] }),
19
+ * });
20
+ * ```
21
+ *
22
+ * `activeCamera`/`shot`/`letterbox` are required by the convention (spec §10
23
+ * D4 AC: "covers active camera, shot ID, letterbox, and optional directorial
24
+ * properties"). Anything else declared on the same Theatre object (exposure,
25
+ * grade, a blend-duration prop, ...) is an "optional directorial property" —
26
+ * it is read and surfaced verbatim through `DirectorState.extras`, never
27
+ * hardcoded here, which is what keeps the convention extensible without
28
+ * VGAI inventing a schema for it.
29
+ *
30
+ * ## Binding: pull-based, same lockstep pattern as D2/D3
31
+ *
32
+ * `bindDirectorToClock` follows exactly the `theatre-clock-binding.ts` /
33
+ * `theatre-object-binding.ts` pattern: it reads the Director object's
34
+ * pull-based `sheetObject.value` on every canonical-clock crossing (never
35
+ * Theatre's own batched `onValuesChange` push channel — see those modules'
36
+ * doc comments for why that would desync from a synchronous `clock.seek()`).
37
+ * Default phase is `'preRender'`, the same default `bindObject3DTransform`/
38
+ * `bindCameraLens` use, so — via `PHASE_ORDER`, not registration order — the
39
+ * Director always reads a sequence position that `bindClockToTheatreSequence`
40
+ * (registered at `'animation'`, which runs earlier) has already set for this
41
+ * crossing, regardless of which binding a caller sets up first.
42
+ *
43
+ * ## Seeking updates Director without firing gameplay cues
44
+ *
45
+ * This binding has NO concept of "seek" vs "advance" — unlike
46
+ * `CueRunner` (D5, `cinematic-cues.ts`), which deliberately distinguishes the
47
+ * two (via its own `seek()`/`advance()` wrapper methods) so a
48
+ * `firesDuringSeek: false` cue can be skipped on scrub. A Director value is
49
+ * *visual/directorial state*, not a gameplay consequence (spec §3.2: "Theatre
50
+ * carries visual/directorial values; ordinary TypeScript cues carry gameplay
51
+ * consequences") — it should always reflect the clock's current time,
52
+ * however the clock got there. Composing the two on the SAME
53
+ * `AnimationClock` (Director bound directly to the clock; cues bound through
54
+ * a `CueRunner` wrapping the same clock) is exactly what makes "seek updates
55
+ * Director but does not spuriously fire gameplay cues" fall out for free: a
56
+ * `CueRunner.seek(t)` call moves the one shared clock, which both this
57
+ * binding (always reacts) and the cue runner (gates on `firesDuringSeek`)
58
+ * observe on the same crossing. See `theatre-director.test.ts`'s
59
+ * "composes with D5" suite for the proof.
60
+ *
61
+ * ## Camera-ownership hook — the D6 seam
62
+ *
63
+ * Discrete `activeCamera` changes are exactly the moments a *camera
64
+ * ownership* system (D6, not built in this unit) needs to know about, to cut
65
+ * or blend the live gameplay camera to the Director's declared shot. This
66
+ * module does not own or perform any camera mutation — it only DETECTS a
67
+ * change in the Director's `activeCamera` value across successive
68
+ * evaluations and reports it through `onActiveCameraChange`
69
+ * (`CameraOwnershipHook`), a minimal, one-directional seam:
70
+ *
71
+ * - fired once per detected `activeCamera` transition (never for a
72
+ * no-op/unchanged evaluation, including a re-seek to the same time or a
73
+ * seek that stays within the same shot's camera);
74
+ * - the FIRST evaluation after bind is treated as an "assignment", not a
75
+ * "cut from something" — `previousCameraKey` is `null` and `mode` is
76
+ * forced to `'cut'` (there is nothing to blend FROM yet; D6 is expected
77
+ * to use this event to perform its initial camera capture/placement);
78
+ * - `mode`/`blendSeconds` are derived from an optional extra numeric prop on
79
+ * the SAME Director object (`blendSecondsKey`, default `'blendSeconds'`)
80
+ * — a positive value at the moment of the transition means `'blend'`
81
+ * (with that duration), anything else means `'cut'`. This is the "expose
82
+ * enough for a consumer to cut or blend" seam named in the D4 AC; the
83
+ * ACTUAL blend implementation (interpolating the live camera pose over
84
+ * `blendSeconds`) is D6's job, not this module's.
85
+ *
86
+ * ### `blendSeconds` MUST be authored as HOLD keyframes
87
+ *
88
+ * `blendSeconds` is read at the EXACT moment `activeCamera` is detected to
89
+ * change, whatever clock time that happens to land on. If `blendSeconds` is
90
+ * authored as an ordinary interpolating (bezier) track, a transition
91
+ * detected at a time that isn't exactly a keyframe position reads whatever
92
+ * partially-interpolated value the bezier curve has reached AT THAT MOMENT —
93
+ * not the value actually authored FOR that transition. Concretely: a cut
94
+ * authored at `t=3` with `blendSeconds=0`, followed by a blend authored at
95
+ * `t=6` with `blendSeconds=1.5`, makes the track interpolate from `0` to
96
+ * `1.5` across `[3, 6)`. If the `activeCamera` transition at `t=3` is first
97
+ * *observed* at some later non-keyframe time inside that span (e.g. a coarse
98
+ * seek from `t=2` straight to `t=4.5`, skipping past `t=3` without an
99
+ * intermediate evaluation), `blendSeconds` at `t=4.5` reads a nonzero,
100
+ * partially-interpolated value — misreporting an authored CUT as a partial
101
+ * BLEND.
102
+ *
103
+ * The fix is to author `blendSeconds` keyframes as Theatre HOLD keyframes
104
+ * (`connectedRight: false`, optionally also `type: 'hold'`) rather than the
105
+ * default interpolating bezier keyframes. `connectedRight: false` makes
106
+ * Theatre's own sequence evaluator hold the LEFT keyframe's value constant
107
+ * across the entire span up to (not including) the next keyframe, then snap
108
+ * — never partially interpolate. With `blendSeconds` authored this way, its
109
+ * value at ANY time within `[3, 6)` reads exactly `0` (the cut authored at
110
+ * `t=3`), and only reads `1.5` once the clock reaches `t=6` (the blend
111
+ * authored there) — correct regardless of which non-keyframe time a
112
+ * transition happens to first be observed at. See
113
+ * `fixtures/theatre-director-proof.theatre-project.json` (its `blendSeconds`
114
+ * track uses `connectedRight: false` on every keyframe) and
115
+ * `theatre-director.test.ts`'s "playback grid" suite, which proves this by
116
+ * evaluating a fine-grained, non-keyframe-aligned time grid across the whole
117
+ * span and asserting the reported `mode` never drifts from what was
118
+ * authored at the keyframe that produced the transition.
119
+ *
120
+ * D6 will most likely implement `CameraOwnershipHook` as (roughly) "capture
121
+ * gameplay camera pose once on the first `mode: 'cut'` event; on each
122
+ * subsequent event, cut or blend the owned camera to the shot named by
123
+ * `cameraKey`". Nothing above depends on that implementation existing —
124
+ * `onActiveCameraChange` is optional and this module works with no hook
125
+ * attached at all (Director values are still readable via `getState()`).
126
+ *
127
+ * ## Read API (SDK/CLI seam, B5)
128
+ *
129
+ * `readDirectorState` is a pure, synchronous read of whatever a Director
130
+ * Theatre object's CURRENT value is — no clock/binding required. It is what
131
+ * a later `cinematic.*` SDK/CLI operation (B5) would call to inspect Director
132
+ * state (e.g. "what shot is authored at time t") without needing to spin up
133
+ * a full runtime binding. `TheatreDirectorBinding.getState()` is the
134
+ * clock-driven equivalent — it returns the value read at bind time until the
135
+ * FIRST clock crossing occurs (not "the most recent crossing" — before any
136
+ * crossing there IS no crossing yet), and the value as of the most recent
137
+ * crossing thereafter.
138
+ *
139
+ * Authoring `Director` keyframes in Theatre Studio is a dev-only workflow
140
+ * (spec §10 D2: "Theatre Studio is available only in authoring/development
141
+ * contexts"); the committed project-state JSON is the source of truth this
142
+ * module reads in production — nothing here imports the Theatre Studio
143
+ * package (see `theatre-binding.test.ts`'s repo-wide grep proof of that).
144
+ */
145
+ /** Thrown when a Theatre object does not conform to the Director convention. */
146
+ export class TheatreDirectorError extends Error {
147
+ objectKey;
148
+ constructor(message, objectKey) {
149
+ super(message);
150
+ this.objectKey = objectKey;
151
+ this.name = 'TheatreDirectorError';
152
+ }
153
+ }
154
+ const REQUIRED_DIRECTOR_KEYS = new Set(['activeCamera', 'shot', 'letterbox']);
155
+ /**
156
+ * Pure, synchronous read of a Director Theatre object's CURRENT value.
157
+ * No clock/binding involved — suitable for one-shot inspection (the later
158
+ * SDK/CLI read path, B5) as well as being the function
159
+ * `bindDirectorToClock` itself calls on every crossing.
160
+ *
161
+ * @throws {TheatreDirectorError} if the object's value does not conform to
162
+ * the Director convention (missing/mistyped `activeCamera`/`shot`/`letterbox`).
163
+ */
164
+ export function readDirectorState(sheetObject) {
165
+ const raw = sheetObject.value;
166
+ const objectKey = sheetObject.address.objectKey;
167
+ const activeCamera = raw['activeCamera'];
168
+ if (typeof activeCamera !== 'string') {
169
+ throw new TheatreDirectorError(`[readDirectorState] Director object "${objectKey}" is missing a string "activeCamera" prop — ` +
170
+ `declare it with types.stringLiteral(...) (spec §5.3/§10 D4)`, objectKey);
171
+ }
172
+ const shot = raw['shot'];
173
+ if (typeof shot !== 'string') {
174
+ throw new TheatreDirectorError(`[readDirectorState] Director object "${objectKey}" is missing a string "shot" prop — ` +
175
+ `declare it with types.stringLiteral(...) (spec §5.3/§10 D4)`, objectKey);
176
+ }
177
+ const letterbox = raw['letterbox'];
178
+ if (typeof letterbox !== 'boolean') {
179
+ throw new TheatreDirectorError(`[readDirectorState] Director object "${objectKey}" is missing a boolean "letterbox" prop — ` +
180
+ `declare it with types.boolean(...) (spec §5.3/§10 D4)`, objectKey);
181
+ }
182
+ const extras = {};
183
+ for (const key of Object.keys(raw)) {
184
+ if (!REQUIRED_DIRECTOR_KEYS.has(key))
185
+ extras[key] = raw[key];
186
+ }
187
+ return { activeCamera, shot, letterbox, extras: Object.freeze(extras) };
188
+ }
189
+ /**
190
+ * Bind a Director Theatre Sheet Object to `clock`: on every crossing, read
191
+ * its current value (`readDirectorState`) and, if `activeCamera` changed
192
+ * since the last evaluation, report the transition through
193
+ * `onActiveCameraChange` (the D6 seam). Returns a disposer and a `getState()`
194
+ * read API. See the module doc comment for the full contract.
195
+ */
196
+ export function bindDirectorToClock(clock, sheetObject, options = {}) {
197
+ const phase = options.phase ?? 'preRender';
198
+ const blendSecondsKey = options.blendSecondsKey ?? 'blendSeconds';
199
+ let state = readDirectorState(sheetObject);
200
+ let previousCameraKey = null;
201
+ let hasEvaluatedOnClock = false;
202
+ function evaluate() {
203
+ state = readDirectorState(sheetObject);
204
+ const changed = !hasEvaluatedOnClock || state.activeCamera !== previousCameraKey;
205
+ if (changed) {
206
+ const blendRaw = state.extras[blendSecondsKey];
207
+ const blendSeconds = hasEvaluatedOnClock && typeof blendRaw === 'number' && blendRaw > 0 ? blendRaw : 0;
208
+ const mode = blendSeconds > 0 ? 'blend' : 'cut';
209
+ options.onActiveCameraChange?.({
210
+ cameraKey: state.activeCamera,
211
+ previousCameraKey: hasEvaluatedOnClock ? previousCameraKey : null,
212
+ mode,
213
+ blendSeconds,
214
+ shot: state.shot,
215
+ });
216
+ previousCameraKey = state.activeCamera;
217
+ hasEvaluatedOnClock = true;
218
+ }
219
+ }
220
+ const handle = clock.subscribe(phase, () => {
221
+ evaluate();
222
+ });
223
+ let disposed = false;
224
+ return {
225
+ getState() {
226
+ return state;
227
+ },
228
+ dispose() {
229
+ if (disposed)
230
+ return;
231
+ disposed = true;
232
+ handle.dispose();
233
+ },
234
+ };
235
+ }
@@ -0,0 +1,305 @@
1
+ import type { ISheetObject, UnknownShorthandCompoundProps } from '@theatre/core';
2
+ import type { Container } from 'pixi.js';
3
+ import type { BloomEffect, VignetteEffect } from 'postprocessing';
4
+ import type * as THREE from 'three';
5
+ import type { SystemPhaseName } from '../core/types';
6
+ import type { AnimationClock } from './animation-clock';
7
+ /**
8
+ * D3 — stable binding from a Theatre Sheet Object to a `THREE.Object3D`/
9
+ * camera (spec §10 D3, §5.3). This is the "thin integration code" the spec
10
+ * calls for: it reads a Theatre object's pull-based `.value` on every clock
11
+ * crossing and writes the (small, fixed) set of known sub-props straight
12
+ * onto the target's real Three.js properties. It is deliberately NOT a
13
+ * generic/arbitrary property-path evaluator — the only shapes understood are
14
+ * the ones declared below (`TransformProps`, `CameraLensProps`), matching
15
+ * "No arbitrary unsafe property-path evaluator is introduced" (D3 AC).
16
+ *
17
+ * Reads `sheetObject.value` rather than subscribing to Theatre's
18
+ * `onValuesChange` push channel — see `theatre-clock-binding.ts`'s module doc
19
+ * for why: `.value` is synchronously fresh immediately after
20
+ * `sequence.position` is set, while `onValuesChange` is batched on Theatre's
21
+ * own raf-driven ticker and is not delivered 1:1 with each synchronous clock
22
+ * seek (it may coalesce several writes into one notification, or — headless,
23
+ * no-raf — never fire at all).
24
+ *
25
+ * Object identity: a Theatre Sheet Object always carries both its stable,
26
+ * readable Theatre name (`sheetObject.address.objectKey`) and, since the
27
+ * caller supplies the bound `THREE.Object3D` directly, that object's own
28
+ * engine identity (`Object3D.uuid`/`.name`/`userData['entityId']`) — both are
29
+ * inspectable from the object references the binding already holds; nothing
30
+ * further to thread through.
31
+ *
32
+ * ## Remaining D3 channels: quaternion/material/light/post-processing/UI/Pixi
33
+ *
34
+ * The rest of the D3 AC's channel list (spec §10 D3: "Position,
35
+ * rotation/quaternion, scale, camera lens, material/light, post-processing,
36
+ * and selected UI properties have tested bindings") is implemented below,
37
+ * each as its own small, explicit, TYPED helper — never a generic
38
+ * property-path evaluator:
39
+ *
40
+ * - `bindObject3DQuaternion` — `Object3D.quaternion`, authored as a plain
41
+ * `{x,y,z,w}` compound (see `QuaternionProps`'s doc for the interpolation
42
+ * caveat and why the binding always normalizes).
43
+ * - `bindMaterialProperties` — `color`/`opacity`/`emissiveIntensity`/
44
+ * `roughness`/`metalness` on a real `THREE.Material`, feature-detecting
45
+ * which sub-props the concrete material subtype actually has.
46
+ * - `bindLightProperties` — `intensity`/`color` on a real `THREE.Light`.
47
+ * - `bindBloomEffect` / `bindVignetteEffect` — `intensity`/`opacity` and
48
+ * `offset`/`darkness` on real `postprocessing` `BloomEffect`/
49
+ * `VignetteEffect` instances (the SAME package `setup-renderer.ts` already
50
+ * wires into the engine's composer — no new post-processing stack).
51
+ * - `bindDomElementStyle` — `opacity`/`translateX`/`translateY` on a
52
+ * DOM-style-writable target (`DomStyleTarget`, a narrow structural
53
+ * interface a real `HTMLElement` satisfies with no adapter).
54
+ * - `bindPixiContainerTransform` — `x`/`y`/`rotation`/`scaleX`/`scaleY`/
55
+ * `alpha` on a real `PIXI.Container`/`PIXI.Sprite`.
56
+ *
57
+ * All of the above are proven against REAL target objects in
58
+ * `theatre-object-binding-d3.test.ts` — `BloomEffect`/`VignetteEffect`/
59
+ * `PIXI.Container`/`PIXI.Sprite` all construct and expose plain,
60
+ * synchronously-settable properties with no WebGL/canvas/renderer required,
61
+ * so nothing here is a mock of the underlying library. The one channel that
62
+ * genuinely cannot construct real headlessly in THIS repo's `environment:
63
+ * 'node'` vitest lane (`vitest.config.ts` — no DOM) is a real `HTMLElement`;
64
+ * `bindDomElementStyle` is typed against the narrow `DomStyleTarget`
65
+ * structural interface instead of full `HTMLElement`, and its test exercises
66
+ * a plain object literal shaped like one — the exact same binding code path
67
+ * a real `HTMLElement`/React-overlay ref runs through in a browser or a
68
+ * jsdom-backed test. Nothing here is deferred.
69
+ */
70
+ /** Thrown when a binding is constructed with a missing/falsy target. */
71
+ export declare class TheatreBindingError extends Error {
72
+ readonly objectKey: string;
73
+ constructor(message: string, objectKey: string);
74
+ }
75
+ export interface Vector3Like {
76
+ x: number;
77
+ y: number;
78
+ z: number;
79
+ }
80
+ /**
81
+ * The fixed shape a Theatre object must expose (as a subset) to drive an
82
+ * `Object3D`'s transform. Author it with e.g.
83
+ * `sheet.object('Hero', { position: { x: 0, y: 0, z: 0 }, rotation: { x: 0, y: 0, z: 0 }, scale: { x: 1, y: 1, z: 1 } })`.
84
+ * `rotation` is Euler angles in radians, XYZ order (matches `THREE.Euler`'s default).
85
+ */
86
+ export interface TransformProps {
87
+ position?: Vector3Like;
88
+ rotation?: Vector3Like;
89
+ scale?: Vector3Like;
90
+ }
91
+ export interface TheatreObjectBindingOptions {
92
+ /**
93
+ * Which `AnimationClock` phase to apply values in. Defaults to
94
+ * `'preRender'` — the documented home for camera placement/material tick
95
+ * (`ARCHITECTURE.md`), and guaranteed by `PHASE_ORDER` to run after the
96
+ * `'animation'`-phase default of `bindClockToTheatreSequence`, so the
97
+ * sheet's sequence position is always current by the time this reads
98
+ * `sheetObject.value`, regardless of registration order.
99
+ */
100
+ phase?: SystemPhaseName;
101
+ }
102
+ export interface TheatreObjectBinding {
103
+ /** Removes the clock evaluator. The target keeps whatever value it last had. */
104
+ dispose(): void;
105
+ }
106
+ /**
107
+ * Bind a Theatre Sheet Object's `position`/`rotation`/`scale` sub-props (any
108
+ * subset) to a `THREE.Object3D`. Whichever of the three keys are present on
109
+ * `sheetObject.value` are applied; missing keys are left untouched on the
110
+ * target.
111
+ *
112
+ * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
113
+ */
114
+ export declare function bindObject3DTransform<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, target: THREE.Object3D | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
115
+ /**
116
+ * The fixed shape a Theatre object must expose (as a subset) to drive a
117
+ * `THREE.PerspectiveCamera`'s lens. Author it with e.g.
118
+ * `sheet.object('Lens', { fov: 50, near: 0.1, far: 1000 })`.
119
+ */
120
+ export interface CameraLensProps {
121
+ fov?: number;
122
+ near?: number;
123
+ far?: number;
124
+ }
125
+ /**
126
+ * Bind a Theatre Sheet Object's `fov`/`near`/`far` sub-props (any subset) to
127
+ * a `THREE.PerspectiveCamera`'s lens, calling `updateProjectionMatrix()`
128
+ * whenever any of them change.
129
+ *
130
+ * @throws {TheatreBindingError} if `camera` is null/undefined at bind time.
131
+ */
132
+ export declare function bindCameraLens<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, camera: THREE.PerspectiveCamera | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
133
+ export interface QuaternionLike {
134
+ x: number;
135
+ y: number;
136
+ z: number;
137
+ w: number;
138
+ }
139
+ /**
140
+ * The fixed shape a Theatre object must expose to drive an `Object3D`'s
141
+ * rotation as a quaternion — an alternative to `TransformProps.rotation`'s
142
+ * Euler angles for cases that need to avoid gimbal lock or author a rotation
143
+ * that doesn't decompose cleanly into per-axis Euler angles. Author it with
144
+ * e.g. `sheet.object('Hero', { quaternion: { x: 0, y: 0, z: 0, w: 1 } })` —
145
+ * the authored shape is Theatre's plain shorthand-compound of the SAME four
146
+ * fields `THREE.Quaternion` itself exposes (`x`/`y`/`z`/`w`); there is no
147
+ * VGAI-invented quaternion encoding.
148
+ *
149
+ * Theatre has no native quaternion/slerp track type — it interpolates each
150
+ * of `x`/`y`/`z`/`w` LINEARLY and independently, so a value read strictly
151
+ * BETWEEN two authored keyframes is a component-wise lerp, not a slerp, and
152
+ * is not guaranteed to be exactly unit length. `bindObject3DQuaternion`
153
+ * always calls `.normalize()` immediately after `.set(...)`, so the applied
154
+ * rotation is never a scaled/denormalized quaternion even mid-interpolation
155
+ * — but normalizing a lerp is not the same curve a true slerp would trace.
156
+ * For continuous cinematic rotation, prefer authoring dense keyframes (exact
157
+ * at each keyframe, close between nearby ones), or use
158
+ * `TransformProps.rotation`'s Euler channel instead (also only lerped
159
+ * per-axis by Theatre, but with no unit-length concern at all).
160
+ */
161
+ export interface QuaternionProps {
162
+ quaternion?: QuaternionLike;
163
+ }
164
+ /**
165
+ * Bind a Theatre Sheet Object's `quaternion` sub-prop to a `THREE.Object3D`'s
166
+ * `.quaternion`. See `QuaternionProps`'s doc for the authored shape and its
167
+ * interpolation caveat.
168
+ *
169
+ * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
170
+ */
171
+ export declare function bindObject3DQuaternion<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, target: THREE.Object3D | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
172
+ export interface ColorLike {
173
+ r: number;
174
+ g: number;
175
+ b: number;
176
+ }
177
+ /**
178
+ * A small, fixed, TYPED subset of `THREE.Material` properties — NOT an
179
+ * arbitrary property-path evaluator. `color` mirrors Theatre's own native
180
+ * `types.rgba(...)` value shape (`{r,g,b,a}`, 0-1 floats) minus alpha (use
181
+ * the separate `opacity` field, which is what `THREE.Material.opacity`
182
+ * itself already is). `emissiveIntensity`/`roughness`/`metalness` only exist
183
+ * on `THREE.MeshStandardMaterial`-family materials; `bindMaterialProperties`
184
+ * feature-detects each with an `in` check and silently skips any sub-prop
185
+ * the target material doesn't have (mirroring `bindObject3DTransform`'s
186
+ * "whichever subset is present" contract) rather than throwing.
187
+ */
188
+ export interface MaterialProps {
189
+ color?: ColorLike;
190
+ opacity?: number;
191
+ emissiveIntensity?: number;
192
+ roughness?: number;
193
+ metalness?: number;
194
+ }
195
+ /**
196
+ * Bind a Theatre Sheet Object's `color`/`opacity`/`emissiveIntensity`/
197
+ * `roughness`/`metalness` sub-props (any subset the target material
198
+ * supports) to a `THREE.Material`.
199
+ *
200
+ * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
201
+ */
202
+ export declare function bindMaterialProperties<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, target: THREE.Material | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
203
+ /** A small, fixed, TYPED subset of `THREE.Light` properties. */
204
+ export interface LightProps {
205
+ intensity?: number;
206
+ color?: ColorLike;
207
+ }
208
+ /**
209
+ * Bind a Theatre Sheet Object's `intensity`/`color` sub-props (any subset)
210
+ * to a `THREE.Light`.
211
+ *
212
+ * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
213
+ */
214
+ export declare function bindLightProperties<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, target: THREE.Light | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
215
+ /** A small, fixed, TYPED subset of `postprocessing`'s `BloomEffect` properties. */
216
+ export interface BloomEffectProps {
217
+ intensity?: number;
218
+ /** Effect blend opacity (`BloomEffect.blendMode.opacity.value`), 0-1. */
219
+ opacity?: number;
220
+ }
221
+ /**
222
+ * Bind a Theatre Sheet Object's `intensity`/`opacity` sub-props (any subset)
223
+ * to a real `postprocessing` `BloomEffect` — the SAME `postprocessing` npm
224
+ * package the engine's own composer pipeline already uses directly
225
+ * (`setup-renderer.ts`), not a new post-processing stack.
226
+ *
227
+ * @throws {TheatreBindingError} if `effect` is null/undefined at bind time.
228
+ */
229
+ export declare function bindBloomEffect<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, effect: BloomEffect | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
230
+ /** A small, fixed, TYPED subset of `postprocessing`'s `VignetteEffect` properties. */
231
+ export interface VignetteEffectProps {
232
+ offset?: number;
233
+ darkness?: number;
234
+ }
235
+ /**
236
+ * Bind a Theatre Sheet Object's `offset`/`darkness` sub-props (any subset) to
237
+ * a real `postprocessing` `VignetteEffect` — same package/no-wrapper note as
238
+ * `bindBloomEffect` above.
239
+ *
240
+ * @throws {TheatreBindingError} if `effect` is null/undefined at bind time.
241
+ */
242
+ export declare function bindVignetteEffect<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, effect: VignetteEffect | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
243
+ /**
244
+ * A minimal structural interface for a DOM-style-writable target — NOT the
245
+ * full `HTMLElement` API. A real `HTMLElement` (or a React ref's `.current`)
246
+ * satisfies this structurally with no adapter, since
247
+ * `CSSStyleDeclaration.opacity`/`.transform` are themselves plain strings.
248
+ * This repo's vitest lane runs `environment: 'node'` (`vitest.config.ts`,
249
+ * no DOM), so `theatre-object-binding-d3.test.ts` exercises
250
+ * `bindDomElementStyle` against a plain object literal shaped like `{
251
+ * style: { opacity: '', transform: '' } }` — the exact same binding code
252
+ * path a real `HTMLElement`/React-overlay ref runs through in a browser or a
253
+ * jsdom-backed test elsewhere in the stack.
254
+ */
255
+ export interface DomStyleTarget {
256
+ style: {
257
+ opacity: string;
258
+ transform: string;
259
+ };
260
+ }
261
+ /**
262
+ * A small, fixed, TYPED set of DOM/React-overlay-friendly style properties:
263
+ * opacity plus a 2D translate. The two translate axes are combined into one
264
+ * CSS `transform` string, remembering whichever value was last authored on
265
+ * each axis so authoring only one axis doesn't reset the other to 0.
266
+ */
267
+ export interface UIElementProps {
268
+ opacity?: number;
269
+ translateX?: number;
270
+ translateY?: number;
271
+ }
272
+ /**
273
+ * Bind a Theatre Sheet Object's `opacity`/`translateX`/`translateY`
274
+ * sub-props (any subset) to a DOM-style-writable target's inline style. See
275
+ * `DomStyleTarget`'s doc for how this is proven without a real browser DOM.
276
+ *
277
+ * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
278
+ */
279
+ export declare function bindDomElementStyle<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, target: DomStyleTarget | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
280
+ /**
281
+ * A small, fixed, TYPED subset of `PIXI.Container` (and, since `PIXI.Sprite
282
+ * extends Container`, `PIXI.Sprite` too) transform/alpha properties.
283
+ * `rotation` is in radians (matches `Container.rotation`'s own unit).
284
+ */
285
+ export interface PixiTransformProps {
286
+ x?: number;
287
+ y?: number;
288
+ rotation?: number;
289
+ scaleX?: number;
290
+ scaleY?: number;
291
+ alpha?: number;
292
+ }
293
+ /**
294
+ * Bind a Theatre Sheet Object's `x`/`y`/`rotation`/`scaleX`/`scaleY`/`alpha`
295
+ * sub-props (any subset) to a real `PIXI.Container`/`PIXI.Sprite` (reusing
296
+ * the world2d stack's own `pixi.js` dependency — see this module's
297
+ * type-only `pixi.js` import above and its doc note on why the engine core
298
+ * never value-imports it). Plain `Container`/`Sprite` construction needs no
299
+ * canvas/WebGL context, so this is proven against a REAL Pixi object in
300
+ * `theatre-object-binding-d3.test.ts`, not a stand-in.
301
+ *
302
+ * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
303
+ */
304
+ export declare function bindPixiContainerTransform<Props extends UnknownShorthandCompoundProps>(clock: AnimationClock, sheetObject: ISheetObject<Props>, target: Container | null | undefined, options?: TheatreObjectBindingOptions): TheatreObjectBinding;
305
+ //# sourceMappingURL=theatre-object-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theatre-object-binding.d.ts","sourceRoot":"","sources":["../../src/animation/theatre-object-binding.ts"],"names":[],"mappings":"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"}