@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,363 +0,0 @@
1
- import { N8AOPostPass } from 'n8ao';
2
- import { BloomEffect, BrightnessContrastEffect, ChromaticAberrationEffect, ColorDepthEffect, DepthOfFieldEffect, DotScreenEffect, EffectComposer, EffectPass, GlitchEffect, GodRaysEffect, GridEffect, HueSaturationEffect, LensDistortionEffect, NoiseEffect, NormalPass, OutlineEffect, PixelationEffect, RenderPass, ScanlineEffect, SepiaEffect, ShockWaveEffect, SMAAEffect, SMAAPreset, SSAOEffect, TiltShiftEffect, VignetteEffect, } from 'postprocessing';
3
- import { MotionBlurEffect, SSGIEffect, SSREffect, VelocityDepthNormalPass } from 'realism-effects';
4
- import * as THREE from 'three';
5
- import { resolveRenderSettings } from '../render/render-settings';
6
- import { DEFAULTS } from '../scene/defaults';
7
- /**
8
- * Apply the live renderer-level render settings (shadows, resolution scale) from
9
- * the resolved cascade. `antialias`/`backend` are reload-only (renderer re-init)
10
- * and are handled at construction, not here. Pass the scene `rendering` scope
11
- * (e.g. `env.rendering`); absent values fall back to the registry defaults so
12
- * behavior is unchanged when a scene omits `rendering`.
13
- *
14
- * `basePixelRatio` is the call-site's native pixel-ratio policy (the runtime caps
15
- * at 2; the editor uses the raw devicePixelRatio); `resolutionScale` multiplies it.
16
- */
17
- export function applyRendererSettings(renderer, rendering, basePixelRatio = Math.min(window.devicePixelRatio, 2)) {
18
- const settings = resolveRenderSettings(rendering);
19
- renderer.shadowMap.enabled = Boolean(settings['shadows']);
20
- const scale = Number(settings['resolutionScale']) || 1;
21
- renderer.setPixelRatio(basePixelRatio * scale);
22
- }
23
- /**
24
- * Create ONLY the WebGL renderer. The HOST owns the renderer (see
25
- * `HostContext.renderer`); the game/adapter owns the scene/camera/composer it
26
- * renders into. Split out of `setupRenderer` for the adapter inversion.
27
- *
28
- * `rendering` is the scene-level render scope (`env.rendering`); it seeds the
29
- * reload-only `antialias` option at construction and the live shadow/resolution
30
- * settings (via {@link applyRendererSettings}). Absent → registry defaults.
31
- *
32
- * `opts` is additive (T6.1 slice 1, COMPOSITION-DESIGN.md D5 §1/§4): omitted
33
- * entirely, construction is byte-identical to before (no `alpha`/
34
- * `preserveDrawingBuffer` keys at all) — the legacy single-canvas host never
35
- * passes it. The roots path passes `alpha:true` for every stacked canvas
36
- * above the bottom one (so its clear-alpha-0 shows the layer below through
37
- * it) and `preserveDrawingBuffer:true` for every stacked canvas (the
38
- * recorded capture-tier cost, paid once here rather than re-derived later).
39
- */
40
- export function createHostRenderer(canvas, width = window.innerWidth, height = window.innerHeight, rendering, opts) {
41
- // A newly-shown editor tab can report 0x0 for one layout frame. WebGL render
42
- // targets cannot have zero-sized attachments, so boot at the smallest valid
43
- // backing size and let the normal resize path apply the real dimensions.
44
- const safeWidth = Math.max(1, width);
45
- const safeHeight = Math.max(1, height);
46
- const settings = resolveRenderSettings(rendering);
47
- const renderer = new THREE.WebGLRenderer({
48
- canvas,
49
- antialias: Boolean(settings['antialias']),
50
- powerPreference: 'high-performance',
51
- ...(opts?.alpha ? { alpha: true } : {}),
52
- ...(opts?.preserveDrawingBuffer ? { preserveDrawingBuffer: true } : {}),
53
- });
54
- renderer.setSize(safeWidth, safeHeight);
55
- applyRendererSettings(renderer, rendering);
56
- renderer.shadowMap.type = THREE.PCFSoftShadowMap;
57
- renderer.toneMapping = toneMappingModes[DEFAULTS.toneMapping.mode] ?? THREE.ACESFilmicToneMapping;
58
- renderer.toneMappingExposure = DEFAULTS.toneMapping.exposure;
59
- return renderer;
60
- }
61
- /**
62
- * Create the scene, camera, and postprocessing composer that a first-party game
63
- * renders into, given a host-provided renderer. The GPU-only `composer` is
64
- * created here; a headless host (no GPU) skips this entirely.
65
- */
66
- export function createSceneView(renderer, width = window.innerWidth, height = window.innerHeight) {
67
- const safeWidth = Math.max(1, width);
68
- const safeHeight = Math.max(1, height);
69
- const scene = new THREE.Scene();
70
- scene.background = new THREE.Color(0x1a1a2e);
71
- const camera = new THREE.PerspectiveCamera(DEFAULTS.camera.fov, safeWidth / safeHeight, DEFAULTS.camera.near, DEFAULTS.camera.far);
72
- camera.position.set(0, 5, 10);
73
- camera.lookAt(0, 0, 0);
74
- const composer = new EffectComposer(renderer);
75
- composer.addPass(new RenderPass(scene, camera));
76
- composer.addPass(new EffectPass(camera, new BloomEffect({ luminanceThreshold: DEFAULTS.postProcessing.bloom.luminanceThreshold })));
77
- return { scene, camera, composer };
78
- }
79
- /**
80
- * Creates the Three.js renderer, scene, camera, and postprocessing pipeline.
81
- *
82
- * This is direct Three.js setup — no abstraction. Edit freely. (Now a thin
83
- * combination of {@link createHostRenderer} + {@link createSceneView}.)
84
- */
85
- export function setupRenderer(canvas, width = window.innerWidth, height = window.innerHeight) {
86
- const renderer = createHostRenderer(canvas, width, height);
87
- const { scene, camera, composer } = createSceneView(renderer, width, height);
88
- return { renderer, scene, camera, composer };
89
- }
90
- const toneMappingModes = {
91
- none: THREE.NoToneMapping,
92
- linear: THREE.LinearToneMapping,
93
- reinhard: THREE.ReinhardToneMapping,
94
- cineon: THREE.CineonToneMapping,
95
- aces: THREE.ACESFilmicToneMapping,
96
- agx: THREE.AgXToneMapping,
97
- };
98
- const smaaPresets = {
99
- low: SMAAPreset.LOW,
100
- medium: SMAAPreset.MEDIUM,
101
- high: SMAAPreset.HIGH,
102
- ultra: SMAAPreset.ULTRA,
103
- };
104
- /**
105
- * Rebuild composer passes from scene environment settings.
106
- * Scenes without toneMapping default to ACES (the runtime default).
107
- * Code can further modify the composer after this call.
108
- *
109
- * Pass objectMap to enable entity-referencing effects (godRays, outline).
110
- * Pass entities to resolve tag-based references (outline).
111
- */
112
- export function applyScenePostProcessing(composer, renderer, scene, camera, env, objectMap, entityTags) {
113
- // Dispose the existing passes before discarding them — removeAllPasses() just
114
- // drops the references, so their GPU render targets would otherwise leak on
115
- // every env edit / scene switch.
116
- for (const pass of composer.passes) {
117
- pass.dispose?.();
118
- }
119
- composer.removeAllPasses();
120
- composer.addPass(new RenderPass(scene, camera));
121
- // ── Tone mapping ──────────────────────────────────────────────────────
122
- const tm = env?.toneMapping;
123
- renderer.toneMapping =
124
- toneMappingModes[tm?.mode ?? DEFAULTS.toneMapping.mode] ?? THREE.ACESFilmicToneMapping;
125
- renderer.toneMappingExposure = tm?.exposure ?? DEFAULTS.toneMapping.exposure;
126
- // ── Master switch ─────────────────────────────────────────────────────
127
- // When post-processing is disabled at the scene/engine level, render the
128
- // plain scene (the RenderPass added above) and skip every effect pass. The
129
- // per-effect `enabled` flags below still apply when the master switch is on.
130
- if (!resolveRenderSettings(env?.rendering)['postProcessing'])
131
- return;
132
- const pp = env?.postProcessing;
133
- const d = DEFAULTS.postProcessing;
134
- // ── Prerequisite passes ───────────────────────────────────────────────
135
- // NormalPass — needed by SSAO
136
- let normalPass;
137
- if (pp?.ssao?.enabled) {
138
- normalPass = new NormalPass(scene, camera);
139
- composer.addPass(normalPass);
140
- }
141
- // VelocityDepthNormalPass — needed by SSR, SSGI, MotionBlur
142
- let velocityPass;
143
- if (pp?.ssr?.enabled || pp?.ssgi?.enabled || pp?.motionBlur?.enabled) {
144
- velocityPass = new VelocityDepthNormalPass(scene, camera);
145
- composer.addPass(velocityPass);
146
- }
147
- // N8AOPostPass — separate Pass, not an Effect
148
- if (pp?.n8ao?.enabled) {
149
- const n8aoPass = new N8AOPostPass(scene, camera);
150
- const cfg = n8aoPass.configuration;
151
- cfg.aoSamples = pp.n8ao.aoSamples ?? d.n8ao.aoSamples;
152
- cfg.aoRadius = pp.n8ao.aoRadius ?? d.n8ao.aoRadius;
153
- cfg.intensity = pp.n8ao.intensity ?? d.n8ao.intensity;
154
- cfg.denoiseSamples = pp.n8ao.denoiseSamples ?? d.n8ao.denoiseSamples;
155
- cfg.denoiseRadius = pp.n8ao.denoiseRadius ?? d.n8ao.denoiseRadius;
156
- cfg.distanceFalloff = pp.n8ao.distanceFalloff ?? d.n8ao.distanceFalloff;
157
- if (pp.n8ao.screenSpaceRadius !== undefined)
158
- cfg.screenSpaceRadius = pp.n8ao.screenSpaceRadius;
159
- if (pp.n8ao.halfRes !== undefined)
160
- cfg.halfRes = pp.n8ao.halfRes;
161
- if (pp.n8ao.color)
162
- cfg.color = new THREE.Color(pp.n8ao.color);
163
- composer.addPass(n8aoPass);
164
- }
165
- // ── Collect Effect instances ──────────────────────────────────────────
166
- const effects = [];
167
- // Anti-aliasing
168
- if (pp?.smaa?.enabled) {
169
- const preset = smaaPresets[pp.smaa.preset ?? d.smaa.preset] ?? SMAAPreset.HIGH;
170
- effects.push(new SMAAEffect({ preset }));
171
- }
172
- // Ambient occlusion
173
- if (pp?.ssao?.enabled && normalPass) {
174
- effects.push(new SSAOEffect(camera, normalPass.texture, {
175
- radius: pp.ssao.radius ?? d.ssao.radius,
176
- intensity: pp.ssao.intensity ?? d.ssao.intensity,
177
- bias: pp.ssao.bias ?? d.ssao.bias,
178
- samples: pp.ssao.samples ?? d.ssao.samples,
179
- rings: pp.ssao.rings ?? d.ssao.rings,
180
- fade: pp.ssao.fade ?? d.ssao.fade,
181
- ...(pp.ssao.color ? { color: new THREE.Color(pp.ssao.color) } : {}),
182
- }));
183
- }
184
- // SSR (realism-effects)
185
- if (pp?.ssr?.enabled && velocityPass) {
186
- effects.push(new SSREffect(scene, camera, velocityPass, {
187
- intensity: pp.ssr.intensity ?? d.ssr.intensity,
188
- exponent: pp.ssr.exponent ?? d.ssr.exponent,
189
- distance: pp.ssr.distance ?? d.ssr.distance,
190
- thickness: pp.ssr.thickness ?? d.ssr.thickness,
191
- maxRoughness: pp.ssr.maxRoughness ?? d.ssr.maxRoughness,
192
- }));
193
- }
194
- // SSGI (realism-effects)
195
- if (pp?.ssgi?.enabled && velocityPass) {
196
- effects.push(new SSGIEffect(scene, camera, velocityPass, {
197
- intensity: pp.ssgi.intensity ?? d.ssgi.intensity,
198
- distance: pp.ssgi.distance ?? d.ssgi.distance,
199
- thickness: pp.ssgi.thickness ?? d.ssgi.thickness,
200
- maxRoughness: pp.ssgi.maxRoughness ?? d.ssgi.maxRoughness,
201
- }));
202
- }
203
- // Motion blur (realism-effects)
204
- if (pp?.motionBlur?.enabled && velocityPass) {
205
- effects.push(new MotionBlurEffect(velocityPass, {
206
- intensity: pp.motionBlur.intensity ?? d.motionBlur.intensity,
207
- jitter: pp.motionBlur.jitter ?? d.motionBlur.jitter,
208
- samples: pp.motionBlur.samples ?? d.motionBlur.samples,
209
- }));
210
- }
211
- // Bloom
212
- if (pp?.bloom?.enabled) {
213
- effects.push(new BloomEffect({
214
- intensity: pp.bloom.intensity ?? d.bloom.intensity,
215
- luminanceThreshold: pp.bloom.luminanceThreshold ?? d.bloom.luminanceThreshold,
216
- luminanceSmoothing: pp.bloom.luminanceSmoothing ?? d.bloom.luminanceSmoothing,
217
- }));
218
- }
219
- // Depth of field
220
- if (pp?.depthOfField?.enabled) {
221
- effects.push(new DepthOfFieldEffect(camera, {
222
- worldFocusDistance: pp.depthOfField.worldFocusDistance ?? d.depthOfField.worldFocusDistance,
223
- worldFocusRange: pp.depthOfField.worldFocusRange ?? d.depthOfField.worldFocusRange,
224
- bokehScale: pp.depthOfField.bokehScale ?? d.depthOfField.bokehScale,
225
- focalLength: pp.depthOfField.focalLength ?? d.depthOfField.focalLength,
226
- }));
227
- }
228
- // Tilt shift
229
- if (pp?.tiltShift?.enabled) {
230
- effects.push(new TiltShiftEffect({
231
- offset: pp.tiltShift.offset ?? d.tiltShift.offset,
232
- rotation: pp.tiltShift.rotation ?? d.tiltShift.rotation,
233
- focusArea: pp.tiltShift.focusArea ?? d.tiltShift.focusArea,
234
- feather: pp.tiltShift.feather ?? d.tiltShift.feather,
235
- }));
236
- }
237
- // God rays (needs entity reference)
238
- if (pp?.godRays?.enabled && pp.godRays.sourceEntity && objectMap) {
239
- const lightObj = objectMap.get(pp.godRays.sourceEntity);
240
- if (lightObj instanceof THREE.Mesh || lightObj instanceof THREE.Points) {
241
- effects.push(new GodRaysEffect(camera, lightObj, {
242
- density: pp.godRays.density ?? d.godRays.density,
243
- decay: pp.godRays.decay ?? d.godRays.decay,
244
- weight: pp.godRays.weight ?? d.godRays.weight,
245
- exposure: pp.godRays.exposure ?? d.godRays.exposure,
246
- samples: pp.godRays.samples ?? d.godRays.samples,
247
- }));
248
- }
249
- }
250
- // Outline (needs entity tag references)
251
- if (pp?.outline?.enabled && objectMap) {
252
- const outlineEffect = new OutlineEffect(scene, camera, {
253
- edgeStrength: pp.outline.edgeStrength ?? d.outline.edgeStrength,
254
- pulseSpeed: pp.outline.pulseSpeed ?? d.outline.pulseSpeed,
255
- visibleEdgeColor: pp.outline.visibleEdgeColor
256
- ? new THREE.Color(pp.outline.visibleEdgeColor).getHex()
257
- : new THREE.Color(d.outline.visibleEdgeColor).getHex(),
258
- hiddenEdgeColor: pp.outline.hiddenEdgeColor
259
- ? new THREE.Color(pp.outline.hiddenEdgeColor).getHex()
260
- : new THREE.Color(d.outline.hiddenEdgeColor).getHex(),
261
- xRay: pp.outline.xRay ?? false,
262
- });
263
- // Add entities matching tags to selection
264
- const tags = pp.outline.tags ?? [];
265
- if (tags.length > 0 && entityTags) {
266
- for (const [entityId, eTags] of entityTags) {
267
- if (tags.some((t) => eTags.includes(t))) {
268
- const obj = objectMap.get(entityId);
269
- if (obj)
270
- outlineEffect.selection.add(obj);
271
- }
272
- }
273
- }
274
- effects.push(outlineEffect);
275
- }
276
- // Chromatic aberration
277
- if (pp?.chromaticAberration?.enabled) {
278
- effects.push(new ChromaticAberrationEffect({
279
- offset: new THREE.Vector2(pp.chromaticAberration.offsetX ?? d.chromaticAberration.offsetX, pp.chromaticAberration.offsetY ?? d.chromaticAberration.offsetY),
280
- radialModulation: pp.chromaticAberration.radialModulation ?? false,
281
- modulationOffset: pp.chromaticAberration.modulationOffset ?? d.chromaticAberration.modulationOffset,
282
- }));
283
- }
284
- // Lens distortion
285
- if (pp?.lensDistortion?.enabled) {
286
- effects.push(new LensDistortionEffect({
287
- distortion: new THREE.Vector2(pp.lensDistortion.distortionX ?? d.lensDistortion.distortionX, pp.lensDistortion.distortionY ?? d.lensDistortion.distortionY),
288
- principalPoint: new THREE.Vector2(0, 0),
289
- focalLength: new THREE.Vector2(pp.lensDistortion.focalLengthX ?? d.lensDistortion.focalLengthX, pp.lensDistortion.focalLengthY ?? d.lensDistortion.focalLengthY),
290
- skew: pp.lensDistortion.skew ?? d.lensDistortion.skew,
291
- }));
292
- }
293
- // Shock wave
294
- if (pp?.shockWave?.enabled) {
295
- effects.push(new ShockWaveEffect(camera, new THREE.Vector3(pp.shockWave.positionX ?? 0, pp.shockWave.positionY ?? 0, pp.shockWave.positionZ ?? 0), {
296
- speed: pp.shockWave.speed ?? d.shockWave.speed,
297
- maxRadius: pp.shockWave.maxRadius ?? d.shockWave.maxRadius,
298
- waveSize: pp.shockWave.waveSize ?? d.shockWave.waveSize,
299
- amplitude: pp.shockWave.amplitude ?? d.shockWave.amplitude,
300
- }));
301
- }
302
- // Color adjustments
303
- if (pp?.brightnessContrast?.enabled) {
304
- effects.push(new BrightnessContrastEffect({
305
- brightness: pp.brightnessContrast.brightness ?? d.brightnessContrast.brightness,
306
- contrast: pp.brightnessContrast.contrast ?? d.brightnessContrast.contrast,
307
- }));
308
- }
309
- if (pp?.hueSaturation?.enabled) {
310
- effects.push(new HueSaturationEffect({
311
- hue: pp.hueSaturation.hue ?? d.hueSaturation.hue,
312
- saturation: pp.hueSaturation.saturation ?? d.hueSaturation.saturation,
313
- }));
314
- }
315
- if (pp?.sepia?.enabled) {
316
- effects.push(new SepiaEffect({ intensity: pp.sepia.intensity ?? d.sepia.intensity }));
317
- }
318
- if (pp?.colorDepth?.enabled) {
319
- effects.push(new ColorDepthEffect({ bits: pp.colorDepth.bits ?? d.colorDepth.bits }));
320
- }
321
- // Film / retro
322
- if (pp?.noise?.enabled) {
323
- effects.push(new NoiseEffect({ premultiply: pp.noise.premultiply ?? d.noise.premultiply }));
324
- }
325
- if (pp?.scanline?.enabled) {
326
- effects.push(new ScanlineEffect({ density: pp.scanline.density ?? d.scanline.density }));
327
- }
328
- if (pp?.dotScreen?.enabled) {
329
- effects.push(new DotScreenEffect({
330
- angle: pp.dotScreen.angle ?? d.dotScreen.angle,
331
- scale: pp.dotScreen.scale ?? d.dotScreen.scale,
332
- }));
333
- }
334
- if (pp?.grid?.enabled) {
335
- effects.push(new GridEffect({
336
- scale: pp.grid.scale ?? d.grid.scale,
337
- lineWidth: pp.grid.lineWidth ?? d.grid.lineWidth,
338
- }));
339
- }
340
- if (pp?.pixelation?.enabled) {
341
- effects.push(new PixelationEffect(pp.pixelation.granularity ?? d.pixelation.granularity));
342
- }
343
- if (pp?.glitch?.enabled) {
344
- effects.push(new GlitchEffect({
345
- delay: new THREE.Vector2(pp.glitch.delayX ?? d.glitch.delayX, pp.glitch.delayY ?? d.glitch.delayY),
346
- duration: new THREE.Vector2(pp.glitch.durationX ?? d.glitch.durationX, pp.glitch.durationY ?? d.glitch.durationY),
347
- strength: new THREE.Vector2(pp.glitch.strengthX ?? d.glitch.strengthX, pp.glitch.strengthY ?? d.glitch.strengthY),
348
- columns: pp.glitch.columns ?? d.glitch.columns,
349
- ratio: pp.glitch.ratio ?? d.glitch.ratio,
350
- }));
351
- }
352
- // Vignette (last color effect)
353
- if (pp?.vignette?.enabled) {
354
- effects.push(new VignetteEffect({
355
- darkness: pp.vignette.darkness ?? d.vignette.darkness,
356
- offset: pp.vignette.offset ?? d.vignette.offset,
357
- }));
358
- }
359
- // ── Merge all effects into a single EffectPass ────────────────────────
360
- if (effects.length > 0) {
361
- composer.addPass(new EffectPass(camera, ...effects));
362
- }
363
- }
@@ -1,130 +0,0 @@
1
- /**
2
- * Project tools — W4/W3 of `docs/DATA-TOOLS-DESIGN.md` (§3 contract).
3
- *
4
- * A project tool is ONE file, `src/tools/<name>.tool.tsx`, discovered by
5
- * folder scan (same physics as data assets, §3.1: zero registration, delete
6
- * the file → gone). The file exports exactly two things:
7
- *
8
- * ```tsx
9
- * export const tool = defineTool({
10
- * id: 'tuning', // stable slug — becomes the tab's test id
11
- * title: 'Tuning', // the tab label (rendered after a ⚙ marker)
12
- * placement: 'document', // project-global dashboard (§3.2; 'dock' = deprecated alias)
13
- * });
14
- * export default function Tuning() { … } // plain React
15
- * ```
16
- *
17
- * or, selection-scoped (W3 — §3.2's second placement):
18
- *
19
- * ```tsx
20
- * export const tool = defineTool({
21
- * id: 'spin',
22
- * title: 'Spin',
23
- * placement: 'inspector', // selection-scoped section
24
- * match: (node) => node?.kind === 'mesh', // same contract as the
25
- * }); // inspector-section registry
26
- * export default function Spin({ node }: InspectorToolProps) { … }
27
- * ```
28
- *
29
- * The editor renders dock tools as visually distinct tabs after a separator
30
- * at the end of the bottom dock's tab row (§3.5); inspector tools render as
31
- * a ⚙-marked section in the Inspector rail whenever `match` accepts the
32
- * current selection. Both render inside an error boundary — a crashing tool
33
- * never takes the editor down. Tools are EDITOR-ONLY: no game build bundles
34
- * `src/tools/` (§4 — nothing in game code imports it), so dev/cheat surfaces
35
- * can never leak into a tester serve.
36
- *
37
- * This module is deliberately react-free metadata (the engine core outside
38
- * `src/react/` must not import react — `test/react-core-import-ban.test.ts`);
39
- * the react-facing tool hooks live in `@engine/react/use-data`, and the
40
- * editor-styled widget kit tools build panels from is `@editor/widgets`.
41
- */
42
- import type { AuthoringAdapter, EditorNode } from '../adapter';
43
- /**
44
- * Tool placements. Since W0 of the editor workspace-shell program
45
- * (docs/EDITOR-WORKSPACE-SHELL-TODO.md §7.2), placement describes MEANING,
46
- * not a physical container:
47
- *
48
- * - `'document'` — a substantial project-global surface (tuning dashboard,
49
- * table, graph) that belongs in the center workspace;
50
- * - `'inspector'` — a selection-scoped section in the right Inspector rail;
51
- * - `'utility'` — a transient output/debug surface for the bottom drawer;
52
- * - `'dock'` — DEPRECATED physical compatibility alias. Existing dock tools
53
- * remain in the bottom panel so projects do not lose the ability to tune
54
- * them while watching the Game/Scene.
55
- *
56
- * Only an explicit `document` declaration replaces the center subject.
57
- * `utility` and legacy `dock` remain in the bottom drawer. Deliberately
58
- * still nothing else — no floating windows, no in-game overlay
59
- * host (docs/DATA-TOOLS-DESIGN.md §3.2 "deliberately NOT built").
60
- */
61
- export type ToolPlacement = 'document' | 'inspector' | 'utility' | 'dock';
62
- /** The project-global (non-selection-scoped) placements. */
63
- export type GlobalToolPlacement = 'document' | 'utility' | 'dock';
64
- /**
65
- * Compatibility means preserving behavior: legacy `'dock'` tools remain in
66
- * the bottom panel. New tools choose `'document'`, `'utility'`, or
67
- * `'inspector'` deliberately.
68
- */
69
- export declare function normalizeToolPlacement(placement: ToolPlacement): 'document' | 'inspector' | 'utility';
70
- /** Fields every tool declares — see {@link defineTool} for the contract. */
71
- interface ToolConfigBase {
72
- /**
73
- * Stable slug for this tool: letters/digits/`-`/`_` only. It becomes the
74
- * mount's `data-testid` (`bottom-tab-tool-<id>` for dock tools,
75
- * `inspector-tool-<id>` for inspector tools), so keep it short and never
76
- * rename it casually — automation and saved layouts key off it.
77
- */
78
- id: string;
79
- /** Human label: the dock tab text, or the inspector section's header,
80
- * rendered after the ⚙ project-tool marker (§3.5). */
81
- title: string;
82
- }
83
- /** A project-global tool (§3.2 W4; `'dock'` preserves its historical bottom
84
- * placement through the `'utility'` compatibility normalization). */
85
- export interface GlobalToolConfig extends ToolConfigBase {
86
- placement: GlobalToolPlacement;
87
- }
88
- /** A selection-scoped Inspector section (§3.2, W3). */
89
- export interface InspectorToolConfig extends ToolConfigBase {
90
- placement: 'inspector';
91
- /**
92
- * When this section appears — the SAME contract as the editor's
93
- * `inspector-section-registry`: called with the currently selected node
94
- * (`null` in the no-selection/environment state) and the active authoring
95
- * adapter; return `true` to render. Keep it cheap and pure — it runs on
96
- * every inspector render. A `match` that throws is treated as `false`
97
- * (with one console teaching error), never crashing the inspector.
98
- */
99
- match: (node: EditorNode | null, adapter: AuthoringAdapter) => boolean;
100
- }
101
- /** Metadata for a project tool — a discriminated union on `placement`. */
102
- export type ToolConfig = GlobalToolConfig | InspectorToolConfig;
103
- /**
104
- * Props the editor passes to an INSPECTOR tool's default-exported component
105
- * (dock tools receive no props). Everything richer (live game store, field
106
- * addresses) arrives through the §3.3 hooks, not through more props.
107
- */
108
- export interface InspectorToolProps {
109
- /** The selected node your `match` accepted (`null` in the no-selection
110
- * state, if your `match` chose to accept it). */
111
- node: EditorNode | null;
112
- /** The selected node's stable id (`null` in the no-selection state). */
113
- nodeId: string | null;
114
- }
115
- /**
116
- * Validate and freeze a project tool's metadata (docs/DATA-TOOLS-DESIGN.md
117
- * §3.1). Call it once at module scope of a `src/tools/<name>.tool.tsx` file
118
- * and export the result as `tool`, next to a default-exported React
119
- * component — the editor's folder scan picks the file up automatically.
120
- *
121
- * Fails loud (§6.5 "errors teach") on anything malformed rather than letting
122
- * a half-shaped tool render confusingly: bad `id`/`title`, an unknown
123
- * placement, an inspector tool without a callable `match`.
124
- *
125
- * The returned config is frozen: tool metadata is a definition, not state
126
- * (the same immutability rule data assets follow, §2.1).
127
- */
128
- export declare function defineTool(config: ToolConfig): Readonly<ToolConfig>;
129
- export {};
130
- //# sourceMappingURL=define-tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"define-tool.d.ts","sourceRoot":"","sources":["../../src/tools/define-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1E,4DAA4D;AAC5D,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAElE;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,aAAa,GACvB,UAAU,GAAG,WAAW,GAAG,SAAS,CAEtC;AAED,4EAA4E;AAC5E,UAAU,cAAc;IACtB;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;2DACuD;IACvD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;sEACsE;AACtE,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED,uDAAuD;AACvD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,SAAS,EAAE,WAAW,CAAC;IACvB;;;;;;;OAOG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC;CACxE;AAED,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC;sDACkD;IAClD,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,wEAAwE;IACxE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAyCnE"}
@@ -1,96 +0,0 @@
1
- /**
2
- * Project tools — W4/W3 of `docs/DATA-TOOLS-DESIGN.md` (§3 contract).
3
- *
4
- * A project tool is ONE file, `src/tools/<name>.tool.tsx`, discovered by
5
- * folder scan (same physics as data assets, §3.1: zero registration, delete
6
- * the file → gone). The file exports exactly two things:
7
- *
8
- * ```tsx
9
- * export const tool = defineTool({
10
- * id: 'tuning', // stable slug — becomes the tab's test id
11
- * title: 'Tuning', // the tab label (rendered after a ⚙ marker)
12
- * placement: 'document', // project-global dashboard (§3.2; 'dock' = deprecated alias)
13
- * });
14
- * export default function Tuning() { … } // plain React
15
- * ```
16
- *
17
- * or, selection-scoped (W3 — §3.2's second placement):
18
- *
19
- * ```tsx
20
- * export const tool = defineTool({
21
- * id: 'spin',
22
- * title: 'Spin',
23
- * placement: 'inspector', // selection-scoped section
24
- * match: (node) => node?.kind === 'mesh', // same contract as the
25
- * }); // inspector-section registry
26
- * export default function Spin({ node }: InspectorToolProps) { … }
27
- * ```
28
- *
29
- * The editor renders dock tools as visually distinct tabs after a separator
30
- * at the end of the bottom dock's tab row (§3.5); inspector tools render as
31
- * a ⚙-marked section in the Inspector rail whenever `match` accepts the
32
- * current selection. Both render inside an error boundary — a crashing tool
33
- * never takes the editor down. Tools are EDITOR-ONLY: no game build bundles
34
- * `src/tools/` (§4 — nothing in game code imports it), so dev/cheat surfaces
35
- * can never leak into a tester serve.
36
- *
37
- * This module is deliberately react-free metadata (the engine core outside
38
- * `src/react/` must not import react — `test/react-core-import-ban.test.ts`);
39
- * the react-facing tool hooks live in `@engine/react/use-data`, and the
40
- * editor-styled widget kit tools build panels from is `@editor/widgets`.
41
- */
42
- /**
43
- * Compatibility means preserving behavior: legacy `'dock'` tools remain in
44
- * the bottom panel. New tools choose `'document'`, `'utility'`, or
45
- * `'inspector'` deliberately.
46
- */
47
- export function normalizeToolPlacement(placement) {
48
- return placement === 'dock' ? 'utility' : placement;
49
- }
50
- const TEMPLATE_EXAMPLE = 'the template worked example: src/tools/example.tool.tsx';
51
- /** Teaching-error helper (§6.5): every rejection names the fix and cites the
52
- * template example by path. */
53
- function toolError(problem, fix) {
54
- return new Error(`defineTool: ${problem} — ${fix} (see ${TEMPLATE_EXAMPLE}).`);
55
- }
56
- /**
57
- * Validate and freeze a project tool's metadata (docs/DATA-TOOLS-DESIGN.md
58
- * §3.1). Call it once at module scope of a `src/tools/<name>.tool.tsx` file
59
- * and export the result as `tool`, next to a default-exported React
60
- * component — the editor's folder scan picks the file up automatically.
61
- *
62
- * Fails loud (§6.5 "errors teach") on anything malformed rather than letting
63
- * a half-shaped tool render confusingly: bad `id`/`title`, an unknown
64
- * placement, an inspector tool without a callable `match`.
65
- *
66
- * The returned config is frozen: tool metadata is a definition, not state
67
- * (the same immutability rule data assets follow, §2.1).
68
- */
69
- export function defineTool(config) {
70
- if (config === null || typeof config !== 'object') {
71
- throw toolError('expected a config object', "call it as defineTool({ id, title, placement: 'document' })");
72
- }
73
- const { id, title, placement } = config;
74
- if (placement !== 'document' &&
75
- placement !== 'utility' &&
76
- placement !== 'dock' &&
77
- placement !== 'inspector') {
78
- throw toolError(`unknown placement ${JSON.stringify(placement)}`, "the placements are 'document' (project-global center document), 'inspector' " +
79
- "(selection-scoped section) and 'utility' (transient bottom-drawer output); " +
80
- "'dock' remains accepted as a deprecated bottom-panel alias " +
81
- '(docs/EDITOR-WORKSPACE-SHELL-TODO.md §7.2)');
82
- }
83
- if (typeof id !== 'string' || !/^[a-zA-Z0-9_-]+$/.test(id)) {
84
- throw toolError(`invalid id ${JSON.stringify(id)}`, 'pass a non-empty slug of letters, digits, "-" or "_" — it becomes the tool\'s data-testid (bottom-tab-tool-<id> / inspector-tool-<id>)');
85
- }
86
- if (typeof title !== 'string' || title.trim() === '') {
87
- throw toolError(`invalid title ${JSON.stringify(title)}`, 'pass a short human-readable label');
88
- }
89
- if (placement === 'inspector') {
90
- if (typeof config.match !== 'function') {
91
- throw toolError(`placement 'inspector' requires a match function (got ${JSON.stringify(config.match)})`, "pass match: (node) => boolean — e.g. match: (node) => node?.kind === 'mesh' — deciding which selections show this section");
92
- }
93
- return Object.freeze({ id, title, placement, match: config.match });
94
- }
95
- return Object.freeze({ id, title, placement });
96
- }
@@ -1,80 +0,0 @@
1
- import type { Container } from 'pixi.js';
2
- /**
3
- * AuthoringAdapter-2D — the world2d analog of the editor AuthoringAdapter /
4
- * IngestAuthoringAdapter, implemented DIRECTLY over a live PixiJS display tree
5
- * (no fabricated Scene2D / SceneEntity — the anti-shim rule). Used by the editor to
6
- * inspect + edit world2d entities (first-party OR an ingested unmodified game),
7
- * with stable structural-path ids so edits re-bind after the tree rebuilds.
8
- */
9
- export interface EditorNode2D {
10
- id: string;
11
- label: string;
12
- kind: 'sprite' | 'animatedsprite' | 'text' | 'container' | string;
13
- parentId: string | null;
14
- childIds: string[];
15
- }
16
- export interface Transform2DValue {
17
- position: [number, number];
18
- rotation: number;
19
- scale: [number, number];
20
- }
21
- export interface Property2D {
22
- path: string;
23
- label: string;
24
- type: 'string' | 'number' | 'boolean' | 'vec2' | 'color';
25
- value: unknown;
26
- }
27
- /** A persisted edit overlay keyed by structural-path id (the 2D analog of IngestOverlay). */
28
- export interface Override2D {
29
- label?: string;
30
- alpha?: number;
31
- position?: [number, number];
32
- rotation?: number;
33
- scale?: [number, number];
34
- tint?: number;
35
- visible?: boolean;
36
- }
37
- export type Overlay2D = Record<string, Override2D>;
38
- export declare class AuthoringAdapter2D {
39
- private readonly root;
40
- private readonly byId;
41
- private overlay;
42
- private dirty;
43
- constructor(root: Container, opts?: {
44
- overlay?: Overlay2D;
45
- });
46
- /** Walk the live tree assigning deterministic structural-path ids, reapply overlay. */
47
- refresh(): {
48
- count: number;
49
- sprites: number;
50
- };
51
- roots(): EditorNode2D[];
52
- node(id: string): EditorNode2D | null;
53
- displayObject(id: string): Container | null;
54
- private toNode;
55
- getTransform(id: string): Transform2DValue | null;
56
- setTransform(id: string, t: Partial<Transform2DValue>): void;
57
- properties(id: string): Property2D[];
58
- set(id: string, path: string, value: unknown): void;
59
- private applyOverride;
60
- /**
61
- * Re-apply a saved/external overlay onto the (already-walked) live tree, merging
62
- * it into the in-memory overlay so a later `serializeOverlay()`/save preserves it
63
- * and a later `refresh()` re-applies it again. Ids absent from the current tree
64
- * are skipped (orphaned, not an error) — the 2D analog of
65
- * `IngestAuthoringAdapter.applyOverlay` (T3.2 slice 3). Used both for the initial
66
- * reload (constructor `opts.overlay`) and for `PersistenceProvider.applyExternal`
67
- * (re-apply a changed overlay file without a full remount).
68
- */
69
- applyOverlay(overlay: Overlay2D): {
70
- applied: number;
71
- orphaned: number;
72
- };
73
- isDirty(): boolean;
74
- serializeOverlay(): Overlay2D;
75
- /** Replace, rather than merge, overlay state after an exact history restore. */
76
- replaceOverlay(overlay: Overlay2D): void;
77
- /** Clear the dirty flag after a successful save (mirrors IngestAuthoringAdapter). */
78
- markClean(): void;
79
- }
80
- //# sourceMappingURL=authoring-2d.d.ts.map