@woosh/meep-engine 3.33.0 → 3.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/editor/Editor.d.ts.map +1 -1
  2. package/editor/Editor.js +0 -3
  3. package/editor/ecs/component/prototypeObjectEditor.js +1 -165
  4. package/editor/ecs/component/registerBasicTypeEditors.d.ts.map +1 -1
  5. package/editor/ecs/component/registerBasicTypeEditors.js +0 -5
  6. package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -1
  7. package/editor/ecs/component/registerEngineComponentEditors.js +0 -20
  8. package/editor/process/SymbolicDisplayProcess.d.ts.map +1 -1
  9. package/editor/process/SymbolicDisplayProcess.js +100 -106
  10. package/editor/prototypeEditorShell.d.ts.map +1 -1
  11. package/editor/prototypeEditorShell.js +190 -186
  12. package/editor/templates/entity_templates.d.ts.map +1 -1
  13. package/editor/templates/entity_templates.js +10 -27
  14. package/editor/view/makeEntityDecorators.js +2 -2
  15. package/package.json +1 -1
  16. package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.d.ts +3 -3
  17. package/src/core/geom/3d/aabb/MovingBoundingBox.d.ts.map +1 -0
  18. package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.js +5 -5
  19. package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts +3 -0
  20. package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts.map +1 -0
  21. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGBA_LUT_HEATMAP_IR.js +1 -1
  22. package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts +6 -0
  23. package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts.map +1 -0
  24. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_INFERNO.js +1 -1
  25. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.d.ts +1 -1
  26. package/src/core/math/lookup/RGB_LUT_TURBO.d.ts.map +1 -0
  27. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.js +1 -1
  28. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.d.ts +1 -1
  29. package/src/core/math/lookup/RGB_LUT_VIRIDIS.d.ts.map +1 -0
  30. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.js +1 -1
  31. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  32. package/src/engine/animation/AnimatedActions.js +2 -4
  33. package/src/engine/animation/AnimationUtils.d.ts +1 -17
  34. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  35. package/src/engine/animation/AnimationUtils.js +138 -246
  36. package/src/engine/ecs/EntityManager.d.ts +1 -1
  37. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  38. package/src/engine/ecs/EntityManager.js +2 -2
  39. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +268 -275
  40. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  41. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +0 -10
  42. package/src/engine/graphics/geometry/distribute_points_on_indexed_triangles.d.ts.map +1 -0
  43. package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.js +3 -3
  44. package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.d.ts +1 -1
  45. package/src/engine/graphics/texture/sampler/lut_to_sampler.d.ts.map +1 -0
  46. package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.js +1 -1
  47. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +0 -3
  48. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  49. package/src/engine/graphics3/GPUParticleEmitterSystem.js +0 -3
  50. package/src/engine/network/NetworkSession.d.ts +1 -1
  51. package/src/engine/network/NetworkSession.js +1 -1
  52. package/src/engine/physics/cloth/MEASUREMENTS.md +115 -0
  53. package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
  54. package/src/engine/physics/cloth/solver/cloth_contact_find.js +2 -0
  55. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +9 -0
  56. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  57. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +30 -7
  58. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  59. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  60. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +12 -2
  61. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +11 -2
  62. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
  63. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +14 -7
  64. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +6 -15
  65. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -1
  66. package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +161 -174
  67. package/src/shade/device/mock/SoftwareGPUBuffer.d.ts +5 -3
  68. package/src/shade/device/mock/SoftwareGPUBuffer.d.ts.map +1 -1
  69. package/src/shade/device/mock/SoftwareGPUBuffer.js +32 -3
  70. package/src/shade/playground/caldera/main.js +73 -60
  71. package/src/shade/playground/vgeo_runtime/main.js +25 -77
  72. package/src/shade/playground/vgeo_scene/main.js +2231 -2217
  73. package/src/shade/renderer/GraphicsContext.d.ts +7 -0
  74. package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
  75. package/src/shade/renderer/GraphicsContext.js +11 -2
  76. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  77. package/src/shade/renderer/Renderer.js +38 -0
  78. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +8 -0
  79. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  80. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +21 -0
  81. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +1 -1
  82. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  83. package/src/shade/renderer/geometry/GPUGeometryManager.js +9 -10
  84. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +5 -0
  85. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +11 -0
  87. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +12 -0
  88. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -1
  89. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +25 -0
  90. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +115 -101
  91. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  92. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +282 -140
  93. package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +30 -0
  94. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +4 -1
  95. package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +536 -0
  96. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +6 -2
  97. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
  98. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +68 -19
  99. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts +2 -1
  100. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
  101. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +17 -1
  102. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts +4 -0
  103. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
  104. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +42 -12
  105. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +93 -12
  106. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -1
  107. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +166 -20
  108. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -1
  109. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +30 -7
  110. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
  111. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +12 -5
  112. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts.map +1 -1
  113. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.js +2 -2
  114. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
  115. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +23 -13
  116. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts.map +1 -1
  117. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.js +1 -2
  118. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -1
  119. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +1 -2
  120. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
  121. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +10 -6
  122. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +45 -17
  123. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -1
  124. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +61 -19
  125. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts +8 -11
  126. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts.map +1 -1
  127. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js +9 -16
  128. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
  129. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +25 -10
  130. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +10 -8
  131. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts +1 -0
  132. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js +19 -7
  133. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts +4 -2
  134. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts.map +1 -1
  135. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.js +4 -2
  136. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts +4 -0
  137. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts.map +1 -1
  138. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.js +7 -0
  139. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.d.ts.map +1 -1
  140. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.js +1 -0
  141. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  142. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  143. package/src/shade/renderer/material/GPUMaterialManager.js +2 -0
  144. package/src/shade/renderer/particles/DESIGN.md +4 -10
  145. package/src/shade/renderer/particles/ParticleConstants.d.ts +1 -3
  146. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  147. package/src/shade/renderer/particles/ParticleConstants.js +1 -3
  148. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +3 -4
  149. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
  150. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +3 -4
  151. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +45 -0
  152. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -0
  153. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +99 -0
  154. package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.d.ts +4 -4
  155. package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.js +36 -36
  156. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts +15 -0
  157. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts.map +1 -0
  158. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.js +103 -0
  159. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts +3 -0
  160. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
  161. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +6 -1
  162. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +26 -0
  163. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -0
  164. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +91 -0
  165. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts +22 -0
  166. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts.map +1 -0
  167. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.js +102 -0
  168. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts +2 -1
  169. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
  170. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +28 -24
  171. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  172. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +32 -28
  173. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  174. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +9 -105
  175. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +5 -0
  176. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  177. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +11 -0
  178. package/src/shade/renderer/scene/GPUSceneContext.d.ts +11 -3
  179. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  180. package/src/shade/renderer/scene/GPUSceneContext.js +93 -21
  181. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +4 -1
  182. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
  183. package/src/shade/renderer/scene/rows/GPUSceneRows.js +5 -23
  184. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  185. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +63 -0
  186. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts +12 -0
  187. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts.map +1 -0
  188. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.js +11 -0
  189. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +15 -0
  190. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  191. package/src/shade/renderer/shadow/map/Shadowmap.js +17 -0
  192. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts +25 -0
  193. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts.map +1 -0
  194. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.js +22 -0
  195. package/src/shade/renderer/shadow/map/shadowmap_update_score.d.ts.map +1 -1
  196. package/src/shade/renderer/shadow/map/shadowmap_update_score.js +5 -2
  197. package/src/shade/renderer/texture/TextureManager.d.ts +2 -1
  198. package/src/shade/renderer/texture/TextureManager.d.ts.map +1 -1
  199. package/src/shade/renderer/texture/TextureManager.js +4 -1
  200. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +1 -1
  201. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts +9 -1
  202. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts.map +1 -1
  203. package/src/shade/renderer/util/Uint32BufferSamplingStats.js +55 -5
  204. package/src/shade/renderer/view/ViewManager.d.ts +7 -1
  205. package/src/shade/renderer/view/ViewManager.d.ts.map +1 -1
  206. package/src/shade/renderer/view/ViewManager.js +17 -1
  207. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  208. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -0
  209. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +0 -20
  210. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +0 -1
  211. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +0 -35
  212. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +0 -12
  213. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +0 -1
  214. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +0 -17
  215. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +0 -14
  216. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +0 -1
  217. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.js +0 -18
  218. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +0 -52
  219. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +0 -1
  220. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +0 -58
  221. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +0 -47
  222. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +0 -1
  223. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +0 -58
  224. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +0 -16
  225. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +0 -1
  226. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.js +0 -21
  227. package/editor/particles/rebuildParticleEmitter.d.ts +0 -11
  228. package/editor/particles/rebuildParticleEmitter.d.ts.map +0 -1
  229. package/editor/particles/rebuildParticleEmitter.js +0 -31
  230. package/editor/process/ParticleEmitterRebuildProcess.d.ts +0 -66
  231. package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +0 -1
  232. package/editor/process/ParticleEmitterRebuildProcess.js +0 -217
  233. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +0 -18
  234. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +0 -1
  235. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.js +0 -140
  236. package/src/engine/animation/removeEntityGenericEffect.d.ts +0 -18
  237. package/src/engine/animation/removeEntityGenericEffect.d.ts.map +0 -1
  238. package/src/engine/animation/removeEntityGenericEffect.js +0 -160
  239. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts +0 -16
  240. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +0 -1
  241. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +0 -194
  242. package/src/engine/graphics/ecs/sprite/Sprite.d.ts +0 -15
  243. package/src/engine/graphics/ecs/sprite/Sprite.d.ts.map +0 -1
  244. package/src/engine/graphics/ecs/sprite/Sprite.js +0 -14
  245. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +0 -11
  246. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +0 -1
  247. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +0 -144
  248. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts.map +0 -1
  249. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +0 -61
  250. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +0 -1
  251. package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +0 -229
  252. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts +0 -6
  253. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts.map +0 -1
  254. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.js +0 -8
  255. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts +0 -7
  256. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts.map +0 -1
  257. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.js +0 -9
  258. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts +0 -13
  259. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts.map +0 -1
  260. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.js +0 -12
  261. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts +0 -3
  262. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts.map +0 -1
  263. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +0 -84
  264. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +0 -285
  265. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +0 -1
  266. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +0 -1201
  267. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts +0 -19
  268. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts.map +0 -1
  269. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +0 -67
  270. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +0 -197
  271. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +0 -1
  272. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +0 -398
  273. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts +0 -5
  274. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts.map +0 -1
  275. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.js +0 -4
  276. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +0 -162
  277. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +0 -1
  278. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -472
  279. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts +0 -10
  280. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +0 -1
  281. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +0 -37
  282. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts +0 -9
  283. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts.map +0 -1
  284. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +0 -25
  285. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts +0 -19
  286. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +0 -1
  287. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +0 -28
  288. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts +0 -19
  289. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts.map +0 -1
  290. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js +0 -162
  291. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts +0 -5
  292. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts.map +0 -1
  293. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.js +0 -103
  294. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts +0 -8
  295. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts.map +0 -1
  296. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.js +0 -28
  297. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts +0 -2
  298. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +0 -1
  299. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +0 -2
  300. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +0 -2
  301. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +0 -1
  302. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +0 -2
  303. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts +0 -60
  304. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts.map +0 -1
  305. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.js +0 -128
  306. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts +0 -47
  307. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts.map +0 -1
  308. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +0 -77
  309. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts +0 -45
  310. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts.map +0 -1
  311. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.js +0 -93
  312. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts +0 -95
  313. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts.map +0 -1
  314. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +0 -239
  315. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts +0 -3
  316. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts.map +0 -1
  317. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts +0 -6
  318. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts.map +0 -1
  319. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.d.ts.map +0 -1
  320. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.d.ts.map +0 -1
  321. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts +0 -13
  322. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts.map +0 -1
  323. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.js +0 -28
  324. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts +0 -9
  325. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts.map +0 -1
  326. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +0 -24
  327. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts +0 -13
  328. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts.map +0 -1
  329. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js +0 -27
  330. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts +0 -33
  331. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts.map +0 -1
  332. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.js +0 -80
  333. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +0 -49
  334. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +0 -1
  335. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +0 -135
  336. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts +0 -7
  337. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts.map +0 -1
  338. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.js +0 -14
  339. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts +0 -41
  340. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts.map +0 -1
  341. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.js +0 -59
  342. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts +0 -4
  343. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts.map +0 -1
  344. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +0 -56
  345. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts +0 -4
  346. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts.map +0 -1
  347. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +0 -84
  348. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts +0 -4
  349. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts.map +0 -1
  350. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +0 -80
  351. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts +0 -29
  352. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts.map +0 -1
  353. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.js +0 -43
  354. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts +0 -5
  355. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts.map +0 -1
  356. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +0 -104
  357. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts +0 -9
  358. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts.map +0 -1
  359. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.js +0 -11
  360. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts +0 -9
  361. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts.map +0 -1
  362. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.js +0 -64
  363. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts +0 -9
  364. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +0 -1
  365. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +0 -172
  366. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +0 -1
  367. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts +0 -20
  368. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +0 -1
  369. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +0 -84
  370. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +0 -81
  371. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +0 -1
  372. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +0 -200
  373. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts +0 -6
  374. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts.map +0 -1
  375. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.js +0 -8
  376. package/src/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.d.ts.map +0 -1
  377. package/src/engine/graphics/particles/particular/group/Operation.d.ts +0 -20
  378. package/src/engine/graphics/particles/particular/group/Operation.d.ts.map +0 -1
  379. package/src/engine/graphics/particles/particular/group/Operation.js +0 -20
  380. package/src/engine/graphics/particles/particular/group/OperationType.d.ts +0 -7
  381. package/src/engine/graphics/particles/particular/group/OperationType.d.ts.map +0 -1
  382. package/src/engine/graphics/particles/particular/group/OperationType.js +0 -9
  383. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts +0 -27
  384. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts.map +0 -1
  385. package/src/engine/graphics/particles/particular/group/ParticleAttribute.js +0 -27
  386. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts +0 -8
  387. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts.map +0 -1
  388. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.js +0 -11
  389. package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts +0 -7
  390. package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts.map +0 -1
  391. package/src/engine/graphics/particles/particular/group/ParticleDataType.js +0 -10
  392. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts +0 -24
  393. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts.map +0 -1
  394. package/src/engine/graphics/particles/particular/group/ParticleSpecification.js +0 -48
  395. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts +0 -7
  396. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts.map +0 -1
  397. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +0 -20
  398. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts +0 -6
  399. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts.map +0 -1
  400. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.js +0 -162
  401. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts +0 -8
  402. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts.map +0 -1
  403. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +0 -19
  404. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +0 -77
  405. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +0 -1
  406. package/src/engine/graphics3/ParticleEmitterSystem.js +0 -307
  407. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +0 -10
  408. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +0 -1
  409. package/src/engine/graphics3/ParticleEmitterSystem3.js +0 -10
  410. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +0 -61
  411. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +0 -1
  412. package/src/engine/graphics3/particles/GPUParticularRenderer.js +0 -627
  413. package/src/engine/graphics3/particles/particle_gpu_records.d.ts +0 -85
  414. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +0 -1
  415. package/src/engine/graphics3/particles/particle_gpu_records.js +0 -227
  416. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts +0 -35
  417. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +0 -1
  418. package/src/shade/renderer/particles/shaders/shader_particle_render.js +0 -135
  419. /package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.d.ts +0 -0
@@ -1,275 +1,268 @@
1
- # Binary serialization coverage
2
-
3
- What verifies the save format, what does not, and what is known to be wrong with it.
4
-
5
- This file exists because three aggregate specs that used to answer those questions were deleted. They are
6
- worth understanding before adding anything like them back.
7
-
8
- ## Why the aggregate harnesses went
9
-
10
- `binary_adapter_round_trip.spec.js`, `upgrader_chain_contract.spec.js` and
11
- `upgrader_execution_contract.spec.js` walked the source tree with `fs.readdirSync`, dynamically imported every
12
- match, and drove each adapter through reflection.
13
-
14
- They found real defects — that was never in doubt. They were removed anyway, for reasons that are worth
15
- keeping:
16
-
17
- * **40% of the green was hollow.** The round-trip harness reported 78 passing tests. **31 of them asserted
18
- nothing:** 20 "not checked" (16 of those because the harness's own perturbation produced an object that
19
- violated the component's invariants and `serialize` threw — *"Expected 'Managed' flag to be set"*,
20
- *"Incorrect height data size. 4 !== 256"*), 4 whose state is `#private` and therefore invisible to
21
- structural comparison, and 7 the perturber could not vary. `Tag`, `Blackboard`, `UUID`, `Terrain`,
22
- `FogOfWar`, `AudioEmitter`, `SoundEmitter`, `ParticleEmitter` and `AnimationGraph` were all reported green
23
- and none of them were checked. The list was printed by `console.log` in an `afterAll`, invisible in a normal
24
- run.
25
- * **It asserted that the broken things were exactly the broken things.** `KNOWN_DIVERGENCE` was, in its own
26
- words, "a baseline, not a specification" — nine real defects encoded as expected values. A test that passes
27
- *because* the bug is still present is worse than no test.
28
- * **It hid a bug of exactly the kind it existed to catch.** See "Found and fixed" below.
29
- * **The reflection was the failure surface.** `perturb()` and `divergentPaths()` were ~250 lines of
30
- special-cased traversal (`isColor`, `isQuaternion`, typed arrays, `getValue`/`set`, `__validSet`,
31
- writability probing, depth limits, `Math.fround` tolerance). Whenever a test failed, the first question was
32
- whether the harness or the adapter was wrong.
33
- * **The dynamic imports flaked.** On Windows the transform cache lost `rename` races —
34
- `EPERM: operation not permitted, rename ...\ssr\.tmp-... -> ...\ssr\<hash>` — failing whichever adapter
35
- happened to be importing. The flake was read as a serialization bug more than once.
36
-
37
- The replacement is one hand-written spec per adapter, colocated with it, in the style of
38
- [`TagSerializationAdapter.spec.js`](../../components/TagSerializationAdapter.spec.js): construct an instance
39
- with distinctive values, serialize, deserialize into a fresh one, assert. Explicit, verbose, no reflection, no
40
- allow-lists, and each one states what the format actually promises.
41
-
42
- **The upgrade-path property is not reproduced.** `upgrader_chain_contract.spec.js` checked that every
43
- historical version could reach the current one. That property matters to a *consumer* of the engine shipping
44
- saved data, not to the engine, so it belongs in the consumer's suite.
45
-
46
- ## Found and fixed on the way out
47
-
48
- `FailingBehavior` and `SucceedingBehavior` **could not be serialized at all.** Both adapters wrote
49
- `value.delayTicks` — a constructor parameter that was deprecated and removed from both classes — so
50
- `writeUintVar(undefined)` threw on *any* instance, and a behaviour tree containing either could not be saved.
51
-
52
- The harness reported both green. `perturb()` found no field it knew how to vary, pushed them onto the
53
- "nothing the harness could vary" list, and returned before ever calling `serialize`.
54
-
55
- Both adapters now write nothing, because the classes carry no state. No version bump: since `serialize` always
56
- threw, no save containing these behaviours can exist, so there is no data to stay compatible with.
57
-
58
- ## Adapters still without a spec
59
-
60
- 29 files, of which `BinaryClassSerializationAdapter.js` (the base class) and
61
- `ObjectBasedClassSerializationAdapter.js` (a helper) are not adapters — so **27 real ones**. Every entry is an
62
- adapter nothing currently verifies.
63
-
64
- Sixteen of these are the ones whose `serialize` threw under the old harness. That is not a coincidence and it
65
- is where the interesting bugs are: those components have invariants, so a spec for one needs a hand-built
66
- fixture rather than a default instance. `FogOfWar` needs correctly-sized height data, `GUIElement` needs its
67
- `Managed` flag, `Terrain` needs a height array matching its resolution.
68
-
69
- | Class | Adapter |
70
- |---|---|
71
- | `Animation` | `engine/ecs/animation/AnimationSerializationAdapter.js` |
72
- | `FogOfWar` | `engine/ecs/fow/serialization/FogOfWarSerializationAdapter.js` |
73
- | `GUIElement` | `engine/ecs/gui/GUIElementSerializationAdapter.js` |
74
- | `InverseKinematics` | `engine/ecs/ik/InverseKinematicsSerializationAdapter.js` |
75
- | `Book` | `engine/ecs/storage/binary/BinaryClassSerializationAdapter.js` |
76
- | `?` | `engine/ecs/storage/binary/object/ObjectBasedClassSerializationAdapter.js` |
77
- | `Terrain` | `engine/ecs/terrain/serialization/TerrainSerializationAdapter.js` |
78
- | `AnimationController` | `engine/graphics/ecs/animation/AnimationControllerSerializationAdapter.js` |
79
- | `AnimationGraph` | `engine/graphics/ecs/animation/animator/graph/AnimationGraphSerializationAdapter.js` |
80
- | `AnimationGraphDefinition` | `engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionSerializationAdapter.js` |
81
- | `Camera` | `engine/graphics/ecs/camera/serialization/CameraSerializationAdapter.js` |
82
- | `TopDownCameraController` | `engine/graphics/ecs/camera/topdown/TopDownCameraControllerSerializationAdapter.js` |
83
- | `Decal` | `engine/graphics/ecs/decal/v2/DecalSerializationAdapter.js` |
84
- | `Highlight` | `engine/graphics/ecs/highlight/HighlightSerializationAdapter.js` |
85
- | `Mesh` | `engine/graphics/ecs/mesh/serialization/MeshSerializationAdapter.js` |
86
- | `Water` | `engine/graphics/ecs/water/WaterSerializationAdapter.js` |
87
- | `ParameterLookupTable` | `engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js` |
88
- | `ParticleEmitter` | `engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js` |
89
- | `LightProbeVolume` | `engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.js` |
90
- | `Sampler2D` | `engine/graphics/texture/sampler/serialization/Sampler2DSerializationAdapter.js` |
91
- | `GridPosition2Transform` | `engine/grid/grid2transform/GridPosition2TransformSerializationAdapter.js` |
92
- | `GridObstacle` | `engine/grid/obstacle/GridObstacleSerializationAdapter.js` |
93
- | `ParallelBehavior` | `engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.js` |
94
- | `SequenceBehavior` | `engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js` |
95
- | `InvertStatusBehavior` | `engine/intelligence/behavior/decorator/InvertStatusBehaviorSerializationAdapter.js` |
96
- | `RepeatBehavior` | `engine/intelligence/behavior/decorator/RepeatBehaviorSerializationAdapter.js` |
97
- | `BehaviorComponent` | `engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js` |
98
- | `Transform` | `engine/interpolation/TransformPoseSerializationAdapter.js` |
99
- | `AcousticProbeField` | `engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.js` |
100
-
101
- ## Upgraders
102
-
103
- 24 upgraders in the tree. Ten had a hand-written golden — an explicit byte layout in the version the upgrader
104
- reads — and those goldens are the one genuinely brutalist thing in the deleted files. They are preserved here
105
- verbatim so porting them to per-upgrader specs is transcription rather than archaeology.
106
-
107
- The per-upgrader spec should assert **the restored field values**, not the byte count the deleted harness
108
- asserted. The byte count was a proxy it used because it had no idea what the values ought to be; a spec that
109
- names one upgrader does know, and should say so.
110
-
111
- ### Goldens to port
112
-
113
- ```js
114
- const GOLDENS = {
115
- "CameraSerializationUpgrader_0_1.js": buffer => {
116
- buffer.writeUint8(1); // autoClip
117
- buffer.writeUint8(1); // active, an ObservedBoolean, one byte
118
- },
119
-
120
- "ClingToTerrainSerializationUpgrader_0_1.js": buffer => {
121
- buffer.writeUint8(1); // normalAlign
122
- },
123
-
124
- "DecalSerializationUpgrader_0_1.js": buffer => {
125
- buffer.writeUTF8String("data/textures/decal/circle1.png");
126
- buffer.writeFloat32(0); // priority
127
- buffer.writeFloat32Array([1, 1, 1, 1], 0, 4); // colour
128
- },
129
-
130
- "HighlightSerializationUpgrader_0_1.js": buffer => {
131
- buffer.writeFloat32(0.25); // r
132
- buffer.writeFloat32(0.5); // g
133
- buffer.writeFloat32(0.75); // b
134
- buffer.writeFloat32(1); // a
135
- },
136
-
137
- "PathSerializationUpgrader_0_1.js": buffer => {
138
- buffer.writeUint32(2); // point count
139
-
140
- for (let i = 0; i < 6; i++) {
141
- buffer.writeFloat64(i);
142
- }
143
- },
144
-
145
- "PathSerializationUpgrader_1_2.js": buffer => {
146
- buffer.writeUint8(0); // interpolation
147
- buffer.writeUintVar(0); // marker index
148
- buffer.writeFloat32(0); // marker offset
149
- buffer.writeUintVar(2); // point count
150
-
151
- for (let i = 0; i < 6; i++) {
152
- buffer.writeFloat32(i);
153
- }
154
- },
155
-
156
- "PathSerializationUpgrader_2_3.js": buffer => {
157
- buffer.writeUint8(0); // interpolation
158
- buffer.writeUintVar(2); // point count
159
- buffer.writeUintVar(3); // elements per point
160
-
161
- for (let i = 0; i < 6; i++) {
162
- buffer.writeFloat32(i);
163
- }
164
- },
165
-
166
- "TagSerializationUpgrader_0_1.js": buffer => {
167
- buffer.writeUTF8String("a-tag");
168
- },
169
-
170
- "TopDownCameraControllerSerializationUpgrader_0_1.js": buffer => {
171
- // target x/y/z, pitch, yaw, distance, distanceMin, distanceMax
172
- for (let i = 0; i < 8; i++) {
173
- buffer.writeFloat64(i + 1);
174
- }
175
- },
176
-
177
- "TransformSerializationUpgrader_0_1.js": buffer => {
178
- buffer.writeFloat64(1); // position x
179
- buffer.writeFloat64(2); // position y
180
- buffer.writeFloat64(3); // position z
181
-
182
- buffer.writeUint32(0); // encoded rotation
183
-
184
- buffer.writeFloat32(1); // scale x
185
- buffer.writeFloat32(2); // scale y
186
- buffer.writeFloat32(3); // scale z
187
- }
188
- };
189
- ```
190
-
191
- ### Upgraders with no golden
192
-
193
- Fourteen versions of the save format that nothing verifies can still be read. This was already an admitted gap
194
- in the deleted spec; it is not a new one.
195
-
196
- > The two `SoundEmitter` upgraders, its v2 adapter and the `SoundController` adapter now live under
197
- > `engine/sound/sopra/legacy/` alongside the components they read. Those components are frozen readers with no
198
- > runtime behaviour: they exist so that pre-`AudioEmitter` saves still deserialize, and are fed to
199
- > `convertLegacySoundComponents`, which turns them into `AudioEmitter` / `AudioEventTrigger`. They stay
200
- > registered here for exactly that reason — de-registering them would make old saves unreadable.
201
-
202
- ```js
203
- const WITHOUT_GOLDEN = [
204
- "FogOfWarSerializationUpdater_0_1.js",
205
- "GridPosition2TransformSerializationUpgrader_0_1.js",
206
- "GridPositionSerializationUpdater_0_1.js",
207
- "ParticleEmitterSerializationUpgrader_0_1.js",
208
- "PathFollowerSerializationUpgrader_0_1.js",
209
- "PathFollowerSerializationUpgrader_1_2.js",
210
- "PathFollowerSerializationUpgrader_2_3.js",
211
- "PathFollowerSerializationUpgrader_3_4.js",
212
- "RigidBodySerializationUpgrader_0_1.js",
213
- "SoundEmitterSerializationUpgrader_0_1.js",
214
- "SoundEmitterSerializationUpgrader_1_2.js",
215
- "TerrainSerializationUpgrader_0_1.js",
216
- "TerrainSerializationUpgrader_1_2.js",
217
- "WaterSerializationUpgrader_0_1.js"
218
- ];
219
- ```
220
-
221
- ## Known defects in the format
222
-
223
- These came out of `KNOWN_DIVERGENCE`, where they were encoded as expected values so the suite stayed green
224
- with the bugs in place. They are real: an entity saved with any of these set does not come back the same.
225
- Preserved here as a defect list, which is what they always were.
226
-
227
- Where a spec has since been written for the adapter, the divergence is asserted explicitly *with its reason*,
228
- so the behaviour is visible at the adapter rather than in a table keyed by file path — see
229
- `LightSerializationAdapter.spec.js` (packed RGB drops alpha, harmless for a light and stated as such) and
230
- `WaitForEventBehaviorSerializationAdapter.spec.js` (the event name survives, the wait state does not, which is
231
- a defect and says so).
232
-
233
- ```js
234
- const KNOWN_DIVERGENCE = {
235
- // Color.toUint() is documented as RGB-only (uint24) and both adapters use
236
- // it, so alpha is dropped by design. Kept visible rather than exempted:
237
- // a light has no meaningful alpha, but water's might, and that is a call
238
- // for whoever owns the water shader.
239
- "engine/graphics/ecs/light/LightSerializationAdapter.js": ["color.a"],
240
- "engine/graphics/ecs/water/WaterSerializationAdapter.js": ["color.a", "shoreColor.a"],
241
-
242
- "engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js": [
243
- "flags", "valueMax", "valueMin"
244
- ],
245
-
246
- // flag fields dropped wholesale
247
- "engine/grid/grid2transform/GridPosition2TransformSerializationAdapter.js": ["flags"],
248
- "engine/ecs/transform/TransformSerializationAdapter.js": ["flags"],
249
- "engine/graphics/ecs/mesh/serialization/MeshSerializationAdapter.js": ["flags"],
250
-
251
- // a behaviour tree restored mid-run resumes from the wrong child
252
- "engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js": [
253
- "__currentBehaviourIndex", "__currentBehaviourState"
254
- ],
255
- "engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js": ["__behavior"],
256
-
257
- // the event it is waiting for is dropped, so it waits forever
258
- "engine/intelligence/behavior/ecs/WaitForEventBehaviorSerializationAdapter.js": [
259
- "detected", "entity", "target"
260
- ],
261
-
262
- "engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.js": ["shape.radius"]
263
- };
264
- ```
265
-
266
- Worth separating when these are worked through:
267
-
268
- * **Deliberate and harmless** — `Light.color.a`: `Color.toUint()` is documented RGB-only. A light has no
269
- meaningful alpha.
270
- * **Deliberate and questionable** — `Water.color.a`, `Water.shoreColor.a`: same encoding, but water's alpha
271
- might mean something. A call for whoever owns that shader.
272
- * **Straightforwardly broken** — `flags` dropped wholesale on `Transform`, `Mesh` and
273
- `GridPosition2Transform`; `SequenceBehavior` resuming from the wrong child; `BehaviorComponent` losing its
274
- behaviour entirely; `WaitForEventBehavior` restored on the wrong side of the event it waits for, so it waits
275
- forever; `AcousticVolume` losing its radius.
1
+ # Binary serialization coverage
2
+
3
+ What verifies the save format, what does not, and what is known to be wrong with it.
4
+
5
+ This file exists because three aggregate specs that used to answer those questions were deleted. They are
6
+ worth understanding before adding anything like them back.
7
+
8
+ ## Why the aggregate harnesses went
9
+
10
+ `binary_adapter_round_trip.spec.js`, `upgrader_chain_contract.spec.js` and
11
+ `upgrader_execution_contract.spec.js` walked the source tree with `fs.readdirSync`, dynamically imported every
12
+ match, and drove each adapter through reflection.
13
+
14
+ They found real defects — that was never in doubt. They were removed anyway, for reasons that are worth
15
+ keeping:
16
+
17
+ * **40% of the green was hollow.** The round-trip harness reported 78 passing tests. **31 of them asserted
18
+ nothing:** 20 "not checked" (16 of those because the harness's own perturbation produced an object that
19
+ violated the component's invariants and `serialize` threw — *"Expected 'Managed' flag to be set"*,
20
+ *"Incorrect height data size. 4 !== 256"*), 4 whose state is `#private` and therefore invisible to
21
+ structural comparison, and 7 the perturber could not vary. `Tag`, `Blackboard`, `UUID`, `Terrain`,
22
+ `FogOfWar`, `AudioEmitter`, `SoundEmitter`, `ParticleEmitter` and `AnimationGraph` were all reported green
23
+ and none of them were checked. The list was printed by `console.log` in an `afterAll`, invisible in a normal
24
+ run.
25
+ * **It asserted that the broken things were exactly the broken things.** `KNOWN_DIVERGENCE` was, in its own
26
+ words, "a baseline, not a specification" — nine real defects encoded as expected values. A test that passes
27
+ *because* the bug is still present is worse than no test.
28
+ * **It hid a bug of exactly the kind it existed to catch.** See "Found and fixed" below.
29
+ * **The reflection was the failure surface.** `perturb()` and `divergentPaths()` were ~250 lines of
30
+ special-cased traversal (`isColor`, `isQuaternion`, typed arrays, `getValue`/`set`, `__validSet`,
31
+ writability probing, depth limits, `Math.fround` tolerance). Whenever a test failed, the first question was
32
+ whether the harness or the adapter was wrong.
33
+ * **The dynamic imports flaked.** On Windows the transform cache lost `rename` races —
34
+ `EPERM: operation not permitted, rename ...\ssr\.tmp-... -> ...\ssr\<hash>` — failing whichever adapter
35
+ happened to be importing. The flake was read as a serialization bug more than once.
36
+
37
+ The replacement is one hand-written spec per adapter, colocated with it, in the style of
38
+ [`TagSerializationAdapter.spec.js`](../../components/TagSerializationAdapter.spec.js): construct an instance
39
+ with distinctive values, serialize, deserialize into a fresh one, assert. Explicit, verbose, no reflection, no
40
+ allow-lists, and each one states what the format actually promises.
41
+
42
+ **The upgrade-path property is not reproduced.** `upgrader_chain_contract.spec.js` checked that every
43
+ historical version could reach the current one. That property matters to a *consumer* of the engine shipping
44
+ saved data, not to the engine, so it belongs in the consumer's suite.
45
+
46
+ ## Found and fixed on the way out
47
+
48
+ `FailingBehavior` and `SucceedingBehavior` **could not be serialized at all.** Both adapters wrote
49
+ `value.delayTicks` — a constructor parameter that was deprecated and removed from both classes — so
50
+ `writeUintVar(undefined)` threw on *any* instance, and a behaviour tree containing either could not be saved.
51
+
52
+ The harness reported both green. `perturb()` found no field it knew how to vary, pushed them onto the
53
+ "nothing the harness could vary" list, and returned before ever calling `serialize`.
54
+
55
+ Both adapters now write nothing, because the classes carry no state. No version bump: since `serialize` always
56
+ threw, no save containing these behaviours can exist, so there is no data to stay compatible with.
57
+
58
+ ## Adapters still without a spec
59
+
60
+ 29 files, of which `BinaryClassSerializationAdapter.js` (the base class) and
61
+ `ObjectBasedClassSerializationAdapter.js` (a helper) are not adapters — so **27 real ones**. Every entry is an
62
+ adapter nothing currently verifies.
63
+
64
+ Sixteen of these are the ones whose `serialize` threw under the old harness. That is not a coincidence and it
65
+ is where the interesting bugs are: those components have invariants, so a spec for one needs a hand-built
66
+ fixture rather than a default instance. `FogOfWar` needs correctly-sized height data, `GUIElement` needs its
67
+ `Managed` flag, `Terrain` needs a height array matching its resolution.
68
+
69
+ | Class | Adapter |
70
+ |---|---|
71
+ | `Animation` | `engine/ecs/animation/AnimationSerializationAdapter.js` |
72
+ | `FogOfWar` | `engine/ecs/fow/serialization/FogOfWarSerializationAdapter.js` |
73
+ | `GUIElement` | `engine/ecs/gui/GUIElementSerializationAdapter.js` |
74
+ | `InverseKinematics` | `engine/ecs/ik/InverseKinematicsSerializationAdapter.js` |
75
+ | `Book` | `engine/ecs/storage/binary/BinaryClassSerializationAdapter.js` |
76
+ | `?` | `engine/ecs/storage/binary/object/ObjectBasedClassSerializationAdapter.js` |
77
+ | `Terrain` | `engine/ecs/terrain/serialization/TerrainSerializationAdapter.js` |
78
+ | `AnimationController` | `engine/graphics/ecs/animation/AnimationControllerSerializationAdapter.js` |
79
+ | `AnimationGraph` | `engine/graphics/ecs/animation/animator/graph/AnimationGraphSerializationAdapter.js` |
80
+ | `AnimationGraphDefinition` | `engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionSerializationAdapter.js` |
81
+ | `Camera` | `engine/graphics/ecs/camera/serialization/CameraSerializationAdapter.js` |
82
+ | `TopDownCameraController` | `engine/graphics/ecs/camera/topdown/TopDownCameraControllerSerializationAdapter.js` |
83
+ | `Decal` | `engine/graphics/ecs/decal/v2/DecalSerializationAdapter.js` |
84
+ | `Highlight` | `engine/graphics/ecs/highlight/HighlightSerializationAdapter.js` |
85
+ | `Mesh` | `engine/graphics/ecs/mesh/serialization/MeshSerializationAdapter.js` |
86
+ | `Water` | `engine/graphics/ecs/water/WaterSerializationAdapter.js` |
87
+ | `LightProbeVolume` | `engine/graphics/sh3/lpv/serialization/LightProbeVolumeSerializationAdapter.js` |
88
+ | `Sampler2D` | `engine/graphics/texture/sampler/serialization/Sampler2DSerializationAdapter.js` |
89
+ | `GridPosition2Transform` | `engine/grid/grid2transform/GridPosition2TransformSerializationAdapter.js` |
90
+ | `GridObstacle` | `engine/grid/obstacle/GridObstacleSerializationAdapter.js` |
91
+ | `ParallelBehavior` | `engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.js` |
92
+ | `SequenceBehavior` | `engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js` |
93
+ | `InvertStatusBehavior` | `engine/intelligence/behavior/decorator/InvertStatusBehaviorSerializationAdapter.js` |
94
+ | `RepeatBehavior` | `engine/intelligence/behavior/decorator/RepeatBehaviorSerializationAdapter.js` |
95
+ | `BehaviorComponent` | `engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js` |
96
+ | `Transform` | `engine/interpolation/TransformPoseSerializationAdapter.js` |
97
+ | `AcousticProbeField` | `engine/sound/simulation/probe/AcousticProbeFieldSerializationAdapter.js` |
98
+
99
+ ## Upgraders
100
+
101
+ 24 upgraders in the tree. Ten had a hand-written golden — an explicit byte layout in the version the upgrader
102
+ reads — and those goldens are the one genuinely brutalist thing in the deleted files. They are preserved here
103
+ verbatim so porting them to per-upgrader specs is transcription rather than archaeology.
104
+
105
+ The per-upgrader spec should assert **the restored field values**, not the byte count the deleted harness
106
+ asserted. The byte count was a proxy it used because it had no idea what the values ought to be; a spec that
107
+ names one upgrader does know, and should say so.
108
+
109
+ ### Goldens to port
110
+
111
+ ```js
112
+ const GOLDENS = {
113
+ "CameraSerializationUpgrader_0_1.js": buffer => {
114
+ buffer.writeUint8(1); // autoClip
115
+ buffer.writeUint8(1); // active, an ObservedBoolean, one byte
116
+ },
117
+
118
+ "ClingToTerrainSerializationUpgrader_0_1.js": buffer => {
119
+ buffer.writeUint8(1); // normalAlign
120
+ },
121
+
122
+ "DecalSerializationUpgrader_0_1.js": buffer => {
123
+ buffer.writeUTF8String("data/textures/decal/circle1.png");
124
+ buffer.writeFloat32(0); // priority
125
+ buffer.writeFloat32Array([1, 1, 1, 1], 0, 4); // colour
126
+ },
127
+
128
+ "HighlightSerializationUpgrader_0_1.js": buffer => {
129
+ buffer.writeFloat32(0.25); // r
130
+ buffer.writeFloat32(0.5); // g
131
+ buffer.writeFloat32(0.75); // b
132
+ buffer.writeFloat32(1); // a
133
+ },
134
+
135
+ "PathSerializationUpgrader_0_1.js": buffer => {
136
+ buffer.writeUint32(2); // point count
137
+
138
+ for (let i = 0; i < 6; i++) {
139
+ buffer.writeFloat64(i);
140
+ }
141
+ },
142
+
143
+ "PathSerializationUpgrader_1_2.js": buffer => {
144
+ buffer.writeUint8(0); // interpolation
145
+ buffer.writeUintVar(0); // marker index
146
+ buffer.writeFloat32(0); // marker offset
147
+ buffer.writeUintVar(2); // point count
148
+
149
+ for (let i = 0; i < 6; i++) {
150
+ buffer.writeFloat32(i);
151
+ }
152
+ },
153
+
154
+ "PathSerializationUpgrader_2_3.js": buffer => {
155
+ buffer.writeUint8(0); // interpolation
156
+ buffer.writeUintVar(2); // point count
157
+ buffer.writeUintVar(3); // elements per point
158
+
159
+ for (let i = 0; i < 6; i++) {
160
+ buffer.writeFloat32(i);
161
+ }
162
+ },
163
+
164
+ "TagSerializationUpgrader_0_1.js": buffer => {
165
+ buffer.writeUTF8String("a-tag");
166
+ },
167
+
168
+ "TopDownCameraControllerSerializationUpgrader_0_1.js": buffer => {
169
+ // target x/y/z, pitch, yaw, distance, distanceMin, distanceMax
170
+ for (let i = 0; i < 8; i++) {
171
+ buffer.writeFloat64(i + 1);
172
+ }
173
+ },
174
+
175
+ "TransformSerializationUpgrader_0_1.js": buffer => {
176
+ buffer.writeFloat64(1); // position x
177
+ buffer.writeFloat64(2); // position y
178
+ buffer.writeFloat64(3); // position z
179
+
180
+ buffer.writeUint32(0); // encoded rotation
181
+
182
+ buffer.writeFloat32(1); // scale x
183
+ buffer.writeFloat32(2); // scale y
184
+ buffer.writeFloat32(3); // scale z
185
+ }
186
+ };
187
+ ```
188
+
189
+ ### Upgraders with no golden
190
+
191
+ Thirteen versions of the save format that nothing verifies can still be read. This was already an admitted gap
192
+ in the deleted spec; it is not a new one.
193
+
194
+ > The two `SoundEmitter` upgraders, its v2 adapter and the `SoundController` adapter now live under
195
+ > `engine/sound/sopra/legacy/` alongside the components they read. Those components are frozen readers with no
196
+ > runtime behaviour: they exist so that pre-`AudioEmitter` saves still deserialize, and are fed to
197
+ > `convertLegacySoundComponents`, which turns them into `AudioEmitter` / `AudioEventTrigger`. They stay
198
+ > registered here for exactly that reason — de-registering them would make old saves unreadable.
199
+
200
+ ```js
201
+ const WITHOUT_GOLDEN = [
202
+ "FogOfWarSerializationUpdater_0_1.js",
203
+ "GridPosition2TransformSerializationUpgrader_0_1.js",
204
+ "GridPositionSerializationUpdater_0_1.js",
205
+ "PathFollowerSerializationUpgrader_0_1.js",
206
+ "PathFollowerSerializationUpgrader_1_2.js",
207
+ "PathFollowerSerializationUpgrader_2_3.js",
208
+ "PathFollowerSerializationUpgrader_3_4.js",
209
+ "RigidBodySerializationUpgrader_0_1.js",
210
+ "SoundEmitterSerializationUpgrader_0_1.js",
211
+ "SoundEmitterSerializationUpgrader_1_2.js",
212
+ "TerrainSerializationUpgrader_0_1.js",
213
+ "TerrainSerializationUpgrader_1_2.js",
214
+ "WaterSerializationUpgrader_0_1.js"
215
+ ];
216
+ ```
217
+
218
+ ## Known defects in the format
219
+
220
+ These came out of `KNOWN_DIVERGENCE`, where they were encoded as expected values so the suite stayed green
221
+ with the bugs in place. They are real: an entity saved with any of these set does not come back the same.
222
+ Preserved here as a defect list, which is what they always were.
223
+
224
+ Where a spec has since been written for the adapter, the divergence is asserted explicitly *with its reason*,
225
+ so the behaviour is visible at the adapter rather than in a table keyed by file path — see
226
+ `LightSerializationAdapter.spec.js` (packed RGB drops alpha, harmless for a light and stated as such) and
227
+ `WaitForEventBehaviorSerializationAdapter.spec.js` (the event name survives, the wait state does not, which is
228
+ a defect and says so).
229
+
230
+ ```js
231
+ const KNOWN_DIVERGENCE = {
232
+ // Color.toUint() is documented as RGB-only (uint24) and both adapters use
233
+ // it, so alpha is dropped by design. Kept visible rather than exempted:
234
+ // a light has no meaningful alpha, but water's might, and that is a call
235
+ // for whoever owns the water shader.
236
+ "engine/graphics/ecs/light/LightSerializationAdapter.js": ["color.a"],
237
+ "engine/graphics/ecs/water/WaterSerializationAdapter.js": ["color.a", "shoreColor.a"],
238
+
239
+ // flag fields dropped wholesale
240
+ "engine/grid/grid2transform/GridPosition2TransformSerializationAdapter.js": ["flags"],
241
+ "engine/ecs/transform/TransformSerializationAdapter.js": ["flags"],
242
+ "engine/graphics/ecs/mesh/serialization/MeshSerializationAdapter.js": ["flags"],
243
+
244
+ // a behaviour tree restored mid-run resumes from the wrong child
245
+ "engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js": [
246
+ "__currentBehaviourIndex", "__currentBehaviourState"
247
+ ],
248
+ "engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js": ["__behavior"],
249
+
250
+ // the event it is waiting for is dropped, so it waits forever
251
+ "engine/intelligence/behavior/ecs/WaitForEventBehaviorSerializationAdapter.js": [
252
+ "detected", "entity", "target"
253
+ ],
254
+
255
+ "engine/sound/simulation/ecs/AcousticVolumeSerializationAdapter.js": ["shape.radius"]
256
+ };
257
+ ```
258
+
259
+ Worth separating when these are worked through:
260
+
261
+ * **Deliberate and harmless** — `Light.color.a`: `Color.toUint()` is documented RGB-only. A light has no
262
+ meaningful alpha.
263
+ * **Deliberate and questionable** — `Water.color.a`, `Water.shoreColor.a`: same encoding, but water's alpha
264
+ might mean something. A call for whoever owns that shader.
265
+ * **Straightforwardly broken** — `flags` dropped wholesale on `Transform`, `Mesh` and
266
+ `GridPosition2Transform`; `SequenceBehavior` resuming from the wrong child; `BehaviorComponent` losing its
267
+ behaviour entirely; `WaitForEventBehavior` restored on the wrong side of the event it waits for, so it waits
268
+ forever; `AcousticVolume` losing its radius.
@@ -1 +1 @@
1
- {"version":3,"file":"populateEngineSerializationRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/storage/populateEngineSerializationRegistry.js"],"names":[],"mappings":"AAsLA;;;;;;;;GAQG;AACH,iGA4GC"}
1
+ {"version":3,"file":"populateEngineSerializationRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/storage/populateEngineSerializationRegistry.js"],"names":[],"mappings":"AA+KA;;;;;;;;GAQG;AACH,iGAyGC"}
@@ -87,13 +87,6 @@ import {
87
87
  import Water from "../../graphics/ecs/water/Water.js";
88
88
  import { WaterSerializationAdapter } from "../../graphics/ecs/water/WaterSerializationAdapter.js";
89
89
  import { WaterSerializationUpgrader_0_1 } from "../../graphics/ecs/water/WaterSerializationUpgrader_0_1.js";
90
- import { ParticleEmitter } from "../../graphics/particles/particular/engine/emitter/ParticleEmitter.js";
91
- import {
92
- ParticleEmitterSerializationAdapter
93
- } from "../../graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js";
94
- import {
95
- ParticleEmitterSerializationUpgrader_0_1
96
- } from "../../graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.js";
97
90
  import { GridPosition2Transform } from "../../grid/grid2transform/GridPosition2Transform.js";
98
91
  import {
99
92
  GridPosition2TransformSerializationAdapter
@@ -208,7 +201,6 @@ export function populateEngineSerializationRegistry(registry) {
208
201
  new PathFollowerSerializationAdapter(),
209
202
  new PathSerializationAdapter(),
210
203
  new TagSerializationAdapter(),
211
- new ParticleEmitterSerializationAdapter(),
212
204
  new ParticleEffectSerializationAdapter(),
213
205
  new SoundEmitterSerializationAdapter(),
214
206
  new SoundControllerSerializationAdapter(),
@@ -292,8 +284,6 @@ export function populateEngineSerializationRegistry(registry) {
292
284
  registry.registerUpgrader(SoundEmitter.typeName, new SoundEmitterSerializationUpgrader_0_1());
293
285
  registry.registerUpgrader(SoundEmitter.typeName, new SoundEmitterSerializationUpgrader_1_2());
294
286
 
295
- registry.registerUpgrader(ParticleEmitter.typeName, new ParticleEmitterSerializationUpgrader_0_1());
296
-
297
287
  registry.registerUpgrader(TopDownCameraController.typeName, new TopDownCameraControllerSerializationUpgrader_0_1());
298
288
 
299
289
  registry.registerUpgrader(ClingToTerrain.typeName, new ClingToTerrainSerializationUpgrader_0_1());
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distribute_points_on_indexed_triangles.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/geometry/distribute_points_on_indexed_triangles.js"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,8DATW,MAAM,UACN,YAAY,GAAC,MAAM,EAAE,WACrB,UAAU,GAAC,WAAW,GAAC,WAAW,GAAC,MAAM,EAAE,iBAC3C,MAAM,sBACN,MAAM,EAAE,GAAC,YAAY,QACrB,MAAM,YACN,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,gCAqHlJ;AAnKD;;;;;;;;;GASG;AACH,0CAFU,MAAM,EAAE,CAOhB"}
@@ -1,6 +1,6 @@
1
- import { roundFair } from "../../../../../../core/math/random/roundFair.js";
2
- import { seededRandom } from "../../../../../../core/math/random/seededRandom.js";
3
- import { computeMeshSurfaceArea } from "../../../../geometry/computeMeshSurfaceArea.js";
1
+ import { roundFair } from "../../../core/math/random/roundFair.js";
2
+ import { seededRandom } from "../../../core/math/random/seededRandom.js";
3
+ import { computeMeshSurfaceArea } from "./computeMeshSurfaceArea.js";
4
4
 
5
5
  /**
6
6
  * Column-major 4x4 identity, in the element layout three.js `Matrix4.elements`
@@ -6,5 +6,5 @@
6
6
  * @returns {Sampler2D}
7
7
  */
8
8
  export function lut_to_sampler(lut: ParameterLookupTable, width: number, height: number): Sampler2D;
9
- import { Sampler2D } from "../../../../../texture/sampler/Sampler2D.js";
9
+ import { Sampler2D } from "./Sampler2D.js";
10
10
  //# sourceMappingURL=lut_to_sampler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lut_to_sampler.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/sampler/lut_to_sampler.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,iEAJW,MAAM,UACN,MAAM,GACJ,SAAS,CAmBrB;0BA1ByB,gBAAgB"}