@vgai/engine 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/package.json +1 -1
  2. package/schemas/engine-capabilities.json +4 -4
  3. package/schemas/vgai-game.schema.json +2 -2
  4. package/src/adapter/authoring.ts +42 -0
  5. package/src/adapter/index.ts +3 -0
  6. package/src/adapter/ingest/overlay-apply.ts +50 -6
  7. package/src/adapter/ingest/scene-capture.ts +51 -2
  8. package/src/adapter/vgai-scene-game-adapter.ts +24 -0
  9. package/src/manifest/schema.ts +7 -3
  10. package/src/runtime/create-runtime.ts +97 -0
  11. package/src/runtime/game.ts +11 -1
  12. package/src/scene/asset-ref-check.ts +1 -1
  13. package/src/scene/scene-loader.ts +2 -2
  14. package/src/scene/user-data.ts +18 -0
  15. package/src/world3d-react/behavior.tsx +19 -11
  16. package/src/world3d-react/r3f-adapter.tsx +8 -0
  17. package/dist/adapter/adapter-surface.d.ts +0 -30
  18. package/dist/adapter/adapter-surface.d.ts.map +0 -1
  19. package/dist/adapter/adapter-surface.js +0 -18
  20. package/dist/adapter/authoring.d.ts +0 -461
  21. package/dist/adapter/authoring.d.ts.map +0 -1
  22. package/dist/adapter/authoring.js +0 -22
  23. package/dist/adapter/colyseus-networking-adapter.d.ts +0 -43
  24. package/dist/adapter/colyseus-networking-adapter.d.ts.map +0 -1
  25. package/dist/adapter/colyseus-networking-adapter.js +0 -38
  26. package/dist/adapter/first-party-systems.d.ts +0 -38
  27. package/dist/adapter/first-party-systems.d.ts.map +0 -1
  28. package/dist/adapter/first-party-systems.js +0 -77
  29. package/dist/adapter/game-adapter.d.ts +0 -133
  30. package/dist/adapter/game-adapter.d.ts.map +0 -1
  31. package/dist/adapter/game-adapter.js +0 -10
  32. package/dist/adapter/host-context.d.ts +0 -71
  33. package/dist/adapter/host-context.d.ts.map +0 -1
  34. package/dist/adapter/host-context.js +0 -16
  35. package/dist/adapter/index.d.ts +0 -22
  36. package/dist/adapter/index.d.ts.map +0 -1
  37. package/dist/adapter/index.js +0 -15
  38. package/dist/adapter/ingest/game-contract.d.ts +0 -53
  39. package/dist/adapter/ingest/game-contract.d.ts.map +0 -1
  40. package/dist/adapter/ingest/game-contract.js +0 -30
  41. package/dist/adapter/ingest/overlay-applier.d.ts +0 -118
  42. package/dist/adapter/ingest/overlay-applier.d.ts.map +0 -1
  43. package/dist/adapter/ingest/overlay-applier.js +0 -132
  44. package/dist/adapter/ingest/overlay-apply.d.ts +0 -60
  45. package/dist/adapter/ingest/overlay-apply.d.ts.map +0 -1
  46. package/dist/adapter/ingest/overlay-apply.js +0 -101
  47. package/dist/adapter/ingest/overlay-file.d.ts +0 -79
  48. package/dist/adapter/ingest/overlay-file.d.ts.map +0 -1
  49. package/dist/adapter/ingest/overlay-file.js +0 -66
  50. package/dist/adapter/ingest/overlay-report.d.ts +0 -113
  51. package/dist/adapter/ingest/overlay-report.d.ts.map +0 -1
  52. package/dist/adapter/ingest/overlay-report.js +0 -103
  53. package/dist/adapter/ingest/scene-capture.d.ts +0 -97
  54. package/dist/adapter/ingest/scene-capture.d.ts.map +0 -1
  55. package/dist/adapter/ingest/scene-capture.js +0 -248
  56. package/dist/adapter/ingest/upstream-pin.d.ts +0 -47
  57. package/dist/adapter/ingest/upstream-pin.d.ts.map +0 -1
  58. package/dist/adapter/ingest/upstream-pin.js +0 -50
  59. package/dist/adapter/loop-gate-report.d.ts +0 -34
  60. package/dist/adapter/loop-gate-report.d.ts.map +0 -1
  61. package/dist/adapter/loop-gate-report.js +0 -37
  62. package/dist/adapter/rapier-physics-adapter.d.ts +0 -12
  63. package/dist/adapter/rapier-physics-adapter.d.ts.map +0 -1
  64. package/dist/adapter/rapier-physics-adapter.js +0 -46
  65. package/dist/adapter/system-adapter.d.ts +0 -206
  66. package/dist/adapter/system-adapter.d.ts.map +0 -1
  67. package/dist/adapter/system-adapter.js +0 -13
  68. package/dist/adapter/transform.d.ts +0 -18
  69. package/dist/adapter/transform.d.ts.map +0 -1
  70. package/dist/adapter/transform.js +0 -1
  71. package/dist/adapter/vgai-scene-game-adapter.d.ts +0 -108
  72. package/dist/adapter/vgai-scene-game-adapter.d.ts.map +0 -1
  73. package/dist/adapter/vgai-scene-game-adapter.js +0 -762
  74. package/dist/ai/navigation.d.ts +0 -64
  75. package/dist/ai/navigation.d.ts.map +0 -1
  76. package/dist/ai/navigation.js +0 -133
  77. package/dist/animation/anim-graph-types.d.ts +0 -25
  78. package/dist/animation/anim-graph-types.d.ts.map +0 -1
  79. package/dist/animation/anim-graph-types.js +0 -1
  80. package/dist/animation/animation-clock.d.ts +0 -213
  81. package/dist/animation/animation-clock.d.ts.map +0 -1
  82. package/dist/animation/animation-clock.js +0 -301
  83. package/dist/animation/blend-node.d.ts +0 -22
  84. package/dist/animation/blend-node.d.ts.map +0 -1
  85. package/dist/animation/blend-node.js +0 -97
  86. package/dist/animation/camera-ownership.d.ts +0 -250
  87. package/dist/animation/camera-ownership.d.ts.map +0 -1
  88. package/dist/animation/camera-ownership.js +0 -169
  89. package/dist/animation/cinematic-cues.d.ts +0 -200
  90. package/dist/animation/cinematic-cues.d.ts.map +0 -1
  91. package/dist/animation/cinematic-cues.js +0 -213
  92. package/dist/animation/clip-map.d.ts +0 -12
  93. package/dist/animation/clip-map.d.ts.map +0 -1
  94. package/dist/animation/clip-map.js +0 -37
  95. package/dist/animation/gsap-registration.d.ts +0 -119
  96. package/dist/animation/gsap-registration.d.ts.map +0 -1
  97. package/dist/animation/gsap-registration.js +0 -92
  98. package/dist/animation/theatre-clock-binding.d.ts +0 -89
  99. package/dist/animation/theatre-clock-binding.d.ts.map +0 -1
  100. package/dist/animation/theatre-clock-binding.js +0 -29
  101. package/dist/animation/theatre-director.d.ts +0 -242
  102. package/dist/animation/theatre-director.d.ts.map +0 -1
  103. package/dist/animation/theatre-director.js +0 -235
  104. package/dist/animation/theatre-object-binding.d.ts +0 -305
  105. package/dist/animation/theatre-object-binding.d.ts.map +0 -1
  106. package/dist/animation/theatre-object-binding.js +0 -351
  107. package/dist/animation/xstate-animation-binding.d.ts +0 -56
  108. package/dist/animation/xstate-animation-binding.d.ts.map +0 -1
  109. package/dist/animation/xstate-animation-binding.js +0 -331
  110. package/dist/animation/xstate-animation-meta.d.ts +0 -266
  111. package/dist/animation/xstate-animation-meta.d.ts.map +0 -1
  112. package/dist/animation/xstate-animation-meta.js +0 -252
  113. package/dist/assets.d.ts +0 -26
  114. package/dist/assets.d.ts.map +0 -1
  115. package/dist/assets.js +0 -55
  116. package/dist/audio/index.d.ts +0 -4
  117. package/dist/audio/index.d.ts.map +0 -1
  118. package/dist/audio/index.js +0 -24
  119. package/dist/audio/tone-clock-binding.d.ts +0 -75
  120. package/dist/audio/tone-clock-binding.d.ts.map +0 -1
  121. package/dist/audio/tone-clock-binding.js +0 -29
  122. package/dist/audio/tone-context.d.ts +0 -114
  123. package/dist/audio/tone-context.d.ts.map +0 -1
  124. package/dist/audio/tone-context.js +0 -39
  125. package/dist/audio/tone-offline-render.d.ts +0 -90
  126. package/dist/audio/tone-offline-render.d.ts.map +0 -1
  127. package/dist/audio/tone-offline-render.js +0 -56
  128. package/dist/audio/wav-encode.d.ts +0 -38
  129. package/dist/audio/wav-encode.d.ts.map +0 -1
  130. package/dist/audio/wav-encode.js +0 -97
  131. package/dist/character/cloth-sim.d.ts +0 -179
  132. package/dist/character/cloth-sim.d.ts.map +0 -1
  133. package/dist/character/cloth-sim.js +0 -334
  134. package/dist/character/spring-chain.d.ts +0 -135
  135. package/dist/character/spring-chain.d.ts.map +0 -1
  136. package/dist/character/spring-chain.js +0 -165
  137. package/dist/core/game-loop.d.ts +0 -42
  138. package/dist/core/game-loop.d.ts.map +0 -1
  139. package/dist/core/game-loop.js +0 -167
  140. package/dist/core/seeded-random.d.ts +0 -69
  141. package/dist/core/seeded-random.d.ts.map +0 -1
  142. package/dist/core/seeded-random.js +0 -121
  143. package/dist/core/system-runner.d.ts +0 -120
  144. package/dist/core/system-runner.d.ts.map +0 -1
  145. package/dist/core/system-runner.js +0 -297
  146. package/dist/core/types.d.ts +0 -92
  147. package/dist/core/types.d.ts.map +0 -1
  148. package/dist/core/types.js +0 -25
  149. package/dist/data/data-asset.d.ts +0 -101
  150. package/dist/data/data-asset.d.ts.map +0 -1
  151. package/dist/data/data-asset.js +0 -122
  152. package/dist/data/data-check-core.d.ts +0 -110
  153. package/dist/data/data-check-core.d.ts.map +0 -1
  154. package/dist/data/data-check-core.js +0 -178
  155. package/dist/data/data-ref.d.ts +0 -79
  156. package/dist/data/data-ref.d.ts.map +0 -1
  157. package/dist/data/data-ref.js +0 -130
  158. package/dist/data/vite-plugin-data.d.ts +0 -79
  159. package/dist/data/vite-plugin-data.d.ts.map +0 -1
  160. package/dist/data/vite-plugin-data.js +0 -217
  161. package/dist/dev/console-bridge.d.ts +0 -22
  162. package/dist/dev/console-bridge.d.ts.map +0 -1
  163. package/dist/dev/console-bridge.js +0 -71
  164. package/dist/dev/debug-draw.d.ts +0 -24
  165. package/dist/dev/debug-draw.d.ts.map +0 -1
  166. package/dist/dev/debug-draw.js +0 -73
  167. package/dist/dev/logger.d.ts +0 -30
  168. package/dist/dev/logger.d.ts.map +0 -1
  169. package/dist/dev/logger.js +0 -90
  170. package/dist/dev/performance-profiler.d.ts +0 -60
  171. package/dist/dev/performance-profiler.d.ts.map +0 -1
  172. package/dist/dev/performance-profiler.js +0 -181
  173. package/dist/dev/webgl-gpu-timer.d.ts +0 -8
  174. package/dist/dev/webgl-gpu-timer.d.ts.map +0 -1
  175. package/dist/dev/webgl-gpu-timer.js +0 -52
  176. package/dist/ecs/component-manager.d.ts +0 -205
  177. package/dist/ecs/component-manager.d.ts.map +0 -1
  178. package/dist/ecs/component-manager.js +0 -706
  179. package/dist/ecs/game-component.d.ts +0 -146
  180. package/dist/ecs/game-component.d.ts.map +0 -1
  181. package/dist/ecs/game-component.js +0 -141
  182. package/dist/ecs/hmr-swap-report.d.ts +0 -53
  183. package/dist/ecs/hmr-swap-report.d.ts.map +0 -1
  184. package/dist/ecs/hmr-swap-report.js +0 -55
  185. package/dist/humanoid/bake.operation.d.ts +0 -119
  186. package/dist/humanoid/bake.operation.d.ts.map +0 -1
  187. package/dist/humanoid/bake.operation.js +0 -228
  188. package/dist/humanoid/body.d.ts +0 -101
  189. package/dist/humanoid/body.d.ts.map +0 -1
  190. package/dist/humanoid/body.js +0 -530
  191. package/dist/humanoid/clips.d.ts +0 -62
  192. package/dist/humanoid/clips.d.ts.map +0 -1
  193. package/dist/humanoid/clips.js +0 -121
  194. package/dist/humanoid/compose.d.ts +0 -75
  195. package/dist/humanoid/compose.d.ts.map +0 -1
  196. package/dist/humanoid/compose.js +0 -176
  197. package/dist/humanoid/generate.d.ts +0 -92
  198. package/dist/humanoid/generate.d.ts.map +0 -1
  199. package/dist/humanoid/generate.js +0 -124
  200. package/dist/humanoid/index.d.ts +0 -24
  201. package/dist/humanoid/index.d.ts.map +0 -1
  202. package/dist/humanoid/index.js +0 -18
  203. package/dist/humanoid/schema.d.ts +0 -35
  204. package/dist/humanoid/schema.d.ts.map +0 -1
  205. package/dist/humanoid/schema.js +0 -87
  206. package/dist/humanoid/skeleton.d.ts +0 -103
  207. package/dist/humanoid/skeleton.d.ts.map +0 -1
  208. package/dist/humanoid/skeleton.js +0 -289
  209. package/dist/index.d.ts +0 -37
  210. package/dist/index.d.ts.map +0 -1
  211. package/dist/index.js +0 -30
  212. package/dist/input/input-manager.d.ts +0 -945
  213. package/dist/input/input-manager.d.ts.map +0 -1
  214. package/dist/input/input-manager.js +0 -2207
  215. package/dist/input/input-types.d.ts +0 -174
  216. package/dist/input/input-types.d.ts.map +0 -1
  217. package/dist/input/input-types.js +0 -1
  218. package/dist/input/prompt-labels.d.ts +0 -21
  219. package/dist/input/prompt-labels.d.ts.map +0 -1
  220. package/dist/input/prompt-labels.js +0 -121
  221. package/dist/input/rebind-controller.d.ts +0 -59
  222. package/dist/input/rebind-controller.d.ts.map +0 -1
  223. package/dist/input/rebind-controller.js +0 -85
  224. package/dist/input/schema.d.ts +0 -16
  225. package/dist/input/schema.d.ts.map +0 -1
  226. package/dist/input/schema.js +0 -228
  227. package/dist/loader.d.ts +0 -43
  228. package/dist/loader.d.ts.map +0 -1
  229. package/dist/loader.js +0 -59
  230. package/dist/manifest/index.d.ts +0 -5
  231. package/dist/manifest/index.d.ts.map +0 -1
  232. package/dist/manifest/index.js +0 -8
  233. package/dist/manifest/load-file.d.ts +0 -4
  234. package/dist/manifest/load-file.d.ts.map +0 -1
  235. package/dist/manifest/load-file.js +0 -14
  236. package/dist/manifest/load.d.ts +0 -144
  237. package/dist/manifest/load.d.ts.map +0 -1
  238. package/dist/manifest/load.js +0 -273
  239. package/dist/manifest/schema.d.ts +0 -230
  240. package/dist/manifest/schema.d.ts.map +0 -1
  241. package/dist/manifest/schema.js +0 -394
  242. package/dist/physics/collision-system.d.ts +0 -41
  243. package/dist/physics/collision-system.d.ts.map +0 -1
  244. package/dist/physics/collision-system.js +0 -64
  245. package/dist/physics/physics-registry.d.ts +0 -45
  246. package/dist/physics/physics-registry.d.ts.map +0 -1
  247. package/dist/physics/physics-registry.js +0 -65
  248. package/dist/physics/transform-writer.d.ts +0 -16
  249. package/dist/physics/transform-writer.d.ts.map +0 -1
  250. package/dist/physics/transform-writer.js +0 -38
  251. package/dist/physics/trigger-dispatch.d.ts +0 -24
  252. package/dist/physics/trigger-dispatch.d.ts.map +0 -1
  253. package/dist/physics/trigger-dispatch.js +0 -80
  254. package/dist/react/game-state.d.ts +0 -156
  255. package/dist/react/game-state.d.ts.map +0 -1
  256. package/dist/react/game-state.js +0 -222
  257. package/dist/react/root-adapter.d.ts +0 -11
  258. package/dist/react/root-adapter.d.ts.map +0 -1
  259. package/dist/react/root-adapter.js +0 -41
  260. package/dist/react/unmanaged-root-detector.d.ts +0 -12
  261. package/dist/react/unmanaged-root-detector.d.ts.map +0 -1
  262. package/dist/react/unmanaged-root-detector.js +0 -45
  263. package/dist/react/use-data.d.ts +0 -60
  264. package/dist/react/use-data.d.ts.map +0 -1
  265. package/dist/react/use-data.js +0 -101
  266. package/dist/react/use-selection.d.ts +0 -75
  267. package/dist/react/use-selection.d.ts.map +0 -1
  268. package/dist/react/use-selection.js +0 -90
  269. package/dist/render/auto-batcher.d.ts +0 -34
  270. package/dist/render/auto-batcher.d.ts.map +0 -1
  271. package/dist/render/auto-batcher.js +0 -140
  272. package/dist/render/render-batch-system.d.ts +0 -33
  273. package/dist/render/render-batch-system.d.ts.map +0 -1
  274. package/dist/render/render-batch-system.js +0 -230
  275. package/dist/render/render-features.d.ts +0 -47
  276. package/dist/render/render-features.d.ts.map +0 -1
  277. package/dist/render/render-features.js +0 -105
  278. package/dist/render/render-settings.d.ts +0 -36
  279. package/dist/render/render-settings.d.ts.map +0 -1
  280. package/dist/render/render-settings.js +0 -51
  281. package/dist/runtime/create-runtime.d.ts +0 -249
  282. package/dist/runtime/create-runtime.d.ts.map +0 -1
  283. package/dist/runtime/create-runtime.js +0 -641
  284. package/dist/runtime/debug-bridge.d.ts +0 -257
  285. package/dist/runtime/debug-bridge.d.ts.map +0 -1
  286. package/dist/runtime/debug-bridge.js +0 -224
  287. package/dist/runtime/debug-registry.d.ts +0 -288
  288. package/dist/runtime/debug-registry.d.ts.map +0 -1
  289. package/dist/runtime/debug-registry.js +0 -513
  290. package/dist/runtime/frame-selector-cache.d.ts +0 -41
  291. package/dist/runtime/frame-selector-cache.d.ts.map +0 -1
  292. package/dist/runtime/frame-selector-cache.js +0 -65
  293. package/dist/runtime/game.d.ts +0 -496
  294. package/dist/runtime/game.d.ts.map +0 -1
  295. package/dist/runtime/game.js +0 -741
  296. package/dist/runtime/gameplay-rng-trap.d.ts +0 -48
  297. package/dist/runtime/gameplay-rng-trap.d.ts.map +0 -1
  298. package/dist/runtime/gameplay-rng-trap.js +0 -96
  299. package/dist/runtime/input-router.d.ts +0 -78
  300. package/dist/runtime/input-router.d.ts.map +0 -1
  301. package/dist/runtime/input-router.js +0 -171
  302. package/dist/runtime/mount-game.d.ts +0 -129
  303. package/dist/runtime/mount-game.d.ts.map +0 -1
  304. package/dist/runtime/mount-game.js +0 -152
  305. package/dist/runtime/mount-manifest.d.ts +0 -173
  306. package/dist/runtime/mount-manifest.d.ts.map +0 -1
  307. package/dist/runtime/mount-manifest.js +0 -297
  308. package/dist/runtime/render-audio-control.d.ts +0 -110
  309. package/dist/runtime/render-audio-control.d.ts.map +0 -1
  310. package/dist/runtime/render-audio-control.js +0 -111
  311. package/dist/runtime/render-control.d.ts +0 -291
  312. package/dist/runtime/render-control.d.ts.map +0 -1
  313. package/dist/runtime/render-control.js +0 -264
  314. package/dist/runtime/render-seed.d.ts +0 -57
  315. package/dist/runtime/render-seed.d.ts.map +0 -1
  316. package/dist/runtime/render-seed.js +0 -74
  317. package/dist/runtime/state-bridge.d.ts +0 -61
  318. package/dist/runtime/state-bridge.d.ts.map +0 -1
  319. package/dist/runtime/state-bridge.js +0 -63
  320. package/dist/runtime/types.d.ts +0 -253
  321. package/dist/runtime/types.d.ts.map +0 -1
  322. package/dist/runtime/types.js +0 -1
  323. package/dist/scene/asset-loaders.d.ts +0 -79
  324. package/dist/scene/asset-loaders.d.ts.map +0 -1
  325. package/dist/scene/asset-loaders.js +0 -141
  326. package/dist/scene/asset-paths.d.ts +0 -11
  327. package/dist/scene/asset-paths.d.ts.map +0 -1
  328. package/dist/scene/asset-paths.js +0 -108
  329. package/dist/scene/asset-ref-check.d.ts +0 -88
  330. package/dist/scene/asset-ref-check.d.ts.map +0 -1
  331. package/dist/scene/asset-ref-check.js +0 -214
  332. package/dist/scene/asset-registry.d.ts +0 -38
  333. package/dist/scene/asset-registry.d.ts.map +0 -1
  334. package/dist/scene/asset-registry.js +0 -66
  335. package/dist/scene/collider-dimensions.d.ts +0 -63
  336. package/dist/scene/collider-dimensions.d.ts.map +0 -1
  337. package/dist/scene/collider-dimensions.js +0 -98
  338. package/dist/scene/component-registry.d.ts +0 -22
  339. package/dist/scene/component-registry.d.ts.map +0 -1
  340. package/dist/scene/component-registry.js +0 -37
  341. package/dist/scene/defaults.d.ts +0 -252
  342. package/dist/scene/defaults.d.ts.map +0 -1
  343. package/dist/scene/defaults.js +0 -151
  344. package/dist/scene/geometries/index.d.ts +0 -8
  345. package/dist/scene/geometries/index.d.ts.map +0 -1
  346. package/dist/scene/geometries/index.js +0 -7
  347. package/dist/scene/geometries/terrain.d.ts +0 -2
  348. package/dist/scene/geometries/terrain.d.ts.map +0 -1
  349. package/dist/scene/geometries/terrain.js +0 -37
  350. package/dist/scene/geometry-registry.d.ts +0 -24
  351. package/dist/scene/geometry-registry.d.ts.map +0 -1
  352. package/dist/scene/geometry-registry.js +0 -20
  353. package/dist/scene/instance-registry.d.ts +0 -36
  354. package/dist/scene/instance-registry.d.ts.map +0 -1
  355. package/dist/scene/instance-registry.js +0 -55
  356. package/dist/scene/instancers/grid.d.ts +0 -2
  357. package/dist/scene/instancers/grid.d.ts.map +0 -1
  358. package/dist/scene/instancers/grid.js +0 -36
  359. package/dist/scene/instancers/index.d.ts +0 -8
  360. package/dist/scene/instancers/index.d.ts.map +0 -1
  361. package/dist/scene/instancers/index.js +0 -7
  362. package/dist/scene/light-camera-factory.d.ts +0 -23
  363. package/dist/scene/light-camera-factory.d.ts.map +0 -1
  364. package/dist/scene/light-camera-factory.js +0 -68
  365. package/dist/scene/material-factory.d.ts +0 -17
  366. package/dist/scene/material-factory.d.ts.map +0 -1
  367. package/dist/scene/material-factory.js +0 -197
  368. package/dist/scene/material-registry.d.ts +0 -40
  369. package/dist/scene/material-registry.d.ts.map +0 -1
  370. package/dist/scene/material-registry.js +0 -44
  371. package/dist/scene/materials/index.d.ts +0 -8
  372. package/dist/scene/materials/index.d.ts.map +0 -1
  373. package/dist/scene/materials/index.js +0 -7
  374. package/dist/scene/materials/water.d.ts +0 -2
  375. package/dist/scene/materials/water.d.ts.map +0 -1
  376. package/dist/scene/materials/water.js +0 -54
  377. package/dist/scene/parse.d.ts +0 -23
  378. package/dist/scene/parse.d.ts.map +0 -1
  379. package/dist/scene/parse.js +0 -179
  380. package/dist/scene/particles-factory.d.ts +0 -33
  381. package/dist/scene/particles-factory.d.ts.map +0 -1
  382. package/dist/scene/particles-factory.js +0 -282
  383. package/dist/scene/scene-apply.d.ts +0 -109
  384. package/dist/scene/scene-apply.d.ts.map +0 -1
  385. package/dist/scene/scene-apply.js +0 -370
  386. package/dist/scene/scene-diff-schema.d.ts +0 -285
  387. package/dist/scene/scene-diff-schema.d.ts.map +0 -1
  388. package/dist/scene/scene-diff-schema.js +0 -92
  389. package/dist/scene/scene-diff-types.d.ts +0 -40
  390. package/dist/scene/scene-diff-types.d.ts.map +0 -1
  391. package/dist/scene/scene-diff-types.js +0 -14
  392. package/dist/scene/scene-loader.d.ts +0 -167
  393. package/dist/scene/scene-loader.d.ts.map +0 -1
  394. package/dist/scene/scene-loader.js +0 -1211
  395. package/dist/scene/scene-query.d.ts +0 -11
  396. package/dist/scene/scene-query.d.ts.map +0 -1
  397. package/dist/scene/scene-query.js +0 -63
  398. package/dist/scene/scene-types.d.ts +0 -10
  399. package/dist/scene/scene-types.d.ts.map +0 -1
  400. package/dist/scene/scene-types.js +0 -8
  401. package/dist/scene/scene-version.d.ts +0 -26
  402. package/dist/scene/scene-version.d.ts.map +0 -1
  403. package/dist/scene/scene-version.js +0 -34
  404. package/dist/scene/schema/animation.d.ts +0 -8
  405. package/dist/scene/schema/animation.d.ts.map +0 -1
  406. package/dist/scene/schema/animation.js +0 -42
  407. package/dist/scene/schema/audio.d.ts +0 -13
  408. package/dist/scene/schema/audio.d.ts.map +0 -1
  409. package/dist/scene/schema/audio.js +0 -22
  410. package/dist/scene/schema/camera.d.ts +0 -28
  411. package/dist/scene/schema/camera.d.ts.map +0 -1
  412. package/dist/scene/schema/camera.js +0 -17
  413. package/dist/scene/schema/collider.d.ts +0 -40
  414. package/dist/scene/schema/collider.d.ts.map +0 -1
  415. package/dist/scene/schema/collider.js +0 -55
  416. package/dist/scene/schema/entity-ref.d.ts +0 -31
  417. package/dist/scene/schema/entity-ref.d.ts.map +0 -1
  418. package/dist/scene/schema/entity-ref.js +0 -61
  419. package/dist/scene/schema/entity.d.ts +0 -1036
  420. package/dist/scene/schema/entity.d.ts.map +0 -1
  421. package/dist/scene/schema/entity.js +0 -153
  422. package/dist/scene/schema/environment.d.ts +0 -425
  423. package/dist/scene/schema/environment.d.ts.map +0 -1
  424. package/dist/scene/schema/environment.js +0 -357
  425. package/dist/scene/schema/index.d.ts +0 -37
  426. package/dist/scene/schema/index.d.ts.map +0 -1
  427. package/dist/scene/schema/index.js +0 -19
  428. package/dist/scene/schema/instances.d.ts +0 -14
  429. package/dist/scene/schema/instances.d.ts.map +0 -1
  430. package/dist/scene/schema/instances.js +0 -28
  431. package/dist/scene/schema/joint.d.ts +0 -23
  432. package/dist/scene/schema/joint.d.ts.map +0 -1
  433. package/dist/scene/schema/joint.js +0 -23
  434. package/dist/scene/schema/light.d.ts +0 -38
  435. package/dist/scene/schema/light.d.ts.map +0 -1
  436. package/dist/scene/schema/light.js +0 -26
  437. package/dist/scene/schema/material.d.ts +0 -199
  438. package/dist/scene/schema/material.d.ts.map +0 -1
  439. package/dist/scene/schema/material.js +0 -103
  440. package/dist/scene/schema/mesh.d.ts +0 -48
  441. package/dist/scene/schema/mesh.d.ts.map +0 -1
  442. package/dist/scene/schema/mesh.js +0 -82
  443. package/dist/scene/schema/particles.d.ts +0 -2178
  444. package/dist/scene/schema/particles.d.ts.map +0 -1
  445. package/dist/scene/schema/particles.js +0 -321
  446. package/dist/scene/schema/physics.d.ts +0 -56
  447. package/dist/scene/schema/physics.d.ts.map +0 -1
  448. package/dist/scene/schema/physics.js +0 -37
  449. package/dist/scene/schema/scene-file.d.ts +0 -303
  450. package/dist/scene/schema/scene-file.d.ts.map +0 -1
  451. package/dist/scene/schema/scene-file.js +0 -256
  452. package/dist/scene/schema/shadow.d.ts +0 -28
  453. package/dist/scene/schema/shadow.d.ts.map +0 -1
  454. package/dist/scene/schema/shadow.js +0 -20
  455. package/dist/scene/schema/spline.d.ts +0 -25
  456. package/dist/scene/schema/spline.d.ts.map +0 -1
  457. package/dist/scene/schema/spline.js +0 -15
  458. package/dist/scene/schema/tuples.d.ts +0 -12
  459. package/dist/scene/schema/tuples.d.ts.map +0 -1
  460. package/dist/scene/schema/tuples.js +0 -14
  461. package/dist/scene/user-data.d.ts +0 -185
  462. package/dist/scene/user-data.d.ts.map +0 -1
  463. package/dist/scene/user-data.js +0 -144
  464. package/dist/setup/setup-audio.d.ts +0 -20
  465. package/dist/setup/setup-audio.d.ts.map +0 -1
  466. package/dist/setup/setup-audio.js +0 -41
  467. package/dist/setup/setup-particles.d.ts +0 -17
  468. package/dist/setup/setup-particles.d.ts.map +0 -1
  469. package/dist/setup/setup-particles.js +0 -16
  470. package/dist/setup/setup-physics.d.ts +0 -25
  471. package/dist/setup/setup-physics.d.ts.map +0 -1
  472. package/dist/setup/setup-physics.js +0 -51
  473. package/dist/setup/setup-renderer.d.ts +0 -69
  474. package/dist/setup/setup-renderer.d.ts.map +0 -1
  475. package/dist/setup/setup-renderer.js +0 -363
  476. package/dist/tools/define-tool.d.ts +0 -130
  477. package/dist/tools/define-tool.d.ts.map +0 -1
  478. package/dist/tools/define-tool.js +0 -96
  479. package/dist/world2d/authoring-2d.d.ts +0 -80
  480. package/dist/world2d/authoring-2d.d.ts.map +0 -1
  481. package/dist/world2d/authoring-2d.js +0 -195
  482. package/dist/world2d/capture-to-scene2d.d.ts +0 -5
  483. package/dist/world2d/capture-to-scene2d.d.ts.map +0 -1
  484. package/dist/world2d/capture-to-scene2d.js +0 -49
  485. package/dist/world2d/collision-2d.d.ts +0 -52
  486. package/dist/world2d/collision-2d.d.ts.map +0 -1
  487. package/dist/world2d/collision-2d.js +0 -70
  488. package/dist/world2d/components-2d.d.ts +0 -47
  489. package/dist/world2d/components-2d.d.ts.map +0 -1
  490. package/dist/world2d/components-2d.js +0 -77
  491. package/dist/world2d/index.d.ts +0 -34
  492. package/dist/world2d/index.d.ts.map +0 -1
  493. package/dist/world2d/index.js +0 -32
  494. package/dist/world2d/ingest-iframe-2d.d.ts +0 -82
  495. package/dist/world2d/ingest-iframe-2d.d.ts.map +0 -1
  496. package/dist/world2d/ingest-iframe-2d.js +0 -166
  497. package/dist/world2d/ingest2d.d.ts +0 -97
  498. package/dist/world2d/ingest2d.d.ts.map +0 -1
  499. package/dist/world2d/ingest2d.js +0 -40
  500. package/dist/world2d/physics2d-registry.d.ts +0 -24
  501. package/dist/world2d/physics2d-registry.d.ts.map +0 -1
  502. package/dist/world2d/physics2d-registry.js +0 -38
  503. package/dist/world2d/pixi-game-adapter.d.ts +0 -107
  504. package/dist/world2d/pixi-game-adapter.d.ts.map +0 -1
  505. package/dist/world2d/pixi-game-adapter.js +0 -210
  506. package/dist/world2d/pixi-surface.d.ts +0 -39
  507. package/dist/world2d/pixi-surface.d.ts.map +0 -1
  508. package/dist/world2d/pixi-surface.js +0 -47
  509. package/dist/world2d/scene-capture-2d.d.ts +0 -43
  510. package/dist/world2d/scene-capture-2d.d.ts.map +0 -1
  511. package/dist/world2d/scene-capture-2d.js +0 -92
  512. package/dist/world2d/scene2d-loader.d.ts +0 -27
  513. package/dist/world2d/scene2d-loader.d.ts.map +0 -1
  514. package/dist/world2d/scene2d-loader.js +0 -275
  515. package/dist/world2d/schema/entity2d.d.ts +0 -102
  516. package/dist/world2d/schema/entity2d.d.ts.map +0 -1
  517. package/dist/world2d/schema/entity2d.js +0 -119
  518. package/dist/world2d/schema/physics2d.d.ts +0 -46
  519. package/dist/world2d/schema/physics2d.d.ts.map +0 -1
  520. package/dist/world2d/schema/physics2d.js +0 -45
  521. package/dist/world2d/schema/sprite.d.ts +0 -42
  522. package/dist/world2d/schema/sprite.d.ts.map +0 -1
  523. package/dist/world2d/schema/sprite.js +0 -63
  524. package/dist/world2d/schema/tilemap.d.ts +0 -15
  525. package/dist/world2d/schema/tilemap.d.ts.map +0 -1
  526. package/dist/world2d/schema/tilemap.js +0 -19
  527. package/dist/world2d/schema/tuples2d.d.ts +0 -20
  528. package/dist/world2d/schema/tuples2d.d.ts.map +0 -1
  529. package/dist/world2d/schema/tuples2d.js +0 -19
  530. package/dist/world2d/system-adapters-2d.d.ts +0 -16
  531. package/dist/world2d/system-adapters-2d.d.ts.map +0 -1
  532. package/dist/world2d/system-adapters-2d.js +0 -37
  533. package/dist/world2d/transform-writer-2d.d.ts +0 -16
  534. package/dist/world2d/transform-writer-2d.d.ts.map +0 -1
  535. package/dist/world2d/transform-writer-2d.js +0 -22
  536. package/dist/world2d/types.d.ts +0 -59
  537. package/dist/world2d/types.d.ts.map +0 -1
  538. package/dist/world2d/types.js +0 -1
@@ -1,351 +0,0 @@
1
- /**
2
- * D3 — stable binding from a Theatre Sheet Object to a `THREE.Object3D`/
3
- * camera (spec §10 D3, §5.3). This is the "thin integration code" the spec
4
- * calls for: it reads a Theatre object's pull-based `.value` on every clock
5
- * crossing and writes the (small, fixed) set of known sub-props straight
6
- * onto the target's real Three.js properties. It is deliberately NOT a
7
- * generic/arbitrary property-path evaluator — the only shapes understood are
8
- * the ones declared below (`TransformProps`, `CameraLensProps`), matching
9
- * "No arbitrary unsafe property-path evaluator is introduced" (D3 AC).
10
- *
11
- * Reads `sheetObject.value` rather than subscribing to Theatre's
12
- * `onValuesChange` push channel — see `theatre-clock-binding.ts`'s module doc
13
- * for why: `.value` is synchronously fresh immediately after
14
- * `sequence.position` is set, while `onValuesChange` is batched on Theatre's
15
- * own raf-driven ticker and is not delivered 1:1 with each synchronous clock
16
- * seek (it may coalesce several writes into one notification, or — headless,
17
- * no-raf — never fire at all).
18
- *
19
- * Object identity: a Theatre Sheet Object always carries both its stable,
20
- * readable Theatre name (`sheetObject.address.objectKey`) and, since the
21
- * caller supplies the bound `THREE.Object3D` directly, that object's own
22
- * engine identity (`Object3D.uuid`/`.name`/`userData['entityId']`) — both are
23
- * inspectable from the object references the binding already holds; nothing
24
- * further to thread through.
25
- *
26
- * ## Remaining D3 channels: quaternion/material/light/post-processing/UI/Pixi
27
- *
28
- * The rest of the D3 AC's channel list (spec §10 D3: "Position,
29
- * rotation/quaternion, scale, camera lens, material/light, post-processing,
30
- * and selected UI properties have tested bindings") is implemented below,
31
- * each as its own small, explicit, TYPED helper — never a generic
32
- * property-path evaluator:
33
- *
34
- * - `bindObject3DQuaternion` — `Object3D.quaternion`, authored as a plain
35
- * `{x,y,z,w}` compound (see `QuaternionProps`'s doc for the interpolation
36
- * caveat and why the binding always normalizes).
37
- * - `bindMaterialProperties` — `color`/`opacity`/`emissiveIntensity`/
38
- * `roughness`/`metalness` on a real `THREE.Material`, feature-detecting
39
- * which sub-props the concrete material subtype actually has.
40
- * - `bindLightProperties` — `intensity`/`color` on a real `THREE.Light`.
41
- * - `bindBloomEffect` / `bindVignetteEffect` — `intensity`/`opacity` and
42
- * `offset`/`darkness` on real `postprocessing` `BloomEffect`/
43
- * `VignetteEffect` instances (the SAME package `setup-renderer.ts` already
44
- * wires into the engine's composer — no new post-processing stack).
45
- * - `bindDomElementStyle` — `opacity`/`translateX`/`translateY` on a
46
- * DOM-style-writable target (`DomStyleTarget`, a narrow structural
47
- * interface a real `HTMLElement` satisfies with no adapter).
48
- * - `bindPixiContainerTransform` — `x`/`y`/`rotation`/`scaleX`/`scaleY`/
49
- * `alpha` on a real `PIXI.Container`/`PIXI.Sprite`.
50
- *
51
- * All of the above are proven against REAL target objects in
52
- * `theatre-object-binding-d3.test.ts` — `BloomEffect`/`VignetteEffect`/
53
- * `PIXI.Container`/`PIXI.Sprite` all construct and expose plain,
54
- * synchronously-settable properties with no WebGL/canvas/renderer required,
55
- * so nothing here is a mock of the underlying library. The one channel that
56
- * genuinely cannot construct real headlessly in THIS repo's `environment:
57
- * 'node'` vitest lane (`vitest.config.ts` — no DOM) is a real `HTMLElement`;
58
- * `bindDomElementStyle` is typed against the narrow `DomStyleTarget`
59
- * structural interface instead of full `HTMLElement`, and its test exercises
60
- * a plain object literal shaped like one — the exact same binding code path
61
- * a real `HTMLElement`/React-overlay ref runs through in a browser or a
62
- * jsdom-backed test. Nothing here is deferred.
63
- */
64
- /** Thrown when a binding is constructed with a missing/falsy target. */
65
- export class TheatreBindingError extends Error {
66
- objectKey;
67
- constructor(message, objectKey) {
68
- super(message);
69
- this.objectKey = objectKey;
70
- this.name = 'TheatreBindingError';
71
- }
72
- }
73
- /**
74
- * Shared disposer wiring for every binding below (same one-shot-dispose
75
- * shape `bindObject3DTransform`/`bindCameraLens` each inline above) — pulled
76
- * into one helper only because six more binding functions follow, to avoid
77
- * repeating the identical five lines six more times. Behavior is identical
78
- * to the inline version: idempotent `dispose()`, no further writes after.
79
- */
80
- function toBinding(handle) {
81
- let disposed = false;
82
- return {
83
- dispose() {
84
- if (disposed)
85
- return;
86
- disposed = true;
87
- handle.dispose();
88
- },
89
- };
90
- }
91
- /**
92
- * Bind a Theatre Sheet Object's `position`/`rotation`/`scale` sub-props (any
93
- * subset) to a `THREE.Object3D`. Whichever of the three keys are present on
94
- * `sheetObject.value` are applied; missing keys are left untouched on the
95
- * target.
96
- *
97
- * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
98
- */
99
- export function bindObject3DTransform(clock, sheetObject, target, options = {}) {
100
- if (!target) {
101
- throw new TheatreBindingError(`[bindObject3DTransform] missing target Object3D for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
102
- }
103
- const phase = options.phase ?? 'preRender';
104
- const handle = clock.subscribe(phase, () => {
105
- const value = sheetObject.value;
106
- if (value.position) {
107
- target.position.set(value.position.x, value.position.y, value.position.z);
108
- }
109
- if (value.rotation) {
110
- target.rotation.set(value.rotation.x, value.rotation.y, value.rotation.z);
111
- }
112
- if (value.scale) {
113
- target.scale.set(value.scale.x, value.scale.y, value.scale.z);
114
- }
115
- });
116
- let disposed = false;
117
- return {
118
- dispose() {
119
- if (disposed)
120
- return;
121
- disposed = true;
122
- handle.dispose();
123
- },
124
- };
125
- }
126
- /**
127
- * Bind a Theatre Sheet Object's `fov`/`near`/`far` sub-props (any subset) to
128
- * a `THREE.PerspectiveCamera`'s lens, calling `updateProjectionMatrix()`
129
- * whenever any of them change.
130
- *
131
- * @throws {TheatreBindingError} if `camera` is null/undefined at bind time.
132
- */
133
- export function bindCameraLens(clock, sheetObject, camera, options = {}) {
134
- if (!camera) {
135
- throw new TheatreBindingError(`[bindCameraLens] missing target PerspectiveCamera for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
136
- }
137
- const phase = options.phase ?? 'preRender';
138
- const handle = clock.subscribe(phase, () => {
139
- const value = sheetObject.value;
140
- let changed = false;
141
- if (typeof value.fov === 'number' && camera.fov !== value.fov) {
142
- camera.fov = value.fov;
143
- changed = true;
144
- }
145
- if (typeof value.near === 'number' && camera.near !== value.near) {
146
- camera.near = value.near;
147
- changed = true;
148
- }
149
- if (typeof value.far === 'number' && camera.far !== value.far) {
150
- camera.far = value.far;
151
- changed = true;
152
- }
153
- if (changed)
154
- camera.updateProjectionMatrix();
155
- });
156
- let disposed = false;
157
- return {
158
- dispose() {
159
- if (disposed)
160
- return;
161
- disposed = true;
162
- handle.dispose();
163
- },
164
- };
165
- }
166
- /**
167
- * Bind a Theatre Sheet Object's `quaternion` sub-prop to a `THREE.Object3D`'s
168
- * `.quaternion`. See `QuaternionProps`'s doc for the authored shape and its
169
- * interpolation caveat.
170
- *
171
- * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
172
- */
173
- export function bindObject3DQuaternion(clock, sheetObject, target, options = {}) {
174
- if (!target) {
175
- throw new TheatreBindingError(`[bindObject3DQuaternion] missing target Object3D for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
176
- }
177
- const phase = options.phase ?? 'preRender';
178
- const handle = clock.subscribe(phase, () => {
179
- const value = sheetObject.value;
180
- if (value.quaternion) {
181
- const { x, y, z, w } = value.quaternion;
182
- target.quaternion.set(x, y, z, w);
183
- target.quaternion.normalize();
184
- }
185
- });
186
- return toBinding(handle);
187
- }
188
- /**
189
- * Bind a Theatre Sheet Object's `color`/`opacity`/`emissiveIntensity`/
190
- * `roughness`/`metalness` sub-props (any subset the target material
191
- * supports) to a `THREE.Material`.
192
- *
193
- * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
194
- */
195
- export function bindMaterialProperties(clock, sheetObject, target, options = {}) {
196
- if (!target) {
197
- throw new TheatreBindingError(`[bindMaterialProperties] missing target Material for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
198
- }
199
- const material = target;
200
- const phase = options.phase ?? 'preRender';
201
- const handle = clock.subscribe(phase, () => {
202
- const value = sheetObject.value;
203
- if (value.color && material.color) {
204
- material.color.setRGB(value.color.r, value.color.g, value.color.b);
205
- }
206
- if (typeof value.opacity === 'number') {
207
- material.opacity = value.opacity;
208
- }
209
- if (typeof value.emissiveIntensity === 'number' && 'emissiveIntensity' in material) {
210
- material.emissiveIntensity = value.emissiveIntensity;
211
- }
212
- if (typeof value.roughness === 'number' && 'roughness' in material) {
213
- material.roughness = value.roughness;
214
- }
215
- if (typeof value.metalness === 'number' && 'metalness' in material) {
216
- material.metalness = value.metalness;
217
- }
218
- });
219
- return toBinding(handle);
220
- }
221
- /**
222
- * Bind a Theatre Sheet Object's `intensity`/`color` sub-props (any subset)
223
- * to a `THREE.Light`.
224
- *
225
- * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
226
- */
227
- export function bindLightProperties(clock, sheetObject, target, options = {}) {
228
- if (!target) {
229
- throw new TheatreBindingError(`[bindLightProperties] missing target Light for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
230
- }
231
- const phase = options.phase ?? 'preRender';
232
- const handle = clock.subscribe(phase, () => {
233
- const value = sheetObject.value;
234
- if (typeof value.intensity === 'number') {
235
- target.intensity = value.intensity;
236
- }
237
- if (value.color) {
238
- target.color.setRGB(value.color.r, value.color.g, value.color.b);
239
- }
240
- });
241
- return toBinding(handle);
242
- }
243
- /**
244
- * Bind a Theatre Sheet Object's `intensity`/`opacity` sub-props (any subset)
245
- * to a real `postprocessing` `BloomEffect` — the SAME `postprocessing` npm
246
- * package the engine's own composer pipeline already uses directly
247
- * (`setup-renderer.ts`), not a new post-processing stack.
248
- *
249
- * @throws {TheatreBindingError} if `effect` is null/undefined at bind time.
250
- */
251
- export function bindBloomEffect(clock, sheetObject, effect, options = {}) {
252
- if (!effect) {
253
- throw new TheatreBindingError(`[bindBloomEffect] missing target BloomEffect for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
254
- }
255
- const phase = options.phase ?? 'preRender';
256
- const handle = clock.subscribe(phase, () => {
257
- const value = sheetObject.value;
258
- if (typeof value.intensity === 'number') {
259
- effect.intensity = value.intensity;
260
- }
261
- if (typeof value.opacity === 'number') {
262
- effect.blendMode.opacity.value = value.opacity;
263
- }
264
- });
265
- return toBinding(handle);
266
- }
267
- /**
268
- * Bind a Theatre Sheet Object's `offset`/`darkness` sub-props (any subset) to
269
- * a real `postprocessing` `VignetteEffect` — same package/no-wrapper note as
270
- * `bindBloomEffect` above.
271
- *
272
- * @throws {TheatreBindingError} if `effect` is null/undefined at bind time.
273
- */
274
- export function bindVignetteEffect(clock, sheetObject, effect, options = {}) {
275
- if (!effect) {
276
- throw new TheatreBindingError(`[bindVignetteEffect] missing target VignetteEffect for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
277
- }
278
- const phase = options.phase ?? 'preRender';
279
- const handle = clock.subscribe(phase, () => {
280
- const value = sheetObject.value;
281
- if (typeof value.offset === 'number') {
282
- effect.offset = value.offset;
283
- }
284
- if (typeof value.darkness === 'number') {
285
- effect.darkness = value.darkness;
286
- }
287
- });
288
- return toBinding(handle);
289
- }
290
- /**
291
- * Bind a Theatre Sheet Object's `opacity`/`translateX`/`translateY`
292
- * sub-props (any subset) to a DOM-style-writable target's inline style. See
293
- * `DomStyleTarget`'s doc for how this is proven without a real browser DOM.
294
- *
295
- * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
296
- */
297
- export function bindDomElementStyle(clock, sheetObject, target, options = {}) {
298
- if (!target) {
299
- throw new TheatreBindingError(`[bindDomElementStyle] missing target DOM element for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
300
- }
301
- const phase = options.phase ?? 'preRender';
302
- let lastTranslateX = 0;
303
- let lastTranslateY = 0;
304
- const handle = clock.subscribe(phase, () => {
305
- const value = sheetObject.value;
306
- if (typeof value.opacity === 'number') {
307
- target.style.opacity = String(value.opacity);
308
- }
309
- if (typeof value.translateX === 'number')
310
- lastTranslateX = value.translateX;
311
- if (typeof value.translateY === 'number')
312
- lastTranslateY = value.translateY;
313
- if (typeof value.translateX === 'number' || typeof value.translateY === 'number') {
314
- target.style.transform = `translate(${lastTranslateX}px, ${lastTranslateY}px)`;
315
- }
316
- });
317
- return toBinding(handle);
318
- }
319
- /**
320
- * Bind a Theatre Sheet Object's `x`/`y`/`rotation`/`scaleX`/`scaleY`/`alpha`
321
- * sub-props (any subset) to a real `PIXI.Container`/`PIXI.Sprite` (reusing
322
- * the world2d stack's own `pixi.js` dependency — see this module's
323
- * type-only `pixi.js` import above and its doc note on why the engine core
324
- * never value-imports it). Plain `Container`/`Sprite` construction needs no
325
- * canvas/WebGL context, so this is proven against a REAL Pixi object in
326
- * `theatre-object-binding-d3.test.ts`, not a stand-in.
327
- *
328
- * @throws {TheatreBindingError} if `target` is null/undefined at bind time.
329
- */
330
- export function bindPixiContainerTransform(clock, sheetObject, target, options = {}) {
331
- if (!target) {
332
- throw new TheatreBindingError(`[bindPixiContainerTransform] missing target PIXI.Container for Theatre object "${sheetObject.address.objectKey}"`, sheetObject.address.objectKey);
333
- }
334
- const phase = options.phase ?? 'preRender';
335
- const handle = clock.subscribe(phase, () => {
336
- const value = sheetObject.value;
337
- if (typeof value.x === 'number')
338
- target.x = value.x;
339
- if (typeof value.y === 'number')
340
- target.y = value.y;
341
- if (typeof value.rotation === 'number')
342
- target.rotation = value.rotation;
343
- if (typeof value.scaleX === 'number')
344
- target.scale.x = value.scaleX;
345
- if (typeof value.scaleY === 'number')
346
- target.scale.y = value.scaleY;
347
- if (typeof value.alpha === 'number')
348
- target.alpha = value.alpha;
349
- });
350
- return toBinding(handle);
351
- }
@@ -1,56 +0,0 @@
1
- import * as THREE from 'three';
2
- import type { Actor, AnyActor, AnyStateMachine } from 'xstate';
3
- import type { createSystemRunner } from '../core/system-runner';
4
- import { type AnimationBoneMask } from './xstate-animation-meta';
5
- /** A binding-time problem such as a missing clip, bone, or ambiguous layer. */
6
- export declare class AnimationBindingError extends Error {
7
- readonly stateId?: string | undefined;
8
- constructor(message: string, stateId?: string | undefined);
9
- }
10
- export interface XStateAnimationBindingOptions {
11
- /** Select live numeric/boolean blend-tree parameters from actor context. */
12
- selectParameters?: (context: unknown) => Record<string, number | boolean>;
13
- /** Root whose named Bone/Object3D hierarchy is used by `boneMask`. Defaults to mixer root. */
14
- root?: THREE.Object3D;
15
- /** Entity that exposes this binding to editor/runtime inspection. Defaults to `root`. */
16
- owner?: THREE.Object3D;
17
- /**
18
- * Engine runner used to register `tick` in the canonical animation phase.
19
- * Pass `ctx.systems`; disposal removes the callback automatically. When
20
- * omitted, the caller owns ticking (useful for standalone Three tests).
21
- */
22
- systems?: Pick<ReturnType<typeof createSystemRunner>, 'add' | 'remove'>;
23
- }
24
- export interface XStateAnimationLayerState {
25
- readonly layer: string;
26
- readonly stateId: string;
27
- readonly clips: readonly string[];
28
- readonly weight: number;
29
- readonly blendMode: 'override' | 'additive';
30
- readonly boneMask?: AnimationBoneMask;
31
- }
32
- export interface XStateAnimationBinding {
33
- /** Advance native actions/mixer. Register this in the engine animation phase. */
34
- tick: (dt: number) => void;
35
- readonly actor: AnyActor;
36
- /** Current native composition, useful to the editor and game diagnostics. */
37
- getActiveLayers: () => readonly XStateAnimationLayerState[];
38
- /** Unsubscribe, stop/uncache actions, and remove owner inspection data. Idempotent. */
39
- dispose: () => void;
40
- }
41
- /** React/useSyncExternalStore-compatible lifecycle signal for live editor inspection. */
42
- export declare function subscribeXStateAnimationBindings(listener: () => void): () => void;
43
- /** Monotonic snapshot changed whenever a binding is attached or disposed. */
44
- export declare function getXStateAnimationBindingsVersion(): number;
45
- /**
46
- * Bind a native XState actor to native Three actions.
47
- *
48
- * One active animated state is allowed per named layer. Parallel XState
49
- * regions therefore compose lower-body locomotion, upper-body weapon states,
50
- * facial animation, and other independent layers without introducing a
51
- * second transition language. Bone masks clone/filter native clip tracks;
52
- * additive layers use `AnimationUtils.makeClipAdditive` and Three's additive
53
- * blend mode. Single unlayered machines retain the original clip/action path.
54
- */
55
- export declare function bindXStateAnimation(actor: Actor<AnyStateMachine>, mixer: THREE.AnimationMixer, clips: Map<string, THREE.AnimationClip>, options?: XStateAnimationBindingOptions): XStateAnimationBinding;
56
- //# sourceMappingURL=xstate-animation-binding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xstate-animation-binding.d.ts","sourceRoot":"","sources":["../../src/animation/xstate-animation-binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAIhE,OAAO,EACL,KAAK,iBAAiB,EAOvB,MAAM,yBAAyB,CAAC;AAEjC,+EAA+E;AAC/E,qBAAa,qBAAsB,SAAQ,KAAK;IAG5C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM;gBADzB,OAAO,EAAE,MAAM,EACN,OAAO,CAAC,EAAE,MAAM,YAAA;CAK5B;AAED,MAAM,WAAW,6BAA6B;IAC5C,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC1E,8FAA8F;IAC9F,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IACtB,yFAAyF;IACzF,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,MAAM,WAAW,sBAAsB;IACrC,iFAAiF;IACjF,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,SAAS,yBAAyB,EAAE,CAAC;IAC5D,uFAAuF;IACvF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAKD,yFAAyF;AACzF,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAGjF;AAED,6EAA6E;AAC7E,wBAAgB,iCAAiC,IAAI,MAAM,CAE1D;AAqGD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,EAC7B,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,EACvC,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAsPxB"}