@woosh/meep-engine 2.169.4 → 2.170.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 (1559) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/Editor.d.ts +161 -65
  3. package/editor/Editor.d.ts.map +1 -1
  4. package/editor/Editor.js +669 -794
  5. package/editor/EditorCameraNavigation.d.ts +21 -0
  6. package/editor/EditorCameraNavigation.d.ts.map +1 -0
  7. package/editor/EditorCameraNavigation.js +191 -0
  8. package/editor/EditorKeyMap.d.ts +28 -0
  9. package/editor/EditorKeyMap.d.ts.map +1 -0
  10. package/editor/EditorKeyMap.js +182 -0
  11. package/editor/REWORK_PLAN_2026_08.md +692 -0
  12. package/editor/SelectionVisualizer.d.ts +48 -19
  13. package/editor/SelectionVisualizer.d.ts.map +1 -1
  14. package/editor/SelectionVisualizer.js +163 -156
  15. package/editor/actions/concrete/ActionUpdateTexture.d.ts +11 -11
  16. package/editor/actions/concrete/ArrayCopyAction.d.ts +19 -19
  17. package/editor/actions/concrete/ArrayCopyAction.d.ts.map +1 -1
  18. package/editor/actions/concrete/ArrayCopyAction.js +7 -7
  19. package/editor/actions/concrete/ComponentAddAction.d.ts +14 -14
  20. package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -1
  21. package/editor/actions/concrete/ComponentAddAction.js +6 -5
  22. package/editor/actions/concrete/ComponentRemoveAction.d.ts +10 -10
  23. package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -1
  24. package/editor/actions/concrete/ComponentRemoveAction.js +10 -12
  25. package/editor/actions/concrete/EntityCreateAction.d.ts +17 -17
  26. package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -1
  27. package/editor/actions/concrete/EntityCreateAction.js +11 -14
  28. package/editor/actions/concrete/EntityRemoveAction.d.ts +10 -10
  29. package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -1
  30. package/editor/actions/concrete/EntityRemoveAction.js +2 -1
  31. package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts +46 -46
  32. package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts +37 -37
  33. package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts.map +1 -1
  34. package/editor/actions/concrete/ModifyPatchTextureArray2DAction.js +3 -1
  35. package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts +22 -22
  36. package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts.map +1 -1
  37. package/editor/actions/concrete/PaintTerrainOverlayAction.js +3 -3
  38. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +31 -18
  39. package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -1
  40. package/editor/actions/concrete/PatchTerrainHeightAction.js +28 -9
  41. package/editor/actions/concrete/SelectionAddAction.d.ts +18 -18
  42. package/editor/actions/concrete/SelectionAddAction.d.ts.map +1 -1
  43. package/editor/actions/concrete/SelectionAddAction.js +2 -1
  44. package/editor/actions/concrete/SelectionClearAction.d.ts +8 -8
  45. package/editor/actions/concrete/SelectionClearAction.d.ts.map +1 -1
  46. package/editor/actions/concrete/SelectionClearAction.js +1 -4
  47. package/editor/actions/concrete/SelectionRemoveAction.d.ts +9 -9
  48. package/editor/actions/concrete/SelectionRemoveAction.d.ts.map +1 -1
  49. package/editor/actions/concrete/SelectionRemoveAction.js +2 -1
  50. package/editor/actions/concrete/TransformModifyAction.d.ts +16 -16
  51. package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
  52. package/editor/actions/concrete/TransformModifyAction.js +8 -8
  53. package/editor/actions/concrete/WriteGridValueAction.d.ts +13 -14
  54. package/editor/actions/concrete/WriteGridValueAction.d.ts.map +1 -1
  55. package/editor/actions/concrete/WriteGridValueAction.js +3 -3
  56. package/editor/camera/camera_framing.d.ts +30 -0
  57. package/editor/camera/camera_framing.d.ts.map +1 -0
  58. package/editor/camera/camera_framing.js +98 -0
  59. package/editor/clipboard.d.ts +19 -0
  60. package/editor/clipboard.d.ts.map +1 -0
  61. package/editor/clipboard.js +184 -0
  62. package/editor/ecs/EditorEntity.d.ts +15 -15
  63. package/editor/ecs/EditorEntitySystem.d.ts +7 -7
  64. package/editor/ecs/EditorEntitySystem.d.ts.map +1 -1
  65. package/editor/ecs/EditorEntitySystem.js +1 -6
  66. package/editor/ecs/component/FieldDescriptor.d.ts +26 -26
  67. package/editor/ecs/component/FieldDescriptor.d.ts.map +1 -1
  68. package/editor/ecs/component/FieldDescriptor.js +20 -22
  69. package/editor/ecs/component/FieldValueAdapter.d.ts +6 -6
  70. package/editor/ecs/component/FieldValueAdapter.d.ts.map +1 -1
  71. package/editor/ecs/component/FieldValueAdapter.js +2 -5
  72. package/editor/ecs/component/TypeEditor.d.ts +24 -24
  73. package/editor/ecs/component/createFieldEditor.d.ts +8 -8
  74. package/editor/ecs/component/createObjectEditor.d.ts +13 -13
  75. package/editor/ecs/component/editors/ColorEditor.d.ts +6 -6
  76. package/editor/ecs/component/editors/HTMLElementEditor.d.ts +6 -6
  77. package/editor/ecs/component/editors/HTMLElementEditor.d.ts.map +1 -1
  78. package/editor/ecs/component/editors/ImagePathEditor.d.ts +6 -6
  79. package/editor/ecs/component/editors/LargeStringEditor.d.ts +15 -15
  80. package/editor/ecs/component/editors/NumericIntervalEditor.d.ts +6 -6
  81. package/editor/ecs/component/editors/NumericIntervalEditor.d.ts.map +1 -1
  82. package/editor/ecs/component/editors/ObservedBooleanEditor.d.ts +6 -6
  83. package/editor/ecs/component/editors/ObservedEnumEditor.d.ts +6 -6
  84. package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts +6 -6
  85. package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts.map +1 -1
  86. package/editor/ecs/component/editors/ObservedStringEditor.d.ts +6 -6
  87. package/editor/ecs/component/editors/ObservedStringEditor.d.ts.map +1 -1
  88. package/editor/ecs/component/editors/Sampler2DEditor.d.ts +6 -6
  89. package/editor/ecs/component/editors/collection/ListEditor.d.ts +7 -7
  90. package/editor/ecs/component/editors/common/BitFlagsEditor.d.ts +11 -11
  91. package/editor/ecs/component/editors/common/EnumEditor.d.ts +7 -7
  92. package/editor/ecs/component/editors/common/makeV3_editor.d.ts +14 -14
  93. package/editor/ecs/component/editors/common/makeV3_editor.d.ts.map +1 -1
  94. package/editor/ecs/component/editors/common/noEditor.d.ts +2 -2
  95. package/editor/ecs/component/editors/common/two_way_sync.d.ts +22 -0
  96. package/editor/ecs/component/editors/common/two_way_sync.d.ts.map +1 -0
  97. package/editor/ecs/component/editors/ecs/GridObstacleEditor.d.ts +6 -6
  98. package/editor/ecs/component/editors/ecs/GridObstacleEditor.js +1 -1
  99. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +19 -66
  100. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +1 -1
  101. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +35 -239
  102. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +11 -11
  103. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +1 -1
  104. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +17 -17
  105. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +13 -13
  106. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +51 -51
  107. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +1 -1
  108. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +46 -47
  109. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +1 -1
  110. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +15 -15
  111. package/editor/ecs/component/editors/ecs/Trail2DEditor.d.ts +29 -29
  112. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +42 -0
  113. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -0
  114. package/editor/ecs/component/editors/ecs/TransformEditor.d.ts +19 -19
  115. package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts +8 -0
  116. package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts.map +1 -0
  117. package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.js +19 -0
  118. package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.d.ts +18 -18
  119. package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.d.ts +38 -38
  120. package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.d.ts +15 -15
  121. package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.d.ts +18 -18
  122. package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.d.ts +17 -17
  123. package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts +5 -5
  124. package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts.map +1 -1
  125. package/editor/ecs/component/editors/geom/Vector1Editor.d.ts +6 -6
  126. package/editor/ecs/component/editors/geom/Vector1Editor.d.ts.map +1 -1
  127. package/editor/ecs/component/editors/geom/Vector2Editor.d.ts +5 -5
  128. package/editor/ecs/component/editors/geom/Vector3Editor.d.ts +5 -5
  129. package/editor/ecs/component/editors/geom/Vector4Editor.d.ts +5 -5
  130. package/editor/ecs/component/editors/primitive/ArrayEditor.d.ts +7 -7
  131. package/editor/ecs/component/editors/primitive/BooleanEditor.d.ts +6 -6
  132. package/editor/ecs/component/editors/primitive/FunctionEditor.d.ts +6 -6
  133. package/editor/ecs/component/editors/primitive/NumberEditor.d.ts +7 -7
  134. package/editor/ecs/component/editors/primitive/NumberEditor.d.ts.map +1 -1
  135. package/editor/ecs/component/editors/primitive/ObjectEditor.d.ts +5 -5
  136. package/editor/ecs/component/editors/primitive/StringEditor.d.ts +6 -6
  137. package/editor/ecs/component/editors/three/BufferGeometryEditor.d.ts +6 -6
  138. package/editor/ecs/component/editors/three/MaterialEditor.d.ts +6 -6
  139. package/editor/ecs/component/editors/three/MeshEditor.d.ts +6 -6
  140. package/editor/ecs/component/editors/three/TextureEditor.d.ts +6 -6
  141. package/editor/ecs/component/findNearestRegisteredType.d.ts +7 -7
  142. package/editor/ecs/component/registerEngineComponentEditors.d.ts +8 -0
  143. package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -0
  144. package/editor/ecs/component/registerEngineComponentEditors.js +85 -0
  145. package/editor/enableEditor.d.ts +13 -13
  146. package/editor/enableEditor.d.ts.map +1 -1
  147. package/editor/enableEditor.js +14 -4
  148. package/editor/library/MeshLibrary.d.ts +12 -12
  149. package/editor/library/MeshLibrary.d.ts.map +1 -1
  150. package/editor/library/MeshLibrary.js +4 -7
  151. package/editor/particles/lut_ops.d.ts +34 -0
  152. package/editor/particles/lut_ops.d.ts.map +1 -0
  153. package/editor/particles/lut_ops.js +148 -0
  154. package/editor/particles/particleEditEvents.d.ts +11 -0
  155. package/editor/particles/particleEditEvents.d.ts.map +1 -0
  156. package/editor/particles/particleEditEvents.js +12 -0
  157. package/editor/particles/rebuildParticleEmitter.d.ts +11 -0
  158. package/editor/particles/rebuildParticleEmitter.d.ts.map +1 -0
  159. package/editor/particles/rebuildParticleEmitter.js +49 -0
  160. package/editor/persistence/EditorLayoutStore.d.ts +30 -0
  161. package/editor/persistence/EditorLayoutStore.d.ts.map +1 -0
  162. package/editor/persistence/EditorLayoutStore.js +71 -0
  163. package/editor/persistence/SceneMetadata.d.ts +38 -0
  164. package/editor/persistence/SceneMetadata.d.ts.map +1 -0
  165. package/editor/persistence/SceneMetadata.js +52 -0
  166. package/editor/persistence/SceneSlotManager.d.ts +40 -0
  167. package/editor/persistence/SceneSlotManager.d.ts.map +1 -0
  168. package/editor/persistence/SceneSlotManager.js +144 -0
  169. package/editor/persistence/buildNewSceneDataset.d.ts +10 -0
  170. package/editor/persistence/buildNewSceneDataset.d.ts.map +1 -0
  171. package/editor/persistence/buildNewSceneDataset.js +67 -0
  172. package/editor/persistence/files.d.ts +24 -0
  173. package/editor/persistence/files.d.ts.map +1 -0
  174. package/editor/persistence/files.js +68 -0
  175. package/editor/persistence/scene_import.d.ts +45 -0
  176. package/editor/persistence/scene_import.d.ts.map +1 -0
  177. package/editor/persistence/scene_import.js +143 -0
  178. package/editor/persistence/scene_serialization.d.ts +36 -0
  179. package/editor/persistence/scene_serialization.d.ts.map +1 -0
  180. package/editor/persistence/scene_serialization.js +79 -0
  181. package/editor/persistence/string_buffer_codec.d.ts +20 -0
  182. package/editor/persistence/string_buffer_codec.d.ts.map +1 -0
  183. package/editor/persistence/string_buffer_codec.js +41 -0
  184. package/editor/process/DisableGameUIProcess.d.ts +7 -7
  185. package/editor/process/DisableGameUIProcess.d.ts.map +1 -1
  186. package/editor/process/DisableGameUIProcess.js +1 -5
  187. package/editor/process/EditorProcess.d.ts +18 -18
  188. package/editor/process/GridDisplayProcess.d.ts +16 -0
  189. package/editor/process/GridDisplayProcess.d.ts.map +1 -0
  190. package/editor/process/GridDisplayProcess.js +53 -0
  191. package/editor/process/ObstacleGridDisplayProcess.d.ts +12 -12
  192. package/editor/process/ObstacleGridDisplayProcess.d.ts.map +1 -1
  193. package/editor/process/ObstacleGridDisplayProcess.js +7 -9
  194. package/editor/process/ParticleEmitterRebuildProcess.d.ts +66 -0
  195. package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +1 -0
  196. package/editor/process/ParticleEmitterRebuildProcess.js +217 -0
  197. package/editor/process/ProcessEngine.d.ts +29 -29
  198. package/editor/process/ProcessEngine.d.ts.map +1 -1
  199. package/editor/process/ProcessEngine.js +11 -4
  200. package/editor/process/SymbolicDisplayProcess.d.ts +18 -18
  201. package/editor/process/SymbolicDisplayProcess.js +2 -2
  202. package/editor/process/symbolic/ComponentSymbolicDisplay.d.ts +10 -10
  203. package/editor/process/symbolic/SymbolicDisplayInternalAPI.d.ts +67 -64
  204. package/editor/process/symbolic/SymbolicDisplayInternalAPI.d.ts.map +1 -1
  205. package/editor/process/symbolic/SymbolicDisplayInternalAPI.js +42 -45
  206. package/editor/process/symbolic/buildThreeJSHelperEntity.d.ts +8 -8
  207. package/editor/process/symbolic/make3DSymbolicDisplay.d.ts +9 -9
  208. package/editor/process/symbolic/makeCameraSymbolicDisplay.d.ts +6 -6
  209. package/editor/process/symbolic/makeGridPositionSymbolDisplay.d.ts +5 -5
  210. package/editor/process/symbolic/makeHelperBoxGeometry.d.ts +2 -2
  211. package/editor/process/symbolic/makeHelperSphereGeometry.d.ts +8 -8
  212. package/editor/process/symbolic/makeLightSymbolicDisplay.d.ts +6 -6
  213. package/editor/process/symbolic/makeParticleEmitterSymbolicDisplay.d.ts +5 -5
  214. package/editor/process/symbolic/makeParticleEmitterSymbolicDisplay.d.ts.map +1 -1
  215. package/editor/process/symbolic/makeParticleEmitterSymbolicDisplay.js +21 -1
  216. package/editor/process/symbolic/makePathSymbolicDisplay.d.ts +6 -6
  217. package/editor/process/symbolic/makePositionedIconDisplaySymbol.d.ts +8 -8
  218. package/editor/process/symbolic/makePositionedIconDisplaySymbol.d.ts.map +1 -1
  219. package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +3 -0
  220. package/editor/process/symbolic/makeSocketsSymbolicDisplay.d.ts +6 -6
  221. package/editor/process/symbolic/makeSolidArrowGeometry.d.ts +25 -25
  222. package/editor/process/symbolic/makeSoundEmitterSymbolicDisplay.d.ts +5 -5
  223. package/editor/process/symbolic/synchronizeTransform.d.ts +11 -11
  224. package/editor/prototypeEditorShell.js +102 -0
  225. package/editor/style/controls.scss +168 -0
  226. package/editor/style/editor.scss +313 -0
  227. package/editor/style/inspector.scss +223 -0
  228. package/editor/templates/entity_templates.d.ts +19 -0
  229. package/editor/templates/entity_templates.d.ts.map +1 -0
  230. package/editor/templates/entity_templates.js +167 -0
  231. package/editor/tools/GridPaintTool.d.ts +17 -16
  232. package/editor/tools/GridPaintTool.d.ts.map +1 -1
  233. package/editor/tools/GridPaintTool.js +13 -14
  234. package/editor/tools/SelectionTool.d.ts +25 -26
  235. package/editor/tools/SelectionTool.d.ts.map +1 -1
  236. package/editor/tools/SelectionTool.js +46 -13
  237. package/editor/tools/TransformToolV2.d.ts +76 -0
  238. package/editor/tools/TransformToolV2.d.ts.map +1 -0
  239. package/editor/tools/TransformToolV2.js +396 -0
  240. package/editor/tools/engine/Tool.d.ts +87 -63
  241. package/editor/tools/engine/Tool.d.ts.map +1 -1
  242. package/editor/tools/engine/Tool.js +72 -28
  243. package/editor/tools/engine/ToolEngine.d.ts +21 -22
  244. package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
  245. package/editor/tools/engine/ToolEngine.js +52 -54
  246. package/editor/tools/engine/ToolState.d.ts +6 -6
  247. package/editor/tools/paint/TerrainHeightPaintTool.d.ts +17 -17
  248. package/editor/tools/paint/TerrainHeightPaintTool.d.ts.map +1 -1
  249. package/editor/tools/paint/TerrainHeightPaintTool.js +12 -7
  250. package/editor/tools/paint/TerrainPaintTool.d.ts +81 -30
  251. package/editor/tools/paint/TerrainPaintTool.d.ts.map +1 -1
  252. package/editor/tools/paint/TerrainPaintTool.js +58 -21
  253. package/editor/tools/paint/TerrainTexturePaintTool.d.ts +18 -17
  254. package/editor/tools/paint/TerrainTexturePaintTool.d.ts.map +1 -1
  255. package/editor/tools/paint/TerrainTexturePaintTool.js +75 -12
  256. package/editor/tools/v2/BlenderCameraOrientationGizmo.js +24 -26
  257. package/editor/tools/v2/GizmoNode.d.ts.map +1 -1
  258. package/editor/tools/v2/GizmoNode.js +14 -13
  259. package/editor/tools/v2/TransformControls.d.ts.map +1 -1
  260. package/editor/tools/v2/TransformControls.js +18 -45
  261. package/editor/tools/v2/TransformControlsGizmo.d.ts.map +1 -1
  262. package/editor/tools/v2/TransformControlsGizmo.js +3 -6
  263. package/editor/tools/v2/TransformControlsPlane.d.ts.map +1 -1
  264. package/editor/tools/v2/TransformControlsPlane.js +3 -5
  265. package/editor/tools/v2/TransformMode.d.ts +6 -6
  266. package/editor/view/ecs/ComponentControlView.d.ts +23 -23
  267. package/editor/view/ecs/ComponentControlView.d.ts.map +1 -1
  268. package/editor/view/ecs/ComponentControlView.js +4 -4
  269. package/editor/view/ecs/EntityEditor.d.ts +24 -29
  270. package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
  271. package/editor/view/ecs/EntityEditor.js +34 -10
  272. package/editor/view/ecs/EntityList.js +2 -3
  273. package/editor/view/ecs/HierarchicalEntityListView.d.ts +24 -7
  274. package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -1
  275. package/editor/view/ecs/HierarchicalEntityListView.js +339 -191
  276. package/editor/view/ecs/components/DatGuiController.js +2 -216
  277. package/editor/view/ecs/components/color/GaugeView.d.ts +12 -12
  278. package/editor/view/ecs/components/common/AutoCanvasView.d.ts +29 -19
  279. package/editor/view/ecs/components/common/AutoCanvasView.d.ts.map +1 -1
  280. package/editor/view/ecs/components/common/LineView.d.ts +11 -11
  281. package/editor/view/ecs/components/common/LineView.d.ts.map +1 -1
  282. package/editor/view/ecs/components/common/LineView.js +2 -1
  283. package/editor/view/ecs/components/common/NumberController.d.ts +17 -17
  284. package/editor/view/ecs/components/common/TextController.d.ts +21 -0
  285. package/editor/view/ecs/components/common/TextController.d.ts.map +1 -0
  286. package/editor/view/library/MeshLibraryView.d.ts +17 -0
  287. package/editor/view/library/MeshLibraryView.d.ts.map +1 -0
  288. package/editor/view/library/MeshLibraryView.js +35 -20
  289. package/editor/view/node-graph/NodeGraphCamera.d.ts +48 -0
  290. package/editor/view/node-graph/NodeGraphCamera.d.ts.map +1 -0
  291. package/editor/view/node-graph/NodeGraphCamera.js +88 -90
  292. package/editor/view/node-graph/NodeGraphEditorView.d.ts +25 -2
  293. package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
  294. package/editor/view/node-graph/NodeGraphSelection.d.ts +56 -0
  295. package/editor/view/node-graph/NodeGraphSelection.d.ts.map +1 -0
  296. package/editor/view/node-graph/NodeGraphView.d.ts +35 -18
  297. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  298. package/editor/view/node-graph/NodeGraphView.js +666 -669
  299. package/editor/view/node-graph/NodeView.d.ts +3 -2
  300. package/editor/view/node-graph/NodeView.d.ts.map +1 -1
  301. package/editor/view/node-graph/PortView.d.ts +2 -2
  302. package/editor/view/node-graph/PortView.d.ts.map +1 -1
  303. package/editor/view/node-graph/PortView.js +2 -2
  304. package/editor/view/node-graph/actions/ConnectionCreateAction.d.ts +34 -0
  305. package/editor/view/node-graph/actions/ConnectionCreateAction.d.ts.map +1 -0
  306. package/editor/view/node-graph/actions/ConnectionCreateAction.js +53 -53
  307. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts +26 -0
  308. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts.map +1 -0
  309. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts +47 -0
  310. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts.map +1 -0
  311. package/editor/view/node-graph/actions/NodeDeleteAction.js +88 -88
  312. package/editor/view/node-graph/actions/NodeParameterSetAction.d.ts +34 -0
  313. package/editor/view/node-graph/actions/NodeParameterSetAction.d.ts.map +1 -0
  314. package/editor/view/node-graph/actions/NodeParameterSetAction.js +52 -52
  315. package/editor/view/node-graph/actions/NodesMoveAction.d.ts +38 -0
  316. package/editor/view/node-graph/actions/NodesMoveAction.d.ts.map +1 -0
  317. package/editor/view/node-graph/actions/SelectionSetAction.d.ts +38 -0
  318. package/editor/view/node-graph/actions/SelectionSetAction.d.ts.map +1 -0
  319. package/editor/view/node-graph/actions/SelectionSetAction.js +60 -60
  320. package/editor/view/node-graph/connection_wire_geometry.d.ts +46 -0
  321. package/editor/view/node-graph/connection_wire_geometry.d.ts.map +1 -0
  322. package/editor/view/particles/ColorLutGradientView.d.ts +19 -0
  323. package/editor/view/particles/ColorLutGradientView.d.ts.map +1 -0
  324. package/editor/view/particles/ColorLutGradientView.js +291 -0
  325. package/editor/view/particles/ScalarLutCurveView.d.ts +19 -0
  326. package/editor/view/particles/ScalarLutCurveView.d.ts.map +1 -0
  327. package/editor/view/particles/ScalarLutCurveView.js +279 -0
  328. package/editor/view/prepareMeshLibrary.d.ts +7 -0
  329. package/editor/view/prepareMeshLibrary.d.ts.map +1 -0
  330. package/editor/view/prepareMeshLibrary.js +34 -14
  331. package/editor/view/shell/EditorShellView.d.ts +18 -0
  332. package/editor/view/shell/EditorShellView.d.ts.map +1 -0
  333. package/editor/view/shell/EditorShellView.js +442 -0
  334. package/editor/view/shell/SceneTreePanelView.d.ts +17 -0
  335. package/editor/view/shell/SceneTreePanelView.d.ts.map +1 -0
  336. package/editor/view/shell/SceneTreePanelView.js +119 -0
  337. package/editor/view/shell/ViewportPanelView.d.ts +18 -0
  338. package/editor/view/shell/ViewportPanelView.d.ts.map +1 -0
  339. package/editor/view/shell/ViewportPanelView.js +64 -0
  340. package/editor/view/tools/ToolSettingsView.d.ts +21 -10
  341. package/editor/view/tools/ToolSettingsView.d.ts.map +1 -1
  342. package/editor/view/tools/ToolSettingsView.js +114 -100
  343. package/editor/view/tools/ToolView.d.ts +12 -12
  344. package/editor/view/v2/SplitView.js +2 -104
  345. package/package.json +7 -1
  346. package/samples/terrain/editor.js +9 -13
  347. package/src/core/binary/BitSet.d.ts.map +1 -1
  348. package/src/core/binary/BitSet.js +7 -7
  349. package/src/core/binary/type/Field.d.ts +2 -2
  350. package/src/core/binary/type/Field.d.ts.map +1 -1
  351. package/src/core/binary/type/Field.js +3 -2
  352. package/src/core/binary/type/Type.d.ts +5 -5
  353. package/src/core/binary/type/Type.d.ts.map +1 -1
  354. package/src/core/binary/type/Type.js +18 -15
  355. package/src/core/binary/type/TypeBuilder.d.ts +1 -1
  356. package/src/core/binary/type/TypeBuilder.d.ts.map +1 -1
  357. package/src/core/binary/type/TypeBuilder.js +2 -1
  358. package/src/core/binary/type/TypeRegistry.d.ts.map +1 -1
  359. package/src/core/binary/type/TypeRegistry.js +1 -3
  360. package/src/core/cache/Cache.d.ts +8 -8
  361. package/src/core/cache/Cache.d.ts.map +1 -1
  362. package/src/core/cache/Cache.js +14 -15
  363. package/src/core/cache/CacheV2.d.ts.map +1 -1
  364. package/src/core/cache/CacheV2.js +15 -20
  365. package/src/core/cache/LoadingCache.d.ts.map +1 -1
  366. package/src/core/cache/LoadingCache.js +3 -2
  367. package/src/core/collection/CuckooFilter.d.ts +23 -23
  368. package/src/core/collection/CuckooFilter.d.ts.map +1 -1
  369. package/src/core/collection/CuckooFilter.js +27 -26
  370. package/src/core/collection/PairUint32Map.d.ts +1 -1
  371. package/src/core/collection/PairUint32Map.d.ts.map +1 -1
  372. package/src/core/collection/PairUint32Map.js +322 -321
  373. package/src/core/collection/RingBuffer.d.ts +5 -5
  374. package/src/core/collection/RingBuffer.d.ts.map +1 -1
  375. package/src/core/collection/RingBuffer.js +18 -18
  376. package/src/core/collection/Uint32Map.d.ts +5 -5
  377. package/src/core/collection/Uint32Map.d.ts.map +1 -1
  378. package/src/core/collection/Uint32Map.js +346 -345
  379. package/src/core/collection/Uint32MinHeap.d.ts +4 -4
  380. package/src/core/collection/Uint32MinHeap.d.ts.map +1 -1
  381. package/src/core/collection/Uint32MinHeap.js +109 -109
  382. package/src/core/collection/array/iterator/ArrayIteratorRandom.d.ts.map +1 -1
  383. package/src/core/collection/array/iterator/ArrayIteratorRandom.js +3 -8
  384. package/src/core/collection/heap/FibonacciHeap.d.ts +6 -6
  385. package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -1
  386. package/src/core/collection/heap/FibonacciHeap.js +586 -586
  387. package/src/core/collection/heap/IndexedFloatMaxHeap.d.ts +1 -1
  388. package/src/core/collection/heap/IndexedFloatMaxHeap.d.ts.map +1 -1
  389. package/src/core/collection/heap/IndexedFloatMaxHeap.js +261 -261
  390. package/src/core/collection/heap/IndexedFloatMinHeap.d.ts +1 -1
  391. package/src/core/collection/heap/IndexedFloatMinHeap.d.ts.map +1 -1
  392. package/src/core/collection/heap/IndexedFloatMinHeap.js +268 -268
  393. package/src/core/collection/heap/Uint32Heap.d.ts +6 -6
  394. package/src/core/collection/heap/Uint32Heap.d.ts.map +1 -1
  395. package/src/core/collection/heap/Uint32Heap.js +7 -7
  396. package/src/core/collection/heap/Uint32Heap4.d.ts +6 -6
  397. package/src/core/collection/heap/Uint32Heap4.d.ts.map +1 -1
  398. package/src/core/collection/heap/Uint32Heap4.js +490 -490
  399. package/src/core/collection/list/FilteredListProjection.d.ts +7 -7
  400. package/src/core/collection/list/FilteredListProjection.d.ts.map +1 -1
  401. package/src/core/collection/list/FilteredListProjection.js +12 -12
  402. package/src/core/collection/list/SortedListProjection.d.ts +2 -2
  403. package/src/core/collection/list/SortedListProjection.d.ts.map +1 -1
  404. package/src/core/collection/list/SortedListProjection.js +6 -6
  405. package/src/core/collection/table/RowFirstTable.d.ts +5 -5
  406. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  407. package/src/core/collection/table/RowFirstTable.js +6 -7
  408. package/src/core/collection/table/RowFirstTableSpec.d.ts +10 -2
  409. package/src/core/collection/table/RowFirstTableSpec.d.ts.map +1 -1
  410. package/src/core/collection/table/RowFirstTableSpec.js +10 -1
  411. package/src/core/function/FunctionCompiler.d.ts.map +1 -1
  412. package/src/core/function/FunctionCompiler.js +13 -15
  413. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  414. package/src/core/geom/3d/shape/BoxShape3D.js +171 -175
  415. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  416. package/src/core/geom/3d/shape/CapsuleShape3D.js +238 -242
  417. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  418. package/src/core/geom/3d/shape/ConvexHullShape3D.js +43 -44
  419. package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
  420. package/src/core/geom/3d/shape/CylinderShape3D.js +220 -224
  421. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  422. package/src/core/geom/3d/shape/HeightMapShape3D.js +58 -61
  423. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  424. package/src/core/geom/3d/shape/MeshShape3D.js +76 -80
  425. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  426. package/src/core/geom/3d/shape/PosedShape3D.js +160 -159
  427. package/src/core/geom/3d/shape/SphereShape3D.d.ts.map +1 -1
  428. package/src/core/geom/3d/shape/SphereShape3D.js +143 -146
  429. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  430. package/src/core/geom/3d/shape/TransformedShape3D.js +20 -24
  431. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
  432. package/src/core/geom/3d/shape/Triangle3D.js +293 -297
  433. package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
  434. package/src/core/geom/3d/shape/UnionShape3D.js +15 -19
  435. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +15 -15
  436. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  437. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +21 -21
  438. package/src/core/geom/3d/topology/simplify/EdgeCollapseCandidate.d.ts.map +1 -1
  439. package/src/core/geom/3d/topology/simplify/EdgeCollapseCandidate.js +36 -36
  440. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts +6 -6
  441. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts.map +1 -1
  442. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +8 -8
  443. package/src/core/graph/layout/Connection.d.ts +2 -2
  444. package/src/core/graph/layout/Connection.d.ts.map +1 -1
  445. package/src/core/graph/layout/Connection.js +6 -6
  446. package/src/core/graph/metis/native/MetisGraph.d.ts.map +1 -1
  447. package/src/core/graph/metis/native/MetisGraph.js +232 -231
  448. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts +3 -3
  449. package/src/core/graph/metis/native/bisection/BisectionScratch.d.ts.map +1 -1
  450. package/src/core/graph/metis/native/bisection/BisectionScratch.js +104 -103
  451. package/src/core/localization/Localization.d.ts.map +1 -1
  452. package/src/core/localization/Localization.js +35 -37
  453. package/src/core/model/BooleanVector3.d.ts +1 -1
  454. package/src/core/model/BooleanVector3.d.ts.map +1 -1
  455. package/src/core/model/BooleanVector3.js +2 -2
  456. package/src/core/model/ObservedValue.d.ts +2 -2
  457. package/src/core/model/ObservedValue.d.ts.map +1 -1
  458. package/src/core/model/ObservedValue.js +8 -6
  459. package/src/core/model/object/ImmutableObjectPool.d.ts +5 -5
  460. package/src/core/model/object/ImmutableObjectPool.d.ts.map +1 -1
  461. package/src/core/model/object/ImmutableObjectPool.js +6 -7
  462. package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.d.ts +5 -5
  463. package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.d.ts.map +1 -1
  464. package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.js +93 -96
  465. package/src/core/model/reactive/model/terminal/ReactiveReference.d.ts +4 -4
  466. package/src/core/model/reactive/model/terminal/ReactiveReference.d.ts.map +1 -1
  467. package/src/core/model/reactive/model/terminal/ReactiveReference.js +6 -6
  468. package/src/core/model/stat/LinearModifier.d.ts +10 -10
  469. package/src/core/model/stat/LinearModifier.d.ts.map +1 -1
  470. package/src/core/model/stat/LinearModifier.js +12 -12
  471. package/src/core/process/Future.d.ts +1 -1
  472. package/src/core/process/Future.d.ts.map +1 -1
  473. package/src/core/process/Future.js +6 -7
  474. package/src/core/process/action/AsynchronousActionSequence.d.ts +5 -5
  475. package/src/core/process/action/AsynchronousActionSequence.d.ts.map +1 -1
  476. package/src/core/process/action/AsynchronousActionSequence.js +9 -9
  477. package/src/core/process/executor/profile/ConcurrentExecutorProfiler.d.ts.map +1 -1
  478. package/src/core/process/executor/profile/ConcurrentExecutorProfiler.js +19 -20
  479. package/src/core/process/filter/MutableFilter.d.ts.map +1 -1
  480. package/src/core/process/filter/MutableFilter.js +1 -6
  481. package/src/core/process/task/RemainingTimeEstimator.d.ts +1 -1
  482. package/src/core/process/task/RemainingTimeEstimator.d.ts.map +1 -1
  483. package/src/core/process/task/RemainingTimeEstimator.js +2 -1
  484. package/src/core/process/undo/ActionProcessor.d.ts +36 -17
  485. package/src/core/process/undo/ActionProcessor.d.ts.map +1 -1
  486. package/src/core/process/undo/ActionProcessor.js +131 -136
  487. package/src/core/science/units/UnitMatrix.d.ts.map +1 -1
  488. package/src/core/science/units/UnitMatrix.js +249 -251
  489. package/src/engine/EngineHarness.d.ts +5 -5
  490. package/src/engine/EngineHarness.d.ts.map +1 -1
  491. package/src/engine/EngineHarness.js +6 -6
  492. package/src/engine/achievements/Achievement.d.ts.map +1 -1
  493. package/src/engine/achievements/Achievement.js +35 -35
  494. package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
  495. package/src/engine/achievements/AchievementManager.js +33 -35
  496. package/src/engine/achievements/gateway/StorageAchievementGateway.d.ts +1 -1
  497. package/src/engine/achievements/gateway/StorageAchievementGateway.d.ts.map +1 -1
  498. package/src/engine/achievements/gateway/StorageAchievementGateway.js +2 -2
  499. package/src/engine/animation/EntityAnimation.d.ts +5 -5
  500. package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
  501. package/src/engine/animation/EntityAnimation.js +6 -6
  502. package/src/engine/animation/curve/editor/CurveEditorView.d.ts +2 -2
  503. package/src/engine/animation/curve/editor/CurveEditorView.d.ts.map +1 -1
  504. package/src/engine/animation/curve/editor/CurveEditorView.js +3 -3
  505. package/src/engine/animation/curve/editor/DragHandler.d.ts +1 -1
  506. package/src/engine/animation/curve/editor/DragHandler.d.ts.map +1 -1
  507. package/src/engine/animation/curve/editor/DragHandler.js +2 -2
  508. package/src/engine/animation/curve/editor/OperationRouter.d.ts +1 -1
  509. package/src/engine/animation/curve/editor/OperationRouter.d.ts.map +1 -1
  510. package/src/engine/animation/curve/editor/OperationRouter.js +2 -2
  511. package/src/engine/animation/keyed2/AnimationTrack.d.ts +10 -10
  512. package/src/engine/animation/keyed2/AnimationTrack.d.ts.map +1 -1
  513. package/src/engine/animation/keyed2/AnimationTrack.js +27 -27
  514. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts +4 -4
  515. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
  516. package/src/engine/animation/keyed2/AnimationTrackPlayback.js +6 -9
  517. package/src/engine/asset/Asset.d.ts +10 -10
  518. package/src/engine/asset/Asset.d.ts.map +1 -1
  519. package/src/engine/asset/Asset.js +13 -14
  520. package/src/engine/asset/AssetRequest.d.ts +14 -14
  521. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  522. package/src/engine/asset/AssetRequest.js +18 -18
  523. package/src/engine/asset/PendingAsset.d.ts +5 -5
  524. package/src/engine/asset/PendingAsset.d.ts.map +1 -1
  525. package/src/engine/asset/PendingAsset.js +108 -108
  526. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts +2 -2
  527. package/src/engine/asset/loaders/GLTFAssetLoader.d.ts.map +1 -1
  528. package/src/engine/asset/loaders/GLTFAssetLoader.js +16 -18
  529. package/src/engine/asset/loaders/JavascriptAssetLoader.d.ts.map +1 -1
  530. package/src/engine/asset/loaders/JavascriptAssetLoader.js +30 -31
  531. package/src/engine/asset/loaders/gltf/extensions/MSFT_texture_dds.d.ts.map +1 -1
  532. package/src/engine/asset/loaders/gltf/extensions/MSFT_texture_dds.js +2 -2
  533. package/src/engine/asset/loaders/material/StaticMaterialCache.d.ts.map +1 -1
  534. package/src/engine/asset/loaders/material/StaticMaterialCache.js +9 -12
  535. package/src/engine/control/StatefulController.d.ts +4 -4
  536. package/src/engine/control/StatefulController.d.ts.map +1 -1
  537. package/src/engine/control/StatefulController.js +6 -6
  538. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
  539. package/src/engine/control/first-person/FirstPersonPlayerController.js +31 -33
  540. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  541. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2052 -2028
  542. package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -1
  543. package/src/engine/control/first-person/abilities/Ability.js +117 -119
  544. package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -1
  545. package/src/engine/control/first-person/abilities/AbilitySet.js +183 -185
  546. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
  547. package/src/engine/control/first-person/abilities/LedgeGrab.js +404 -405
  548. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  549. package/src/engine/control/first-person/abilities/Mantle.js +24 -23
  550. package/src/engine/control/first-person/abilities/ScrambleUp.d.ts.map +1 -1
  551. package/src/engine/control/first-person/abilities/ScrambleUp.js +181 -182
  552. package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -1
  553. package/src/engine/control/first-person/abilities/Slide.js +164 -166
  554. package/src/engine/control/first-person/abilities/WallJump.d.ts.map +1 -1
  555. package/src/engine/control/first-person/abilities/WallJump.js +136 -139
  556. package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -1
  557. package/src/engine/control/first-person/abilities/WallRun.js +7 -9
  558. package/src/engine/control/first-person/collision/KinematicMover.d.ts +7 -13
  559. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  560. package/src/engine/control/first-person/collision/KinematicMover.js +11 -10
  561. package/src/engine/control/first-person/composer/EyeOffsetStack.d.ts.map +1 -1
  562. package/src/engine/control/first-person/composer/EyeOffsetStack.js +58 -60
  563. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts +2 -2
  564. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.d.ts.map +1 -1
  565. package/src/engine/control/first-person/mastery/BreathRhythmEvaluator.js +133 -133
  566. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.d.ts.map +1 -1
  567. package/src/engine/control/first-person/mastery/FootAsymmetryTurnEvaluator.js +106 -109
  568. package/src/engine/control/first-person/mastery/MasteryEvaluator.d.ts.map +1 -1
  569. package/src/engine/control/first-person/mastery/MasteryEvaluator.js +43 -45
  570. package/src/engine/control/first-person/mastery/MasteryScore.d.ts +6 -6
  571. package/src/engine/control/first-person/mastery/MasteryScore.d.ts.map +1 -1
  572. package/src/engine/control/first-person/mastery/MasteryScore.js +100 -100
  573. package/src/engine/control/first-person/mastery/MasterySet.d.ts.map +1 -1
  574. package/src/engine/control/first-person/mastery/MasterySet.js +84 -86
  575. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -1
  576. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +80 -83
  577. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -1
  578. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +106 -109
  579. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -1
  580. package/src/engine/control/first-person/sensors/FirstPersonSensors.js +45 -40
  581. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  582. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +35 -39
  583. package/src/engine/development/performance/monitor/PeriodicConsolePrinter.d.ts +1 -1
  584. package/src/engine/development/performance/monitor/PeriodicConsolePrinter.d.ts.map +1 -1
  585. package/src/engine/development/performance/monitor/PeriodicConsolePrinter.js +2 -2
  586. package/src/engine/ecs/ASYNC_SYSTEMS_PROPOSAL.md +531 -0
  587. package/src/engine/ecs/EntityManager.d.ts +16 -0
  588. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  589. package/src/engine/ecs/EntityManager.js +81 -0
  590. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  591. package/src/engine/ecs/animation/Animation.js +8 -8
  592. package/src/engine/ecs/async/SystemWorkerHost.d.ts +98 -0
  593. package/src/engine/ecs/async/SystemWorkerHost.d.ts.map +1 -0
  594. package/src/engine/ecs/async/SystemWorkerHost.js +329 -0
  595. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts +80 -0
  596. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts.map +1 -0
  597. package/src/engine/ecs/async/SystemWorkerLoopback.js +143 -0
  598. package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +246 -0
  599. package/src/engine/ecs/async/WorkerSystem.d.ts +173 -0
  600. package/src/engine/ecs/async/WorkerSystem.d.ts.map +1 -0
  601. package/src/engine/ecs/async/WorkerSystem.js +702 -0
  602. package/src/engine/ecs/async/WorkerSystemProtocol.d.ts +62 -0
  603. package/src/engine/ecs/async/WorkerSystemProtocol.d.ts.map +1 -0
  604. package/src/engine/ecs/async/WorkerSystemProtocol.js +150 -0
  605. package/src/engine/ecs/binding/EntityProxyScope.d.ts.map +1 -1
  606. package/src/engine/ecs/binding/EntityProxyScope.js +11 -12
  607. package/src/engine/ecs/components/PropertySet.d.ts.map +1 -1
  608. package/src/engine/ecs/components/PropertySet.js +2 -2
  609. package/src/engine/ecs/components/TagSerializationUpgrader_0_1.d.ts.map +1 -1
  610. package/src/engine/ecs/components/TagSerializationUpgrader_0_1.js +2 -6
  611. package/src/engine/ecs/components/Timer.d.ts +7 -7
  612. package/src/engine/ecs/components/Timer.d.ts.map +1 -1
  613. package/src/engine/ecs/components/Timer.js +18 -18
  614. package/src/engine/ecs/dynamic_actions/DataScope.d.ts.map +1 -1
  615. package/src/engine/ecs/dynamic_actions/DataScope.js +6 -8
  616. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts.map +1 -1
  617. package/src/engine/ecs/evaluation/PointFitnessBinary.js +10 -13
  618. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts.map +1 -1
  619. package/src/engine/ecs/evaluation/PointFitnessConstant.js +5 -9
  620. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts.map +1 -1
  621. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.js +5 -9
  622. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
  623. package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +6 -8
  624. package/src/engine/ecs/fow/FogOfWarSystem.d.ts +2 -2
  625. package/src/engine/ecs/fow/FogOfWarSystem.d.ts.map +1 -1
  626. package/src/engine/ecs/fow/FogOfWarSystem.js +5 -6
  627. package/src/engine/ecs/fow/FogOfWarVisibilityPredicate.d.ts.map +1 -1
  628. package/src/engine/ecs/fow/FogOfWarVisibilityPredicate.js +11 -14
  629. package/src/engine/ecs/fow/serialization/FogOfWarSerializationUpdater_0_1.d.ts.map +1 -1
  630. package/src/engine/ecs/fow/serialization/FogOfWarSerializationUpdater_0_1.js +2 -6
  631. package/src/engine/ecs/gui/position/ViewportPositionSystem.d.ts.map +1 -1
  632. package/src/engine/ecs/gui/position/ViewportPositionSystem.js +5 -6
  633. package/src/engine/ecs/gui/view/LocalizedLabelViewEntity.d.ts.map +1 -1
  634. package/src/engine/ecs/gui/view/LocalizedLabelViewEntity.js +2 -2
  635. package/src/engine/ecs/parent/ChildEntities.d.ts.map +1 -1
  636. package/src/engine/ecs/parent/ChildEntities.js +6 -8
  637. package/src/engine/ecs/parent/FaceEditor.d.ts.map +1 -1
  638. package/src/engine/ecs/parent/FaceEditor.js +42 -41
  639. package/src/engine/ecs/parent/ParentEntity.d.ts.map +1 -1
  640. package/src/engine/ecs/parent/ParentEntity.js +4 -9
  641. package/src/engine/ecs/parent/ParentEntitySystem.d.ts.map +1 -1
  642. package/src/engine/ecs/parent/ParentEntitySystem.js +2 -2
  643. package/src/engine/ecs/sockets/AttachmentSocket.d.ts.map +1 -1
  644. package/src/engine/ecs/sockets/AttachmentSocket.js +12 -14
  645. package/src/engine/ecs/sockets/AttachmentSockets.d.ts.map +1 -1
  646. package/src/engine/ecs/sockets/AttachmentSockets.js +5 -7
  647. package/src/engine/ecs/sockets/BoneAttachmentSocket.d.ts.map +1 -1
  648. package/src/engine/ecs/sockets/BoneAttachmentSocket.js +1 -5
  649. package/src/engine/ecs/speaker/VoiceSystem.d.ts +5 -5
  650. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  651. package/src/engine/ecs/speaker/VoiceSystem.js +42 -45
  652. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter.d.ts.map +1 -1
  653. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter.js +17 -19
  654. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts +11 -0
  655. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -0
  656. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +260 -0
  657. package/src/engine/ecs/system/AbstractContextSystem.d.ts +8 -8
  658. package/src/engine/ecs/system/AbstractContextSystem.d.ts.map +1 -1
  659. package/src/engine/ecs/system/AbstractContextSystem.js +14 -14
  660. package/src/engine/ecs/systems/AnimationSystem.d.ts.map +1 -1
  661. package/src/engine/ecs/systems/AnimationSystem.js +2 -2
  662. package/src/engine/ecs/systems/ScriptSystem.d.ts.map +1 -1
  663. package/src/engine/ecs/systems/ScriptSystem.js +3 -6
  664. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +27 -27
  665. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  666. package/src/engine/ecs/terrain/ecs/Terrain.js +35 -38
  667. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
  668. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +68 -31
  669. package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts.map +1 -1
  670. package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.js +4 -2
  671. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts +5 -5
  672. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
  673. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +6 -7
  674. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts +9 -9
  675. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts.map +1 -1
  676. package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +13 -12
  677. package/src/engine/ecs/terrain/serialization/TerrainSerializationUpgrader_0_1.d.ts.map +1 -1
  678. package/src/engine/ecs/terrain/serialization/TerrainSerializationUpgrader_0_1.js +2 -6
  679. package/src/engine/ecs/terrain/serialization/TerrainSerializationUpgrader_1_2.d.ts.map +1 -1
  680. package/src/engine/ecs/terrain/serialization/TerrainSerializationUpgrader_1_2.js +2 -6
  681. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +44 -3
  682. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  683. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +81 -17
  684. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
  685. package/src/engine/ecs/terrain/util/obtainTerrain.js +2 -0
  686. package/src/engine/ecs/tooltip/TooltipComponentSystem.d.ts +20 -20
  687. package/src/engine/ecs/tooltip/TooltipComponentSystem.d.ts.map +1 -1
  688. package/src/engine/ecs/tooltip/TooltipComponentSystem.js +36 -38
  689. package/src/engine/ecs/transform/TransformSerializationUpgrader_0_1.d.ts.map +1 -1
  690. package/src/engine/ecs/transform/TransformSerializationUpgrader_0_1.js +2 -6
  691. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
  692. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +34 -41
  693. package/src/engine/graphics/camera/CameraShake.d.ts.map +1 -1
  694. package/src/engine/graphics/camera/CameraShake.js +12 -16
  695. package/src/engine/graphics/camera/CameraShakeBehavior.d.ts +2 -2
  696. package/src/engine/graphics/camera/CameraShakeBehavior.d.ts.map +1 -1
  697. package/src/engine/graphics/camera/CameraShakeBehavior.js +3 -4
  698. package/src/engine/graphics/camera/CameraShakeTraumaBehavior.d.ts +2 -2
  699. package/src/engine/graphics/camera/CameraShakeTraumaBehavior.d.ts.map +1 -1
  700. package/src/engine/graphics/camera/CameraShakeTraumaBehavior.js +3 -5
  701. package/src/engine/graphics/composit/CompositLayer.d.ts.map +1 -1
  702. package/src/engine/graphics/composit/CompositLayer.js +6 -6
  703. package/src/engine/graphics/composit/LayerCompositer.d.ts.map +1 -1
  704. package/src/engine/graphics/composit/LayerCompositer.js +17 -19
  705. package/src/engine/graphics/debug/VisualSymbolLine.d.ts.map +1 -1
  706. package/src/engine/graphics/debug/VisualSymbolLine.js +11 -13
  707. package/src/engine/graphics/ecs/animation/AnimationControllerSystem.d.ts.map +1 -1
  708. package/src/engine/graphics/ecs/animation/AnimationControllerSystem.js +2 -5
  709. package/src/engine/graphics/ecs/animation/AnimationRule.d.ts +2 -2
  710. package/src/engine/graphics/ecs/animation/AnimationRule.d.ts.map +1 -1
  711. package/src/engine/graphics/ecs/animation/AnimationRule.js +3 -2
  712. package/src/engine/graphics/ecs/animation/animator/AnimationClip.d.ts.map +1 -1
  713. package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +20 -22
  714. package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.d.ts.map +1 -1
  715. package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +23 -25
  716. package/src/engine/graphics/ecs/animation/animator/AnimationGraphSystem.d.ts +4 -4
  717. package/src/engine/graphics/ecs/animation/animator/AnimationGraphSystem.d.ts.map +1 -1
  718. package/src/engine/graphics/ecs/animation/animator/AnimationGraphSystem.js +32 -33
  719. package/src/engine/graphics/ecs/animation/animator/AnimationNotification.d.ts.map +1 -1
  720. package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +10 -12
  721. package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.d.ts.map +1 -1
  722. package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +10 -12
  723. package/src/engine/graphics/ecs/animation/animator/blending/BlendSpace.d.ts +1 -1
  724. package/src/engine/graphics/ecs/animation/animator/blending/BlendSpace.d.ts.map +1 -1
  725. package/src/engine/graphics/ecs/animation/animator/blending/BlendSpace.js +10 -12
  726. package/src/engine/graphics/ecs/animation/animator/blending/BlendSpaceDefinition.d.ts.map +1 -1
  727. package/src/engine/graphics/ecs/animation/animator/blending/BlendSpaceDefinition.js +5 -7
  728. package/src/engine/graphics/ecs/animation/animator/blending/BlendSpacePoint.d.ts.map +1 -1
  729. package/src/engine/graphics/ecs/animation/animator/blending/BlendSpacePoint.js +10 -12
  730. package/src/engine/graphics/ecs/animation/animator/blending/BlendState.d.ts.map +1 -1
  731. package/src/engine/graphics/ecs/animation/animator/blending/BlendState.js +5 -7
  732. package/src/engine/graphics/ecs/animation/animator/blending/BlendStateDatabase.d.ts.map +1 -1
  733. package/src/engine/graphics/ecs/animation/animator/blending/BlendStateDatabase.js +18 -21
  734. package/src/engine/graphics/ecs/animation/animator/graph/AnimationGraph.d.ts.map +1 -1
  735. package/src/engine/graphics/ecs/animation/animator/graph/AnimationGraph.js +75 -77
  736. package/src/engine/graphics/ecs/animation/animator/graph/AnimationState.d.ts.map +1 -1
  737. package/src/engine/graphics/ecs/animation/animator/graph/AnimationState.js +35 -38
  738. package/src/engine/graphics/ecs/animation/animator/graph/AnimationTransition.d.ts.map +1 -1
  739. package/src/engine/graphics/ecs/animation/animator/graph/AnimationTransition.js +30 -32
  740. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.d.ts.map +1 -1
  741. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +31 -33
  742. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
  743. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +20 -23
  744. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  745. package/src/engine/graphics/ecs/camera/Camera.js +45 -47
  746. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +1 -1
  747. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
  748. package/src/engine/graphics/ecs/camera/CameraSystem.js +8 -9
  749. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationUpgrader_0_1.d.ts.map +1 -1
  750. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationUpgrader_0_1.js +37 -41
  751. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  752. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +8 -10
  753. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSerializationUpgrader_0_1.d.ts.map +1 -1
  754. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSerializationUpgrader_0_1.js +2 -6
  755. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  756. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +5 -10
  757. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraLanderSystem.d.ts.map +1 -1
  758. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraLanderSystem.js +20 -25
  759. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.d.ts.map +1 -1
  760. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +2 -2
  761. package/src/engine/graphics/ecs/highlight/HighlightSerializationUpgrader_0_1.d.ts.map +1 -1
  762. package/src/engine/graphics/ecs/highlight/HighlightSerializationUpgrader_0_1.js +2 -6
  763. package/src/engine/graphics/ecs/highlight/plugin/OutlineRenderPlugin.d.ts.map +1 -1
  764. package/src/engine/graphics/ecs/highlight/plugin/OutlineRenderPlugin.js +23 -25
  765. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.d.ts.map +1 -1
  766. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderElement.js +13 -16
  767. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.d.ts.map +1 -1
  768. package/src/engine/graphics/ecs/highlight/renderer/HighlightRenderGroup.js +5 -7
  769. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts +12 -12
  770. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.d.ts.map +1 -1
  771. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +54 -57
  772. package/src/engine/graphics/ecs/highlight/system/HighlightSystemBase.js +205 -205
  773. package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
  774. package/src/engine/graphics/ecs/light/Light.js +59 -65
  775. package/src/engine/graphics/ecs/light/LightSystem.d.ts +16 -16
  776. package/src/engine/graphics/ecs/light/LightSystem.d.ts.map +1 -1
  777. package/src/engine/graphics/ecs/light/LightSystem.js +23 -25
  778. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts.map +1 -1
  779. package/src/engine/graphics/ecs/light/binding/LightBinding.js +13 -14
  780. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts.map +1 -1
  781. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +11 -15
  782. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts.map +1 -1
  783. package/src/engine/graphics/ecs/light/shadow/ShadowMap.js +5 -9
  784. package/src/engine/graphics/ecs/light/three/ThreeLightCache.d.ts.map +1 -1
  785. package/src/engine/graphics/ecs/light/three/ThreeLightCache.js +20 -22
  786. package/src/engine/graphics/ecs/mesh/Mesh.d.ts.map +1 -1
  787. package/src/engine/graphics/ecs/mesh/Mesh.js +35 -37
  788. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts +15 -15
  789. package/src/engine/graphics/ecs/mesh/MeshSystem.d.ts.map +1 -1
  790. package/src/engine/graphics/ecs/mesh/MeshSystem.js +21 -22
  791. package/src/engine/graphics/ecs/mesh/skeleton/BoneMapping.d.ts.map +1 -1
  792. package/src/engine/graphics/ecs/mesh/skeleton/BoneMapping.js +1 -3
  793. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts.map +1 -1
  794. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +51 -52
  795. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +6 -6
  796. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  797. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +37 -37
  798. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationControllerSystem.d.ts +1 -1
  799. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationControllerSystem.d.ts.map +1 -1
  800. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationControllerSystem.js +9 -11
  801. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts.map +1 -1
  802. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js +1 -5
  803. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts +10 -10
  804. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts.map +1 -1
  805. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.js +22 -22
  806. package/src/engine/graphics/ecs/mesh-v2/render/SGThreeObjectCache.d.ts.map +1 -1
  807. package/src/engine/graphics/ecs/mesh-v2/render/SGThreeObjectCache.js +6 -8
  808. package/src/engine/graphics/ecs/mesh-v2/render/ShadedGeometryRendererContext.d.ts.map +1 -1
  809. package/src/engine/graphics/ecs/mesh-v2/render/ShadedGeometryRendererContext.js +8 -10
  810. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts.map +1 -1
  811. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js +12 -15
  812. package/src/engine/graphics/ecs/mesh-v2/render/adapters/GenericRendererAdapter.d.ts.map +1 -1
  813. package/src/engine/graphics/ecs/mesh-v2/render/adapters/GenericRendererAdapter.js +6 -10
  814. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts.map +1 -1
  815. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.js +12 -15
  816. package/src/engine/graphics/ecs/path/PathDisplay.d.ts.map +1 -1
  817. package/src/engine/graphics/ecs/path/PathDisplay.js +5 -7
  818. package/src/engine/graphics/ecs/path/PathDisplaySpec.d.ts.map +1 -1
  819. package/src/engine/graphics/ecs/path/PathDisplaySpec.js +10 -12
  820. package/src/engine/graphics/ecs/path/PathDisplaySystem.d.ts +6 -6
  821. package/src/engine/graphics/ecs/path/PathDisplaySystem.d.ts.map +1 -1
  822. package/src/engine/graphics/ecs/path/PathDisplaySystem.js +12 -17
  823. package/src/engine/graphics/ecs/path/entity/EntityPath.d.ts.map +1 -1
  824. package/src/engine/graphics/ecs/path/entity/EntityPath.js +15 -17
  825. package/src/engine/graphics/ecs/path/entity/EntityPathMarker.d.ts.map +1 -1
  826. package/src/engine/graphics/ecs/path/entity/EntityPathMarker.js +15 -17
  827. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.d.ts.map +1 -1
  828. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.js +15 -17
  829. package/src/engine/graphics/ecs/path/entity/EntityPathStyle.d.ts.map +1 -1
  830. package/src/engine/graphics/ecs/path/entity/EntityPathStyle.js +20 -23
  831. package/src/engine/graphics/ecs/path/highlight/PathDisplayHighlightSystem.d.ts.map +1 -1
  832. package/src/engine/graphics/ecs/path/highlight/PathDisplayHighlightSystem.js +1 -5
  833. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.d.ts.map +1 -1
  834. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +15 -17
  835. package/src/engine/graphics/ecs/path/ribbon/RibbonPathStyle.d.ts.map +1 -1
  836. package/src/engine/graphics/ecs/path/ribbon/RibbonPathStyle.js +15 -17
  837. package/src/engine/graphics/ecs/path/tube/MatcapMaterialDefinition.d.ts.map +1 -1
  838. package/src/engine/graphics/ecs/path/tube/MatcapMaterialDefinition.js +5 -7
  839. package/src/engine/graphics/ecs/path/tube/StandardMaterialDefinition.d.ts.map +1 -1
  840. package/src/engine/graphics/ecs/path/tube/StandardMaterialDefinition.js +2 -4
  841. package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts.map +1 -1
  842. package/src/engine/graphics/ecs/path/tube/TubePathStyle.js +84 -86
  843. package/src/engine/graphics/ecs/path/tube/build/StreamGeometryBuilder.d.ts.map +1 -1
  844. package/src/engine/graphics/ecs/path/tube/build/StreamGeometryBuilder.js +37 -36
  845. package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.d.ts.map +1 -1
  846. package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +23 -25
  847. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  848. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +2 -3
  849. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts +5 -5
  850. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  851. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +6 -9
  852. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts +4 -4
  853. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
  854. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +5 -5
  855. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_0_1.d.ts.map +1 -1
  856. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_0_1.js +2 -6
  857. package/src/engine/graphics/ecs/water/WaterSystem.d.ts +1 -1
  858. package/src/engine/graphics/ecs/water/WaterSystem.d.ts.map +1 -1
  859. package/src/engine/graphics/ecs/water/WaterSystem.js +13 -15
  860. package/src/engine/graphics/geometry/MikkT/MikkTSpace.d.ts.map +1 -1
  861. package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +97 -95
  862. package/src/engine/graphics/geometry/MikkT/SSubGroup.d.ts.map +1 -1
  863. package/src/engine/graphics/geometry/MikkT/SSubGroup.js +10 -12
  864. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts.map +1 -1
  865. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +103 -110
  866. package/src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.d.ts +18 -3
  867. package/src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.d.ts.map +1 -1
  868. package/src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.js +135 -85
  869. package/src/engine/graphics/geometry/optimization/merge/merge_geometry_hierarchy.d.ts.map +1 -1
  870. package/src/engine/graphics/geometry/optimization/merge/merge_geometry_hierarchy.js +3 -5
  871. package/src/engine/graphics/geometry/ribbon/Quad.d.ts +2 -2
  872. package/src/engine/graphics/geometry/ribbon/Quad.d.ts.map +1 -1
  873. package/src/engine/graphics/geometry/ribbon/Quad.js +17 -17
  874. package/src/engine/graphics/material/manager/ManagedMaterial.d.ts +6 -6
  875. package/src/engine/graphics/material/manager/ManagedMaterial.d.ts.map +1 -1
  876. package/src/engine/graphics/material/manager/ManagedMaterial.js +20 -20
  877. package/src/engine/graphics/material/optimization/MaterialDescriptor.d.ts.map +1 -1
  878. package/src/engine/graphics/material/optimization/MaterialDescriptor.js +11 -14
  879. package/src/engine/graphics/material/optimization/MaterialOptimizationContext.d.ts.map +1 -1
  880. package/src/engine/graphics/material/optimization/MaterialOptimizationContext.js +20 -23
  881. package/src/engine/graphics/material/optimization/UvContext.d.ts.map +1 -1
  882. package/src/engine/graphics/material/optimization/UvContext.js +10 -12
  883. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts.map +1 -1
  884. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +23 -23
  885. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts.map +1 -1
  886. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.js +5 -7
  887. package/src/engine/graphics/particles/node-based/rendering/billboard/BillboardParticleRenderer.d.ts +11 -11
  888. package/src/engine/graphics/particles/node-based/rendering/billboard/BillboardParticleRenderer.d.ts.map +1 -1
  889. package/src/engine/graphics/particles/node-based/rendering/billboard/BillboardParticleRenderer.js +21 -23
  890. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts.map +1 -1
  891. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.js +17 -19
  892. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts.map +1 -1
  893. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.js +25 -27
  894. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts.map +1 -1
  895. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.js +12 -16
  896. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts.map +1 -1
  897. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.js +64 -67
  898. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts +3 -0
  899. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts.map +1 -1
  900. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.js +36 -39
  901. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  902. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.js +2 -6
  903. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts.map +1 -1
  904. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.js +5 -7
  905. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +10 -10
  906. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +1 -1
  907. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +12 -12
  908. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts.map +1 -1
  909. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.js +35 -37
  910. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts.map +1 -1
  911. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +1 -5
  912. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts.map +1 -1
  913. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.js +11 -12
  914. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +1 -1
  915. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +199 -201
  916. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +11 -11
  917. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts.map +1 -1
  918. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +13 -13
  919. package/src/engine/graphics/particles/particular/group/ParticleGroup.d.ts +6 -6
  920. package/src/engine/graphics/particles/particular/group/ParticleGroup.d.ts.map +1 -1
  921. package/src/engine/graphics/particles/particular/group/ParticleGroup.js +33 -34
  922. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts.map +1 -1
  923. package/src/engine/graphics/particles/particular/group/ParticleSpecification.js +2 -8
  924. package/src/engine/graphics/render/Lines.d.ts.map +1 -1
  925. package/src/engine/graphics/render/Lines.js +2 -2
  926. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +1 -1
  927. package/src/engine/graphics/render/buffer/FrameBufferManager.js +20 -22
  928. package/src/engine/graphics/render/buffer/simple-fx/DepthLimitedBlur.d.ts +2 -2
  929. package/src/engine/graphics/render/buffer/simple-fx/DepthLimitedBlur.d.ts.map +1 -1
  930. package/src/engine/graphics/render/buffer/simple-fx/DepthLimitedBlur.js +16 -19
  931. package/src/engine/graphics/render/buffer/simple-fx/SimplePostProcessEffect.d.ts.map +1 -1
  932. package/src/engine/graphics/render/buffer/simple-fx/SimplePostProcessEffect.js +5 -8
  933. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts +2 -2
  934. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.d.ts.map +1 -1
  935. package/src/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +37 -38
  936. package/src/engine/graphics/render/buffer/slot/ProgramSlotValue.d.ts +5 -5
  937. package/src/engine/graphics/render/buffer/slot/ProgramSlotValue.d.ts.map +1 -1
  938. package/src/engine/graphics/render/buffer/slot/ProgramSlotValue.js +8 -6
  939. package/src/engine/graphics/render/buffer/slot/ProgramValueSlotDefinition.d.ts +5 -5
  940. package/src/engine/graphics/render/buffer/slot/ProgramValueSlotDefinition.d.ts.map +1 -1
  941. package/src/engine/graphics/render/buffer/slot/ProgramValueSlotDefinition.js +6 -6
  942. package/src/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameterSet.d.ts.map +1 -1
  943. package/src/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameterSet.js +11 -13
  944. package/src/engine/graphics/render/forward_plus/LightManager.d.ts +6 -6
  945. package/src/engine/graphics/render/forward_plus/LightManager.d.ts.map +1 -1
  946. package/src/engine/graphics/render/forward_plus/LightManager.js +15 -18
  947. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts +5 -5
  948. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts.map +1 -1
  949. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.js +7 -8
  950. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +1 -1
  951. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +1 -1
  952. package/src/engine/graphics/render/forward_plus/model/Decal.js +22 -22
  953. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts.map +1 -1
  954. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.js +8 -8
  955. package/src/engine/graphics/render/layers/RenderLayerManager.d.ts.map +1 -1
  956. package/src/engine/graphics/render/layers/RenderLayerManager.js +10 -12
  957. package/src/engine/graphics/render/layers/RenderLayerManagerState.d.ts.map +1 -1
  958. package/src/engine/graphics/render/layers/RenderLayerManagerState.js +5 -9
  959. package/src/engine/graphics/render/layers/RenderLayerState.d.ts.map +1 -1
  960. package/src/engine/graphics/render/layers/RenderLayerState.js +5 -7
  961. package/src/engine/graphics/render/utils/ThreeBypassRenderer.d.ts.map +1 -1
  962. package/src/engine/graphics/render/utils/ThreeBypassRenderer.js +6 -9
  963. package/src/engine/graphics/render/view/CameraView.d.ts.map +1 -1
  964. package/src/engine/graphics/render/view/CameraView.js +56 -59
  965. package/src/engine/graphics/render/view/CameraViewManager.d.ts.map +1 -1
  966. package/src/engine/graphics/render/view/CameraViewManager.js +18 -20
  967. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +6 -6
  968. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +1 -1
  969. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.js +40 -39
  970. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +1 -1
  971. package/src/engine/graphics/render/visibility/VisibilityComputer.js +19 -22
  972. package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts +5 -5
  973. package/src/engine/graphics/render/visibility/VisibilityFilter.d.ts.map +1 -1
  974. package/src/engine/graphics/render/visibility/VisibilityFilter.js +6 -6
  975. package/src/engine/graphics/render/visibility/hiz/buffer/HierarchicalZBuffer.d.ts.map +1 -1
  976. package/src/engine/graphics/render/visibility/hiz/buffer/HierarchicalZBuffer.js +40 -43
  977. package/src/engine/graphics/render/visibility/hiz/query/BatchOcclusionQuery.d.ts +1 -1
  978. package/src/engine/graphics/render/visibility/hiz/query/BatchOcclusionQuery.d.ts.map +1 -1
  979. package/src/engine/graphics/render/visibility/hiz/query/BatchOcclusionQuery.js +2 -2
  980. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.d.ts.map +1 -1
  981. package/src/engine/graphics/sh3/lpv/WebGLCubeProbeRenderer.js +7 -9
  982. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.d.ts.map +1 -1
  983. package/src/engine/graphics/sh3/path_tracer/BufferedGeometryBVH.js +24 -28
  984. package/src/engine/graphics/shaders/TerrainShader.js +5 -18
  985. package/src/engine/graphics/shadows/ShadowMapRenderer.d.ts.map +1 -1
  986. package/src/engine/graphics/shadows/ShadowMapRenderer.js +11 -15
  987. package/src/engine/graphics/texture/AttributeDataTexture.d.ts +11 -11
  988. package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
  989. package/src/engine/graphics/texture/AttributeDataTexture.js +14 -14
  990. package/src/engine/graphics/texture/TextureBackedMemoryRegion.d.ts +6 -6
  991. package/src/engine/graphics/texture/TextureBackedMemoryRegion.d.ts.map +1 -1
  992. package/src/engine/graphics/texture/TextureBackedMemoryRegion.js +33 -32
  993. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.d.ts.map +1 -1
  994. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.js +12 -12
  995. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
  996. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +17 -20
  997. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +1 -1
  998. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
  999. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +14 -14
  1000. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +10 -10
  1001. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  1002. package/src/engine/graphics/texture/atlas/TextureAtlas.js +13 -14
  1003. package/src/engine/graphics/texture/atlas/gpu/WebGLTextureAtlas.d.ts.map +1 -1
  1004. package/src/engine/graphics/texture/atlas/gpu/WebGLTextureAtlas.js +49 -49
  1005. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +5 -5
  1006. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  1007. package/src/engine/graphics/texture/sampler/Sampler2D.js +6 -6
  1008. package/src/engine/graphics/texture/sampler/sampler2d_linear_f16_to_srgb_u8.d.ts +16 -0
  1009. package/src/engine/graphics/texture/sampler/sampler2d_linear_f16_to_srgb_u8.d.ts.map +1 -0
  1010. package/src/engine/graphics/texture/sampler/sampler2d_linear_f16_to_srgb_u8.js +54 -0
  1011. package/src/engine/graphics/texture/sampler/sampler2d_srgb_u8_to_linear_f16.d.ts +22 -0
  1012. package/src/engine/graphics/texture/sampler/sampler2d_srgb_u8_to_linear_f16.d.ts.map +1 -0
  1013. package/src/engine/graphics/texture/sampler/sampler2d_srgb_u8_to_linear_f16.js +68 -0
  1014. package/src/engine/graphics/trail/tube/TubeX.d.ts +6 -6
  1015. package/src/engine/graphics/trail/tube/TubeX.d.ts.map +1 -1
  1016. package/src/engine/graphics/trail/tube/TubeX.js +3 -3
  1017. package/src/engine/graphics/trail/x/RibbonX.d.ts.map +1 -1
  1018. package/src/engine/graphics/trail/x/RibbonX.js +36 -39
  1019. package/src/engine/grid/area/AreaTrigger.d.ts +1 -1
  1020. package/src/engine/grid/area/AreaTrigger.d.ts.map +1 -1
  1021. package/src/engine/grid/area/AreaTrigger.js +8 -7
  1022. package/src/engine/grid/area/TriggerAction.d.ts.map +1 -1
  1023. package/src/engine/grid/area/TriggerAction.js +2 -4
  1024. package/src/engine/grid/grid2transform/GridPosition2TransformSerializationUpgrader_0_1.d.ts.map +1 -1
  1025. package/src/engine/grid/grid2transform/GridPosition2TransformSerializationUpgrader_0_1.js +3 -6
  1026. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts +3 -3
  1027. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts.map +1 -1
  1028. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.js +6 -9
  1029. package/src/engine/grid/position/GridPositionSerializationUpdater_0_1.d.ts.map +1 -1
  1030. package/src/engine/grid/position/GridPositionSerializationUpdater_0_1.js +2 -6
  1031. package/src/engine/grid/position/GridPositionSystem.d.ts.map +1 -1
  1032. package/src/engine/grid/position/GridPositionSystem.js +7 -11
  1033. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
  1034. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +32 -40
  1035. package/src/engine/input/devices/PointerDevice.d.ts +8 -0
  1036. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  1037. package/src/engine/input/devices/PointerDevice.js +10 -4
  1038. package/src/engine/input/ecs/systems/InputControllerSystem.d.ts.map +1 -1
  1039. package/src/engine/input/ecs/systems/InputControllerSystem.js +9 -13
  1040. package/src/engine/input/ecs/systems/InputSystem.d.ts +1 -1
  1041. package/src/engine/input/ecs/systems/InputSystem.d.ts.map +1 -1
  1042. package/src/engine/input/ecs/systems/InputSystem.js +8 -8
  1043. package/src/engine/intelligence/behavior/SelectorBehavior.d.ts.map +1 -1
  1044. package/src/engine/intelligence/behavior/SelectorBehavior.js +13 -17
  1045. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts +10 -10
  1046. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts.map +1 -1
  1047. package/src/engine/intelligence/behavior/composite/ParallelBehavior.js +12 -11
  1048. package/src/engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.d.ts.map +1 -1
  1049. package/src/engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.js +2 -6
  1050. package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts.map +1 -1
  1051. package/src/engine/intelligence/behavior/composite/SequenceBehavior.js +19 -22
  1052. package/src/engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.d.ts.map +1 -1
  1053. package/src/engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js +2 -6
  1054. package/src/engine/intelligence/behavior/decorator/AbstractDecoratorBehavior.d.ts.map +1 -1
  1055. package/src/engine/intelligence/behavior/decorator/AbstractDecoratorBehavior.js +6 -10
  1056. package/src/engine/intelligence/behavior/decorator/InvertStatusBehaviorSerializationAdapter.d.ts.map +1 -1
  1057. package/src/engine/intelligence/behavior/decorator/InvertStatusBehaviorSerializationAdapter.js +2 -6
  1058. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts +5 -5
  1059. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts.map +1 -1
  1060. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.js +7 -7
  1061. package/src/engine/intelligence/behavior/decorator/RepeatBehaviorSerializationAdapter.d.ts.map +1 -1
  1062. package/src/engine/intelligence/behavior/decorator/RepeatBehaviorSerializationAdapter.js +2 -6
  1063. package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.d.ts +2 -2
  1064. package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.d.ts.map +1 -1
  1065. package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.js +7 -7
  1066. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts.map +1 -1
  1067. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.js +3 -5
  1068. package/src/engine/intelligence/behavior/primitive/PromiseBehavior.d.ts +2 -2
  1069. package/src/engine/intelligence/behavior/primitive/PromiseBehavior.d.ts.map +1 -1
  1070. package/src/engine/intelligence/behavior/primitive/PromiseBehavior.js +3 -4
  1071. package/src/engine/intelligence/behavior/util/RotationBehavior.d.ts.map +1 -1
  1072. package/src/engine/intelligence/behavior/util/RotationBehavior.js +8 -13
  1073. package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
  1074. package/src/engine/intelligence/blackboard/Blackboard.js +14 -14
  1075. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.d.ts.map +1 -1
  1076. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.js +52 -55
  1077. package/src/engine/intelligence/blackboard/BlackboardStack.d.ts.map +1 -1
  1078. package/src/engine/intelligence/blackboard/BlackboardStack.js +12 -16
  1079. package/src/engine/intelligence/blackboard/BlackboardValue.d.ts.map +1 -1
  1080. package/src/engine/intelligence/blackboard/BlackboardValue.js +6 -5
  1081. package/src/engine/intelligence/controller/graph/StateGraph.d.ts +1 -1
  1082. package/src/engine/intelligence/controller/graph/StateGraph.d.ts.map +1 -1
  1083. package/src/engine/intelligence/controller/graph/StateGraph.js +2 -2
  1084. package/src/engine/intelligence/controller/graph/StateGraphDescription.js +6 -8
  1085. package/src/engine/intelligence/controller/graph/StateGraphSystem.d.ts.map +1 -1
  1086. package/src/engine/intelligence/controller/graph/StateGraphSystem.js +1 -5
  1087. package/src/engine/intelligence/mcts/MoveEdge.d.ts.map +1 -1
  1088. package/src/engine/intelligence/mcts/MoveEdge.js +5 -8
  1089. package/src/engine/intelligence/resource/ResourceAllocationBid.d.ts +5 -5
  1090. package/src/engine/intelligence/resource/ResourceAllocationBid.d.ts.map +1 -1
  1091. package/src/engine/intelligence/resource/ResourceAllocationBid.js +6 -6
  1092. package/src/engine/interpolation/InterpolationLog.d.ts.map +1 -1
  1093. package/src/engine/interpolation/InterpolationLog.js +564 -583
  1094. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  1095. package/src/engine/interpolation/InterpolationSystem.js +232 -233
  1096. package/src/engine/knowledge/database/StaticKnowledgeDataTableDescriptor.d.ts.map +1 -1
  1097. package/src/engine/knowledge/database/StaticKnowledgeDataTableDescriptor.js +17 -20
  1098. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts +6 -6
  1099. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts.map +1 -1
  1100. package/src/engine/logging/elastic/ElasticSearchLogger.js +31 -32
  1101. package/src/engine/metrics/ProxyMetricsGateway.d.ts.map +1 -1
  1102. package/src/engine/metrics/ProxyMetricsGateway.js +5 -9
  1103. package/src/engine/navigation/ecs/components/Path.d.ts.map +1 -1
  1104. package/src/engine/navigation/ecs/components/Path.js +30 -32
  1105. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_0_1.d.ts.map +1 -1
  1106. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_0_1.js +2 -6
  1107. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_1_2.d.ts.map +1 -1
  1108. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_1_2.js +2 -6
  1109. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_2_3.d.ts.map +1 -1
  1110. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_2_3.js +34 -38
  1111. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_0_1.d.ts.map +1 -1
  1112. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_0_1.js +2 -6
  1113. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_1_2.d.ts.map +1 -1
  1114. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_1_2.js +2 -6
  1115. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  1116. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +12 -17
  1117. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  1118. package/src/engine/network/NetworkSession.js +2037 -2036
  1119. package/src/engine/network/PriorityFetch.d.ts +6 -6
  1120. package/src/engine/network/PriorityFetch.d.ts.map +1 -1
  1121. package/src/engine/network/PriorityFetch.js +14 -14
  1122. package/src/engine/network/diagnostics/BandwidthMeter.d.ts.map +1 -1
  1123. package/src/engine/network/diagnostics/BandwidthMeter.js +150 -155
  1124. package/src/engine/network/diagnostics/ReplayLog.d.ts +2 -2
  1125. package/src/engine/network/diagnostics/ReplayLog.d.ts.map +1 -1
  1126. package/src/engine/network/diagnostics/ReplayLog.js +132 -137
  1127. package/src/engine/network/diagnostics/SyncTest.d.ts.map +1 -1
  1128. package/src/engine/network/diagnostics/SyncTest.js +146 -151
  1129. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  1130. package/src/engine/network/orchestrator/NetworkPeer.js +1202 -1209
  1131. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +4 -4
  1132. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
  1133. package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +8 -10
  1134. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +7 -7
  1135. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  1136. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +643 -654
  1137. package/src/engine/network/replication/Replicator.d.ts +24 -24
  1138. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  1139. package/src/engine/network/replication/Replicator.js +405 -410
  1140. package/src/engine/network/sim/ReplicatedComponentRegistry.d.ts.map +1 -1
  1141. package/src/engine/network/sim/ReplicatedComponentRegistry.js +133 -140
  1142. package/src/engine/network/sim/RewindEngine.d.ts.map +1 -1
  1143. package/src/engine/network/sim/RewindEngine.js +179 -182
  1144. package/src/engine/network/sim/SimActionExecutor.d.ts +34 -34
  1145. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  1146. package/src/engine/network/sim/SimActionExecutor.js +305 -306
  1147. package/src/engine/network/sim/SimActionRegistry.d.ts.map +1 -1
  1148. package/src/engine/network/sim/SimActionRegistry.js +121 -128
  1149. package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
  1150. package/src/engine/network/sim/SmoothingState.js +220 -222
  1151. package/src/engine/network/sim/SpeculationLog.d.ts.map +1 -1
  1152. package/src/engine/network/sim/SpeculationLog.js +79 -84
  1153. package/src/engine/network/state/Baseline.d.ts.map +1 -1
  1154. package/src/engine/network/state/Baseline.js +78 -83
  1155. package/src/engine/network/state/ChangedEntitySet.d.ts.map +1 -1
  1156. package/src/engine/network/state/ChangedEntitySet.js +253 -256
  1157. package/src/engine/network/state/MutationLedger.d.ts.map +1 -1
  1158. package/src/engine/network/state/MutationLedger.js +179 -182
  1159. package/src/engine/network/state/ReplicationSlotTable.d.ts.map +1 -1
  1160. package/src/engine/network/state/ReplicationSlotTable.js +206 -211
  1161. package/src/engine/network/time/AdaptiveRenderDelay.d.ts.map +1 -1
  1162. package/src/engine/network/time/AdaptiveRenderDelay.js +250 -258
  1163. package/src/engine/network/time/JitterBuffer.d.ts.map +1 -1
  1164. package/src/engine/network/time/JitterBuffer.js +113 -116
  1165. package/src/engine/network/time/TimeSync.d.ts.map +1 -1
  1166. package/src/engine/network/time/TimeSync.js +145 -152
  1167. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  1168. package/src/engine/network/transport/LoopbackTransport.js +165 -173
  1169. package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
  1170. package/src/engine/network/transport/ReliableCommandPipeline.js +315 -320
  1171. package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
  1172. package/src/engine/network/transport/adapters/SimulatedTransport.js +235 -241
  1173. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  1174. package/src/engine/network/transport/adapters/WebSocketTransport.js +154 -154
  1175. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  1176. package/src/engine/network/transport/adapters/WebTransportTransport.js +195 -199
  1177. package/src/engine/network/transport/fragments/FragmentAssembler.d.ts.map +1 -1
  1178. package/src/engine/network/transport/fragments/FragmentAssembler.js +286 -291
  1179. package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +1 -1
  1180. package/src/engine/network/transport/fragments/FragmentRetention.js +191 -194
  1181. package/src/engine/physics/body/BodyStorage.d.ts +2 -2
  1182. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
  1183. package/src/engine/physics/body/BodyStorage.js +406 -406
  1184. package/src/engine/physics/body/SolverBodyState.d.ts +8 -8
  1185. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  1186. package/src/engine/physics/body/SolverBodyState.js +10 -10
  1187. package/src/engine/physics/broadphase/PairList.d.ts +1 -1
  1188. package/src/engine/physics/broadphase/PairList.d.ts.map +1 -1
  1189. package/src/engine/physics/broadphase/PairList.js +98 -97
  1190. package/src/engine/physics/contact/ManifoldStore.d.ts +2 -2
  1191. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  1192. package/src/engine/physics/contact/ManifoldStore.js +3 -4
  1193. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +2 -2
  1194. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -1
  1195. package/src/engine/physics/ecs/ColliderObserverSystem.js +102 -103
  1196. package/src/engine/physics/ecs/PhysicsSystem.d.ts +2 -2
  1197. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  1198. package/src/engine/physics/ecs/PhysicsSystem.js +248 -249
  1199. package/src/engine/physics/events/ContactEventBuffer.d.ts +1 -1
  1200. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
  1201. package/src/engine/physics/events/ContactEventBuffer.js +2 -1
  1202. package/src/engine/physics/fluid/FluidField.d.ts +54 -0
  1203. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  1204. package/src/engine/physics/fluid/FluidField.js +198 -15
  1205. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  1206. package/src/engine/physics/fluid/FluidSimulator.js +14 -4
  1207. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  1208. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +0 -45
  1209. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  1210. package/src/engine/physics/fluid/ecs/FluidSystem.js +8 -144
  1211. package/src/engine/physics/fluid/ecs/FluidWorkerCore.d.ts +43 -0
  1212. package/src/engine/physics/fluid/ecs/FluidWorkerCore.d.ts.map +1 -0
  1213. package/src/engine/physics/fluid/ecs/FluidWorkerCore.js +123 -0
  1214. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +119 -0
  1215. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts.map +1 -0
  1216. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +395 -0
  1217. package/src/engine/physics/fluid/ecs/fluid.worker.d.ts +2 -0
  1218. package/src/engine/physics/fluid/ecs/fluid.worker.d.ts.map +1 -0
  1219. package/src/engine/physics/fluid/ecs/fluid.worker.js +12 -0
  1220. package/src/engine/physics/fluid/ecs/fluid_build_world_to_grid.d.ts +20 -0
  1221. package/src/engine/physics/fluid/ecs/fluid_build_world_to_grid.d.ts.map +1 -0
  1222. package/src/engine/physics/fluid/ecs/fluid_build_world_to_grid.js +32 -0
  1223. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.d.ts +22 -0
  1224. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.d.ts.map +1 -0
  1225. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.js +47 -0
  1226. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts +28 -0
  1227. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -0
  1228. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +85 -0
  1229. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts +11 -0
  1230. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts.map +1 -0
  1231. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.js +16 -0
  1232. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.d.ts +51 -0
  1233. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.d.ts.map +1 -0
  1234. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.js +111 -0
  1235. package/src/engine/physics/fluid/ecs/makeFluidWorker.d.ts +17 -0
  1236. package/src/engine/physics/fluid/ecs/makeFluidWorker.d.ts.map +1 -0
  1237. package/src/engine/physics/fluid/ecs/makeFluidWorker.js +18 -0
  1238. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  1239. package/src/engine/physics/island/IslandBuilder.js +84 -86
  1240. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
  1241. package/src/engine/physics/mls-mpm/MLS_MPM.js +24 -26
  1242. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  1243. package/src/engine/physics/queries/PhysicsSurfacePoint.js +98 -100
  1244. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +6 -6
  1245. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  1246. package/src/engine/physics/vehicle/RaycastVehicle.js +357 -344
  1247. package/src/engine/plugin/PluginReferenceContext.d.ts +12 -12
  1248. package/src/engine/plugin/PluginReferenceContext.d.ts.map +1 -1
  1249. package/src/engine/plugin/PluginReferenceContext.js +24 -25
  1250. package/src/engine/scene/Scene.d.ts +5 -5
  1251. package/src/engine/scene/Scene.d.ts.map +1 -1
  1252. package/src/engine/scene/Scene.js +24 -23
  1253. package/src/engine/scene/SceneManager.d.ts +5 -5
  1254. package/src/engine/scene/SceneManager.d.ts.map +1 -1
  1255. package/src/engine/scene/SceneManager.js +13 -14
  1256. package/src/engine/sound/SoundEngine.d.ts +2 -2
  1257. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  1258. package/src/engine/sound/SoundEngine.js +7 -8
  1259. package/src/engine/sound/asset/SoundAssetPlaybackSpec.d.ts.map +1 -1
  1260. package/src/engine/sound/asset/SoundAssetPlaybackSpec.js +16 -20
  1261. package/src/engine/sound/ecs/SoundController.d.ts.map +1 -1
  1262. package/src/engine/sound/ecs/SoundController.js +37 -33
  1263. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  1264. package/src/engine/sound/ecs/SoundControllerSystem.js +5 -11
  1265. package/src/engine/sound/ecs/SoundListener.d.ts.map +1 -1
  1266. package/src/engine/sound/ecs/SoundListener.js +4 -6
  1267. package/src/engine/sound/ecs/SoundListenerSystem.d.ts +6 -6
  1268. package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
  1269. package/src/engine/sound/ecs/SoundListenerSystem.js +22 -23
  1270. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +10 -4
  1271. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  1272. package/src/engine/sound/ecs/audio/AudioEmitter.js +131 -122
  1273. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts +34 -0
  1274. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts.map +1 -0
  1275. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.js +68 -0
  1276. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
  1277. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  1278. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +314 -316
  1279. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +1 -1
  1280. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +31 -1
  1281. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  1282. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_0_1.js +2 -6
  1283. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
  1284. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_1_2.js +2 -6
  1285. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +5 -5
  1286. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
  1287. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +159 -159
  1288. package/src/engine/sound/material/concrete/RandomSoundMaterial.d.ts.map +1 -1
  1289. package/src/engine/sound/material/concrete/RandomSoundMaterial.js +5 -9
  1290. package/src/engine/sound/material/concrete/SingleSoundMaterial.d.ts.map +1 -1
  1291. package/src/engine/sound/material/concrete/SingleSoundMaterial.js +1 -6
  1292. package/src/engine/sound/material/concrete/SoundMaterialComposition.d.ts.map +1 -1
  1293. package/src/engine/sound/material/concrete/SoundMaterialComposition.js +18 -21
  1294. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.d.ts.map +1 -1
  1295. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +13 -15
  1296. package/src/engine/sound/simulation/core/OccluderBody.d.ts +12 -12
  1297. package/src/engine/sound/simulation/core/OccluderBody.d.ts.map +1 -1
  1298. package/src/engine/sound/simulation/core/OccluderBody.js +74 -74
  1299. package/src/engine/sound/simulation/prototypeAcousticSolver.js +5 -4
  1300. package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts +7 -3
  1301. package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts.map +1 -1
  1302. package/src/engine/sound/sopra/definition/SopraPanningModel.js +34 -20
  1303. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +15 -0
  1304. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
  1305. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -106
  1306. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  1307. package/src/engine/sound/sopra/runtime/EventInstance.js +852 -815
  1308. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts +20 -6
  1309. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
  1310. package/src/engine/sound/sopra/util/buildAttenuationCurve.js +56 -21
  1311. package/src/engine/ui/bindings/DomElementBinding.d.ts.map +1 -1
  1312. package/src/engine/ui/bindings/DomElementBinding.js +15 -18
  1313. package/src/engine/ui/bindings/DomElementBindingDescription.d.ts.map +1 -1
  1314. package/src/engine/ui/bindings/DomElementBindingDescription.js +10 -14
  1315. package/src/engine/ui/bindings/DomElementProcessor.d.ts.map +1 -1
  1316. package/src/engine/ui/bindings/DomElementProcessor.js +5 -7
  1317. package/src/engine/ui/bindings/DomElementProcessorManager.d.ts.map +1 -1
  1318. package/src/engine/ui/bindings/DomElementProcessorManager.js +26 -26
  1319. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
  1320. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +15 -19
  1321. package/src/engine/ui/cursor/CursorCoalescence.d.ts.map +1 -1
  1322. package/src/engine/ui/cursor/CursorCoalescence.js +11 -14
  1323. package/src/engine/ui/modal/ModalStack.d.ts.map +1 -1
  1324. package/src/engine/ui/modal/ModalStack.js +19 -22
  1325. package/src/engine/ui/notification/AnimatedObjectEmitter.d.ts +4 -4
  1326. package/src/engine/ui/notification/AnimatedObjectEmitter.d.ts.map +1 -1
  1327. package/src/engine/ui/notification/AnimatedObjectEmitter.js +68 -70
  1328. package/src/engine/ui/notification/NotificationManager.d.ts +4 -4
  1329. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  1330. package/src/engine/ui/notification/NotificationManager.js +27 -29
  1331. package/src/engine/ui/notification/ViewEmitter.d.ts.map +1 -1
  1332. package/src/engine/ui/notification/ViewEmitter.js +2 -2
  1333. package/src/engine/ui/scene/SceneGUIContext.d.ts.map +1 -1
  1334. package/src/engine/ui/scene/SceneGUIContext.js +20 -22
  1335. package/src/engine/ui/tiles2d/TileMoveProgram.d.ts.map +1 -1
  1336. package/src/engine/ui/tiles2d/TileMoveProgram.js +5 -7
  1337. package/src/generation/GraphGenerationRule.d.ts.map +1 -1
  1338. package/src/generation/GraphGenerationRule.js +10 -14
  1339. package/src/generation/GridGeneratorConfig.d.ts.map +1 -1
  1340. package/src/generation/GridGeneratorConfig.js +15 -19
  1341. package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
  1342. package/src/generation/filtering/CellFilterCellMatcher.js +5 -9
  1343. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
  1344. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +11 -15
  1345. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts.map +1 -1
  1346. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +11 -15
  1347. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +10 -10
  1348. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  1349. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +20 -19
  1350. package/src/generation/markers/matcher/MarkerNodeMatcherByType.d.ts.map +1 -1
  1351. package/src/generation/markers/matcher/MarkerNodeMatcherByType.js +5 -9
  1352. package/src/generation/placement/action/random/CellActionSelectRandom.d.ts.map +1 -1
  1353. package/src/generation/placement/action/random/CellActionSelectRandom.js +11 -16
  1354. package/src/view/ViewGroup.d.ts.map +1 -1
  1355. package/src/view/ViewGroup.js +11 -14
  1356. package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
  1357. package/src/view/common/HTMLElementCacheKey.js +21 -24
  1358. package/src/view/common/TabbedView.d.ts +56 -26
  1359. package/src/view/common/TabbedView.d.ts.map +1 -1
  1360. package/src/view/common/TabbedView.js +128 -30
  1361. package/src/view/common/dnd/DragAndDropContext.d.ts.map +1 -1
  1362. package/src/view/common/dnd/DragAndDropContext.js +11 -12
  1363. package/src/view/common/dnd/Draggable.d.ts +5 -5
  1364. package/src/view/common/dnd/Draggable.d.ts.map +1 -1
  1365. package/src/view/common/dnd/Draggable.js +6 -6
  1366. package/src/view/controller/GuiController.d.ts +1 -1
  1367. package/src/view/controller/GuiController.d.ts.map +1 -1
  1368. package/src/view/controller/GuiController.js +3 -3
  1369. package/src/view/controller/controls/BooleanVector3Control.d.ts.map +1 -1
  1370. package/src/view/controller/controls/BooleanVector3Control.js +2 -2
  1371. package/src/view/controller/controls/NumericIntervalControl.d.ts +1 -1
  1372. package/src/view/controller/controls/NumericIntervalControl.d.ts.map +1 -1
  1373. package/src/view/controller/controls/NumericIntervalControl.js +90 -90
  1374. package/src/view/controller/controls/Vector2Control.d.ts +1 -1
  1375. package/src/view/controller/controls/Vector2Control.d.ts.map +1 -1
  1376. package/src/view/controller/controls/Vector2Control.js +83 -83
  1377. package/src/view/controller/controls/Vector3Control.d.ts +1 -1
  1378. package/src/view/controller/controls/Vector3Control.d.ts.map +1 -1
  1379. package/src/view/controller/controls/Vector3Control.js +90 -90
  1380. package/{editor/view/ecs/components → src/view/controller/dat}/DatGuiController.d.ts +45 -45
  1381. package/src/view/controller/dat/DatGuiController.d.ts.map +1 -0
  1382. package/src/view/controller/dat/DatGuiController.js +216 -0
  1383. package/src/view/currency/CompositeCurrencyLabelView.d.ts.map +1 -1
  1384. package/src/view/currency/CompositeCurrencyLabelView.js +2 -2
  1385. package/src/view/currency/CurrencyDenominationLabelView.d.ts.map +1 -1
  1386. package/src/view/currency/CurrencyDenominationLabelView.js +2 -3
  1387. package/src/view/currency/CurrencyDenominationSpec.d.ts.map +1 -1
  1388. package/src/view/currency/CurrencyDenominationSpec.js +11 -12
  1389. package/src/view/currency/CurrencyDisplaySpec.d.ts.map +1 -1
  1390. package/src/view/currency/CurrencyDisplaySpec.js +5 -9
  1391. package/src/view/elements/ColorPickerView.js +1 -1
  1392. package/src/view/elements/EmptyView.js +1 -1
  1393. package/src/view/elements/MeshPreview.d.ts +1 -1
  1394. package/src/view/elements/MeshPreview.d.ts.map +1 -1
  1395. package/src/view/elements/MeshPreview.js +4 -10
  1396. package/{editor/view/ecs/components/particles/ColorParameterLUTController.d.ts → src/view/elements/drawCheckers.d.ts} +13 -14
  1397. package/src/view/elements/drawCheckers.d.ts.map +1 -0
  1398. package/src/view/elements/drawCheckers.js +33 -0
  1399. package/src/view/elements/progress/segmented/SegmentDefinition.d.ts.map +1 -1
  1400. package/src/view/elements/progress/segmented/SegmentDefinition.js +1 -3
  1401. package/src/view/elements/radial/RadialMenu.d.ts.map +1 -1
  1402. package/src/view/elements/radial/RadialMenu.js +18 -19
  1403. package/src/view/elements/radial/RadialMenuElementDefinition.d.ts.map +1 -1
  1404. package/src/view/elements/radial/RadialMenuElementDefinition.js +95 -87
  1405. package/src/view/elements/radial/RadialText.d.ts +3 -3
  1406. package/src/view/elements/radial/RadialText.d.ts.map +1 -1
  1407. package/src/view/elements/radial/RadialText.js +19 -22
  1408. package/src/view/elements/tiles2d/Tile.d.ts +1 -1
  1409. package/src/view/elements/tiles2d/Tile.d.ts.map +1 -1
  1410. package/src/view/elements/tiles2d/Tile.js +2 -2
  1411. package/src/view/elements/tiles2d/TileGrid.d.ts.map +1 -1
  1412. package/src/view/elements/tiles2d/TileGrid.js +1 -4
  1413. package/src/view/game/achievements/AchievementNotificationView.d.ts.map +1 -1
  1414. package/src/view/game/achievements/AchievementNotificationView.js +2 -3
  1415. package/src/view/interaction/InteractionCommandSet.d.ts.map +1 -1
  1416. package/src/view/interaction/InteractionCommandSet.js +5 -7
  1417. package/src/view/layout/DockDragOverlayView.d.ts +24 -0
  1418. package/src/view/layout/DockDragOverlayView.d.ts.map +1 -0
  1419. package/src/view/layout/DockDragOverlayView.js +63 -0
  1420. package/src/view/layout/DockDropPlan.d.ts +46 -0
  1421. package/src/view/layout/DockDropPlan.d.ts.map +1 -0
  1422. package/src/view/layout/DockDropPlan.js +53 -0
  1423. package/src/view/layout/DockGroupNode.d.ts +29 -0
  1424. package/src/view/layout/DockGroupNode.d.ts.map +1 -0
  1425. package/src/view/layout/DockGroupNode.js +38 -0
  1426. package/src/view/layout/DockLayoutView.d.ts +125 -0
  1427. package/src/view/layout/DockLayoutView.d.ts.map +1 -0
  1428. package/src/view/layout/DockLayoutView.js +1193 -0
  1429. package/src/view/layout/DockPanel.d.ts +38 -0
  1430. package/src/view/layout/DockPanel.d.ts.map +1 -0
  1431. package/src/view/layout/DockPanel.js +51 -0
  1432. package/src/view/layout/DockSide.d.ts +48 -0
  1433. package/src/view/layout/DockSide.d.ts.map +1 -0
  1434. package/src/view/layout/DockSide.js +88 -0
  1435. package/src/view/layout/DockSplitNode.d.ts +59 -0
  1436. package/src/view/layout/DockSplitNode.d.ts.map +1 -0
  1437. package/src/view/layout/DockSplitNode.js +78 -0
  1438. package/src/view/layout/DrawerView.d.ts +53 -0
  1439. package/src/view/layout/DrawerView.d.ts.map +1 -0
  1440. package/src/view/layout/DrawerView.js +163 -0
  1441. package/src/view/layout/FloatingPanelView.d.ts +38 -0
  1442. package/src/view/layout/FloatingPanelView.d.ts.map +1 -0
  1443. package/src/view/layout/FloatingPanelView.js +251 -0
  1444. package/src/view/layout/SplitView.d.ts +73 -0
  1445. package/src/view/layout/SplitView.d.ts.map +1 -0
  1446. package/src/view/layout/SplitView.js +365 -0
  1447. package/src/view/layout/layout.scss +236 -0
  1448. package/src/view/layout/show_popup_menu.d.ts +19 -0
  1449. package/src/view/layout/show_popup_menu.d.ts.map +1 -0
  1450. package/src/view/layout/show_popup_menu.js +81 -0
  1451. package/src/view/minimap/Minimap.d.ts.map +1 -1
  1452. package/src/view/minimap/Minimap.js +2 -6
  1453. package/src/view/minimap/dom/MinimapMarkerView.d.ts.map +1 -1
  1454. package/src/view/minimap/dom/MinimapMarkerView.js +2 -3
  1455. package/src/view/minimap/gl/MarkerGL.d.ts +6 -6
  1456. package/src/view/minimap/gl/MarkerGL.d.ts.map +1 -1
  1457. package/src/view/minimap/gl/MarkerGL.js +8 -9
  1458. package/src/view/minimap/gl/MinimapFogOfWar.d.ts +7 -7
  1459. package/src/view/minimap/gl/MinimapFogOfWar.d.ts.map +1 -1
  1460. package/src/view/minimap/gl/MinimapFogOfWar.js +10 -12
  1461. package/src/view/minimap/gl/MinimapWorldGL.d.ts +15 -15
  1462. package/src/view/minimap/gl/MinimapWorldGL.d.ts.map +1 -1
  1463. package/src/view/minimap/gl/MinimapWorldGL.js +18 -16
  1464. package/src/view/minimap/gl/MinimapWorldLayer.d.ts.map +1 -1
  1465. package/src/view/minimap/gl/MinimapWorldLayer.js +4 -8
  1466. package/src/view/tooltip/DomTooltipManager.d.ts +6 -6
  1467. package/src/view/tooltip/DomTooltipManager.d.ts.map +1 -1
  1468. package/src/view/tooltip/DomTooltipManager.js +21 -22
  1469. package/src/view/tooltip/TooltipManager.d.ts.map +1 -1
  1470. package/src/view/tooltip/TooltipManager.js +6 -8
  1471. package/src/view/tooltip/TooltipView.d.ts +1 -1
  1472. package/src/view/tooltip/TooltipView.d.ts.map +1 -1
  1473. package/src/view/tooltip/TooltipView.js +3 -4
  1474. package/src/view/tooltip/VisualTip.d.ts +5 -5
  1475. package/src/view/tooltip/VisualTip.d.ts.map +1 -1
  1476. package/src/view/tooltip/VisualTip.js +6 -7
  1477. package/src/view/tooltip/gml/GMLEngine.d.ts.map +1 -1
  1478. package/src/view/tooltip/gml/GMLEngine.js +57 -63
  1479. package/src/view/util/DomSizeObserver.d.ts +6 -6
  1480. package/src/view/util/DomSizeObserver.d.ts.map +1 -1
  1481. package/src/view/util/DomSizeObserver.js +27 -20
  1482. package/editor/actions/concrete/PatchTerrainTextureAction.js +0 -153
  1483. package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts +0 -14
  1484. package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts.map +0 -1
  1485. package/editor/process/symbolic/makeStoryTriggerSetAreaDisplay.js +0 -114
  1486. package/editor/tools/TopDownCameraControlTool.d.ts +0 -13
  1487. package/editor/tools/TopDownCameraControlTool.d.ts.map +0 -1
  1488. package/editor/tools/TopDownCameraControlTool.js +0 -56
  1489. package/editor/tools/TransformTool.js +0 -385
  1490. package/editor/tools/paint/prototypeTerrainEditor.js +0 -135
  1491. package/editor/view/EditorView.d.ts +0 -39
  1492. package/editor/view/EditorView.d.ts.map +0 -1
  1493. package/editor/view/EditorView.js +0 -304
  1494. package/editor/view/ecs/ComponentControlFactory.d.ts +0 -19
  1495. package/editor/view/ecs/ComponentControlFactory.d.ts.map +0 -1
  1496. package/editor/view/ecs/ComponentControlFactory.js +0 -45
  1497. package/editor/view/ecs/EntityList.d.ts +0 -22
  1498. package/editor/view/ecs/EntityList.d.ts.map +0 -1
  1499. package/editor/view/ecs/HierarchicalEntityListView.module.scss +0 -13
  1500. package/editor/view/ecs/components/BlackboardController.js +0 -50
  1501. package/editor/view/ecs/components/DatGuiController.d.ts.map +0 -1
  1502. package/editor/view/ecs/components/FogOfWarController.js +0 -78
  1503. package/editor/view/ecs/components/FogOfWarRevealerController.js +0 -44
  1504. package/editor/view/ecs/components/GeneratedArmyController.js +0 -42
  1505. package/editor/view/ecs/components/GridObstacleController.d.ts +0 -14
  1506. package/editor/view/ecs/components/GridObstacleController.d.ts.map +0 -1
  1507. package/editor/view/ecs/components/GridObstacleController.js +0 -72
  1508. package/editor/view/ecs/components/GridPositionController.js +0 -40
  1509. package/editor/view/ecs/components/HeadsUpDisplayController.js +0 -30
  1510. package/editor/view/ecs/components/HighlightController.js +0 -47
  1511. package/editor/view/ecs/components/MeshController.js +0 -122
  1512. package/editor/view/ecs/components/PathFollowerController.js +0 -87
  1513. package/editor/view/ecs/components/TagController.js +0 -80
  1514. package/editor/view/ecs/components/TerrainController.js +0 -215
  1515. package/editor/view/ecs/components/TransformController.js +0 -97
  1516. package/editor/view/ecs/components/UnitShopController.js +0 -112
  1517. package/editor/view/ecs/components/army/ArmyController.js +0 -130
  1518. package/editor/view/ecs/components/gui/GUIElementController.js +0 -117
  1519. package/editor/view/ecs/components/items/ItemContainerController.js +0 -132
  1520. package/editor/view/ecs/components/items/ItemContainerController.stories.js +0 -50
  1521. package/editor/view/ecs/components/items/ItemController.js +0 -52
  1522. package/editor/view/ecs/components/particles/ColorParameterLUTController.d.ts.map +0 -1
  1523. package/editor/view/ecs/components/particles/ColorParameterLUTController.js +0 -444
  1524. package/editor/view/ecs/components/particles/ParameterTrackController.js +0 -51
  1525. package/editor/view/ecs/components/particles/ParticleEmitterController.js +0 -213
  1526. package/editor/view/ecs/components/particles/ParticleLayerController.js +0 -213
  1527. package/editor/view/ecs/components/particles/ScalarParameterLUTController.js +0 -401
  1528. package/editor/view/ecs/components/sockets/AttachmentSocketsController.js +0 -51
  1529. package/editor/view/ecs/components/sound/SoundEmitterController.js +0 -137
  1530. package/editor/view/ecs/components/story/StoryTriggerSetController.js +0 -214
  1531. package/editor/view/ecs/components/unit/AuraController.js +0 -45
  1532. package/editor/view/makeEntityDecorators.d.ts +0 -6
  1533. package/editor/view/makeEntityDecorators.d.ts.map +0 -1
  1534. package/editor/view/v2/SplitView.d.ts +0 -17
  1535. package/editor/view/v2/SplitView.d.ts.map +0 -1
  1536. package/editor/view/v2/ViewManagementSystem.js +0 -0
  1537. package/editor/view/v2/prototypeEditor.js +0 -127
  1538. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.d.ts +0 -2
  1539. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.d.ts.map +0 -1
  1540. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +0 -1570
  1541. package/src/engine/graphics/three/TransfromControls.js +0 -1495
  1542. package/src/view/controller/controls_v2/AbstractPropertyBinding.d.ts +0 -8
  1543. package/src/view/controller/controls_v2/AbstractPropertyBinding.d.ts.map +0 -1
  1544. package/src/view/controller/controls_v2/AbstractPropertyBinding.ts +0 -10
  1545. package/src/view/controller/controls_v2/Controller.d.ts +0 -21
  1546. package/src/view/controller/controls_v2/Controller.d.ts.map +0 -1
  1547. package/src/view/controller/controls_v2/Controller.ts +0 -32
  1548. package/src/view/controller/controls_v2/IPropertyBinding.d.ts +0 -5
  1549. package/src/view/controller/controls_v2/IPropertyBinding.d.ts.map +0 -1
  1550. package/src/view/controller/controls_v2/IPropertyBinding.ts +0 -6
  1551. package/src/view/controller/controls_v2/PrimitivePropertyBinding.d.ts +0 -6
  1552. package/src/view/controller/controls_v2/PrimitivePropertyBinding.d.ts.map +0 -1
  1553. package/src/view/controller/controls_v2/PrimitivePropertyBinding.ts +0 -12
  1554. package/src/view/controller/controls_v2/SliderController.d.ts +0 -6
  1555. package/src/view/controller/controls_v2/SliderController.d.ts.map +0 -1
  1556. package/src/view/controller/controls_v2/SliderController.ts +0 -10
  1557. package/src/view/elements/button/ButtonView.stories.d.ts +0 -2
  1558. package/src/view/elements/button/ButtonView.stories.d.ts.map +0 -1
  1559. package/src/view/elements/button/ButtonView.stories.js +0 -14
@@ -1,583 +1,564 @@
1
- import { assert } from "../../core/assert.js";
2
- import { BinaryBuffer } from "../../core/binary/BinaryBuffer.js";
3
-
4
- /** Words per record: [network_id, type_id, byte_offset, byte_length]. 4 × u32 = 16 B. */
5
- const RECORD_WORDS = 4;
6
-
7
- /** 256-bit bloom filter per page → 8 × u32. */
8
- const BLOOM_WORDS = 8;
9
-
10
- /**
11
- * Records per page. Sized so that with k=3 hash functions on a 256-bit filter
12
- * the false-positive rate is just under 5% — `(1 - exp(-3·39/256))^3 ≈ 0.048`.
13
- */
14
- const METADATA_PAGE_SIZE = 39;
15
-
16
- /** Total words per fully-occupied page. Underused pages are smaller. */
17
- const MAX_PAGE_WORDS = BLOOM_WORDS + METADATA_PAGE_SIZE * RECORD_WORDS; // 164
18
-
19
- /**
20
- * Reusable scratch row used by {@link InterpolationLog#interpolate} to hold
21
- * the (offset, length) pairs from two `locate` calls. Six slots × u32 — the
22
- * two pairs live at indices [4..5] and [6..7]; lower slots are spare for any
23
- * future scratch use.
24
- * @type {Uint32Array}
25
- */
26
- const scratch_u32 = new Uint32Array(8);
27
-
28
- /**
29
- * Insert a u32 key into the 256-bit bloom filter at words `[base..base+7]` of `table`.
30
- * Reference: standard double-hashing trick, k=3 hashes derived from one murmur3 mix.
31
- *
32
- * @param {Uint32Array} table
33
- * @param {number} base word offset of the bloom filter's first word
34
- * @param {number} key u32 to hash
35
- */
36
- function bloom_insert(table, base, key) {
37
- let h = key | 0;
38
- h ^= h >>> 16;
39
- h = Math.imul(h, 0x85ebca6b);
40
- h ^= h >>> 13;
41
-
42
- const h1 = Math.imul(h, 0xc2b2ae35);
43
- const h2 = h1 ^ (h1 >>> 16);
44
-
45
- for (let i = 0; i < 3; i++) {
46
- const bit_index = (h1 + Math.imul(i, h2)) & 255;
47
- const word_index = bit_index >>> 5;
48
- table[base + word_index] |= (1 << bit_index);
49
- }
50
- }
51
-
52
- /**
53
- * Bloom-filter membership test. Returns false ⇒ definitely not present;
54
- * true ⇒ likely present (false-positive rate per page ≈ 5%).
55
- *
56
- * @param {Uint32Array} table
57
- * @param {number} base
58
- * @param {number} key
59
- * @returns {boolean}
60
- */
61
- function bloom_contains(table, base, key) {
62
- let h = key | 0;
63
- h ^= h >>> 16;
64
- h = Math.imul(h, 0x85ebca6b);
65
- h ^= h >>> 13;
66
-
67
- const h1 = Math.imul(h, 0xc2b2ae35);
68
- const h2 = h1 ^ (h1 >>> 16);
69
-
70
- for (let i = 0; i < 3; i++) {
71
- const bit_index = (h1 + Math.imul(i, h2)) & 255;
72
- const word_index = bit_index >>> 5;
73
- if ((table[base + word_index] & (1 << bit_index)) === 0) return false;
74
- }
75
- return true;
76
- }
77
-
78
- /**
79
- * Per-tick recording of replicated component state for snapshot interpolation.
80
- *
81
- * Two ring buffers — both wrap at tick boundaries only:
82
- *
83
- * - `__buffer` (BinaryBuffer): raw component bytes, written via `begin_record`
84
- * / `end_record`. Variable size per record.
85
- *
86
- * - `__records` (Uint32Array): the metadata table, holding one row per
87
- * `(network_id, type_id, byte_offset, byte_length)` plus a bloom-filter
88
- * header every {@link METADATA_PAGE_SIZE} records. The structure:
89
- *
90
- * page = [bloom_0..7] [rec_0_n, _t, _o, _l] ... [rec_38_n, _t, _o, _l]
91
- *
92
- * A new page header is written at `begin_tick` and then again every 39
93
- * records within a tick. The bloom filter is keyed by `network_id`, so a
94
- * `locate(network_id, type_id)` can skip whole pages with a single 256-bit
95
- * check before falling back to a per-record scan inside the page. Pages
96
- * never straddle tick boundaries.
97
- *
98
- * Per-tick metadata is small: byte range + word range in `__records` + record
99
- * count. The oldest tick is tracked explicitly (`__oldest_tick`) so the squash
100
- * check at each {@link begin_tick} is amortized O(1) — squash the oldest while
101
- * it overlaps the new write region, advance the pointer, repeat.
102
- *
103
- * Pair with {@link BinaryInterpolationAdapter} concrete subclasses (e.g.
104
- * {@link Vector3InterpolationAdapter}) which know each component type's
105
- * encoding and blend math.
106
- *
107
- * Typical receive-side use:
108
- * ```
109
- * onFrameApplied(_, frame_number) {
110
- * log.begin_tick(frame_number);
111
- * const buf = log.begin_record(network_id, type_id);
112
- * adapter.serialize(buf, value);
113
- * log.end_record();
114
- * log.end_tick();
115
- * }
116
- * ```
117
- *
118
- * Typical render-time use:
119
- * ```
120
- * const ok = log.interpolate(out_buffer, network_id, type_id, tick_a, tick_b, t, adapter);
121
- * if (ok) { /* deserialize from out_buffer into the live component }
122
- * ```
123
- *
124
- * @author Alex Goldring
125
- * @copyright Company Named Limited (c) 2026
126
- */
127
- export class InterpolationLog {
128
- #buffer;
129
- #buffer_cursor;
130
- #records;
131
- #records_word_capacity;
132
- #records_cursor;
133
- #current_page_start;
134
- #records_in_current_page;
135
- #ticks;
136
- #oldest_tick;
137
- #max_tick_bytes;
138
- #max_tick_words;
139
- #current_tick;
140
- #pending_record_start;
141
- #pending_network_id;
142
- #pending_type_id;
143
-
144
-
145
- /**
146
- * @param {{ buffer_capacity_bytes?: number, records_capacity?: number }} [options]
147
- * `records_capacity` is in *records* (not bytes); the underlying word
148
- * array is sized large enough to fit that many records plus their pages'
149
- * bloom-filter headers.
150
- */
151
- constructor({ buffer_capacity_bytes = 65536, records_capacity = 4096 } = {}) {
152
- assert.isNonNegativeInteger(buffer_capacity_bytes, 'buffer_capacity_bytes');
153
- assert.ok(buffer_capacity_bytes >= 256, 'buffer_capacity_bytes must be >= 256');
154
- assert.isNonNegativeInteger(records_capacity, 'records_capacity');
155
- assert.ok(records_capacity >= 1, 'records_capacity must be >= 1');
156
-
157
- /**
158
- * Component-bytes ring. Reads (during {@link interpolate}) move the
159
- * buffer's position cursor; we track the next write position
160
- * separately in `__buffer_cursor` so reads don't clobber it.
161
- * @private @type {BinaryBuffer}
162
- */
163
- this.#buffer = new BinaryBuffer();
164
- this.#buffer.fromArrayBuffer(new ArrayBuffer(buffer_capacity_bytes));
165
-
166
- /** @readonly @type {number} */
167
- this.buffer_capacity = buffer_capacity_bytes;
168
-
169
- /** @private @type {number} */
170
- this.#buffer_cursor = 0;
171
-
172
- /**
173
- * Metadata table — flat Uint32Array of pages back-to-back. Sized for
174
- * the worst case of every page being full; if the workload doesn't
175
- * fill pages, the wasted slots just sit empty.
176
- * @private @type {Uint32Array}
177
- */
178
- const num_pages = Math.ceil(records_capacity / METADATA_PAGE_SIZE);
179
- const total_words = num_pages * MAX_PAGE_WORDS;
180
- this.#records = new Uint32Array(total_words);
181
-
182
- /** @readonly @type {number} */
183
- this.records_capacity = records_capacity;
184
-
185
- /** Total word capacity of the metadata table (used for wrap/overlap math). @readonly @type {number} */
186
- this.#records_word_capacity = total_words;
187
-
188
- /** @private @type {number} Next word position to write. */
189
- this.#records_cursor = 0;
190
-
191
- /**
192
- * Current page state. While a tick is open, `__current_page_start` is
193
- * the word offset of the bloom-filter header for the page being
194
- * filled, and `__records_in_current_page` counts how many of its
195
- * 39 record slots are already populated.
196
- * @private @type {number}
197
- */
198
- this.#current_page_start = -1;
199
- /** @private @type {number} */
200
- this.#records_in_current_page = 0;
201
-
202
- /**
203
- * Per-tick metadata, keyed by tick number. Map preserves insertion
204
- * order, which equals chronological order; the first key is therefore
205
- * always the oldest tick, mirrored by `__oldest_tick`.
206
- *
207
- * Entry shape: `{ byte_start, byte_end, record_start_word,
208
- * record_word_count, record_count }`.
209
- *
210
- * @private @type {Map<number, {byte_start: number, byte_end: number, record_start_word: number, record_word_count: number, record_count: number}>}
211
- */
212
- this.#ticks = new Map();
213
-
214
- /**
215
- * Tick number of the oldest live tick, or -1 if empty.
216
- * @private @type {number}
217
- */
218
- this.#oldest_tick = -1;
219
-
220
- /**
221
- * Largest single-tick byte / word footprint observed. Used as the
222
- * estimated-tick-size at {@link begin_tick} to decide whether to wrap
223
- * pre-emptively.
224
- * @private @type {number}
225
- */
226
- this.#max_tick_bytes = 0;
227
- /** @private @type {number} */
228
- this.#max_tick_words = 0;
229
-
230
- /** @private @type {number} */
231
- this.#current_tick = -1;
232
-
233
- /**
234
- * Open-record state. -1 when no record is currently being written;
235
- * otherwise the byte offset where the in-progress record's payload
236
- * began (so {@link end_record} can compute the length).
237
- * @private @type {number}
238
- */
239
- this.#pending_record_start = -1;
240
- /** @private @type {number} */
241
- this.#pending_network_id = 0;
242
- /** @private @type {number} */
243
- this.#pending_type_id = 0;
244
- }
245
-
246
- /**
247
- * Open a new tick for recording. May wrap either ring at this point — but
248
- * never mid-tick, so a single tick's data is always contiguous in both
249
- * the byte buffer and the metadata table. After wrapping, any old tick
250
- * whose data overlaps the new write region is squashed (in oldest-first
251
- * order) and `__oldest_tick` advances.
252
- *
253
- * @param {number} tick non-negative integer
254
- */
255
- begin_tick(tick) {
256
- assert.isNonNegativeInteger(tick, 'tick');
257
- if (this.#current_tick !== -1) {
258
- throw new Error(`InterpolationLog.begin_tick: previous tick ${this.#current_tick} still open; call end_tick first`);
259
- }
260
-
261
- // Wrap the byte buffer if remaining < typical tick size.
262
- if (this.buffer_capacity - this.#buffer_cursor < this.#max_tick_bytes) {
263
- this.#buffer_cursor = 0;
264
- }
265
- // Wrap the metadata table similarly.
266
- if (this.#records_word_capacity - this.#records_cursor < this.#max_tick_words) {
267
- this.#records_cursor = 0;
268
- }
269
-
270
- // Estimate the new tick's byte and word ranges (worst-case = max-observed).
271
- const new_byte_start = this.#buffer_cursor;
272
- const new_byte_end_est = new_byte_start + this.#max_tick_bytes;
273
- const new_word_start = this.#records_cursor;
274
- const new_word_end_est = new_word_start + this.#max_tick_words;
275
-
276
- // Squash oldest ticks while they overlap. O(1) amortized.
277
- while (this.#oldest_tick !== -1) {
278
- const oldest_meta = this.#ticks.get(this.#oldest_tick);
279
- const byte_overlap =
280
- oldest_meta.byte_end > new_byte_start &&
281
- oldest_meta.byte_start < new_byte_end_est;
282
- const word_overlap =
283
- (oldest_meta.record_start_word + oldest_meta.record_word_count) > new_word_start &&
284
- oldest_meta.record_start_word < new_word_end_est;
285
- if (!byte_overlap && !word_overlap) break;
286
- this.#ticks.delete(this.#oldest_tick);
287
- const next = this.#ticks.keys().next();
288
- this.#oldest_tick = next.done ? -1 : next.value;
289
- }
290
-
291
- // Open this tick's first page: write a fresh (zero) bloom filter header.
292
- this.#current_page_start = this.#records_cursor;
293
- const records = this.#records;
294
- records[this.#current_page_start + 0] = 0;
295
- records[this.#current_page_start + 1] = 0;
296
- records[this.#current_page_start + 2] = 0;
297
- records[this.#current_page_start + 3] = 0;
298
- records[this.#current_page_start + 4] = 0;
299
- records[this.#current_page_start + 5] = 0;
300
- records[this.#current_page_start + 6] = 0;
301
- records[this.#current_page_start + 7] = 0;
302
- this.#records_cursor += BLOOM_WORDS;
303
- this.#records_in_current_page = 0;
304
-
305
- const meta = {
306
- byte_start: new_byte_start,
307
- byte_end: new_byte_start,
308
- record_start_word: this.#current_page_start,
309
- record_word_count: BLOOM_WORDS,
310
- record_count: 0,
311
- };
312
- this.#ticks.set(tick, meta);
313
-
314
- if (this.#oldest_tick === -1) {
315
- this.#oldest_tick = tick;
316
- }
317
-
318
- this.#current_tick = tick;
319
- }
320
-
321
- /**
322
- * Begin recording one component. Returns the underlying byte buffer
323
- * positioned at the next write slot the caller writes the component
324
- * payload directly (e.g. via a `BinaryClassSerializationAdapter.serialize`
325
- * call), then calls {@link end_record} to finalize the (offset, length).
326
- *
327
- * Splitting begin/end (vs. taking a write callback) avoids the per-record
328
- * closure allocation and lets the caller pass the buffer straight to an
329
- * adapter without wrapping.
330
- *
331
- * @param {number} network_id
332
- * @param {number} type_id component type id (small integer; matches the registry)
333
- * @returns {BinaryBuffer} the log's byte buffer, positioned for writing the payload
334
- */
335
- begin_record(network_id, type_id) {
336
- assert.isNonNegativeInteger(network_id, 'network_id');
337
- assert.isNonNegativeInteger(type_id, 'type_id');
338
- if (this.#current_tick === -1) {
339
- throw new Error('InterpolationLog.begin_record: no tick is open; call begin_tick first');
340
- }
341
- if (this.#pending_record_start !== -1) {
342
- throw new Error('InterpolationLog.begin_record: previous record still open; call end_record first');
343
- }
344
-
345
- // If the current page is full, open a new one before this record's
346
- // metadata gets written.
347
- if (this.#records_in_current_page >= METADATA_PAGE_SIZE) {
348
- const records = this.#records;
349
- this.#current_page_start = this.#records_cursor;
350
- records[this.#current_page_start + 0] = 0;
351
- records[this.#current_page_start + 1] = 0;
352
- records[this.#current_page_start + 2] = 0;
353
- records[this.#current_page_start + 3] = 0;
354
- records[this.#current_page_start + 4] = 0;
355
- records[this.#current_page_start + 5] = 0;
356
- records[this.#current_page_start + 6] = 0;
357
- records[this.#current_page_start + 7] = 0;
358
- this.#records_cursor += BLOOM_WORDS;
359
- this.#records_in_current_page = 0;
360
- }
361
-
362
- const buf = this.#buffer;
363
- buf.position = this.#buffer_cursor;
364
- this.#pending_record_start = buf.position;
365
- this.#pending_network_id = network_id;
366
- this.#pending_type_id = type_id;
367
- return buf;
368
- }
369
-
370
- /**
371
- * Finalize the in-progress record opened by {@link begin_record}. Reads
372
- * the buffer's current position to compute the payload length, inserts
373
- * the network_id into the current page's bloom filter, writes the row to
374
- * the metadata table, and advances the cursors.
375
- */
376
- end_record() {
377
- if (this.#pending_record_start === -1) {
378
- throw new Error('InterpolationLog.end_record: no record is open; call begin_record first');
379
- }
380
-
381
- const buf = this.#buffer;
382
- const start = this.#pending_record_start;
383
- const end = buf.position;
384
- const length = end - start;
385
- this.#buffer_cursor = end;
386
-
387
- const records = this.#records;
388
- const nid = this.#pending_network_id;
389
-
390
- // Update the current page's bloom filter for fast skip-by-network_id.
391
- bloom_insert(records, this.#current_page_start, nid);
392
-
393
- // Write the record at the cursor.
394
- const at = this.#records_cursor;
395
- records[at + 0] = nid;
396
- records[at + 1] = this.#pending_type_id;
397
- records[at + 2] = start;
398
- records[at + 3] = length;
399
- this.#records_cursor += RECORD_WORDS;
400
- this.#records_in_current_page++;
401
-
402
- const meta = this.#ticks.get(this.#current_tick);
403
- meta.byte_end = end;
404
- meta.record_count++;
405
- const grown_word_count = this.#records_cursor - meta.record_start_word;
406
- meta.record_word_count = grown_word_count;
407
-
408
- // Overrun guard: the begin_tick wrap heuristic sizes off the largest
409
- // *previously observed* tick. A tick whose footprint exceeds any prior
410
- // one can advance the cursors into the live range of an older tick.
411
- // Only check (and squash) when this tick is actively exceeding the
412
- // envelope — steady-state ticks skip both branches.
413
- const grown_byte_count = end - meta.byte_start;
414
- if (grown_byte_count > this.#max_tick_bytes || grown_word_count > this.#max_tick_words) {
415
- while (this.#oldest_tick !== -1 && this.#oldest_tick !== this.#current_tick) {
416
- const oldest_meta = this.#ticks.get(this.#oldest_tick);
417
- const byte_overlap =
418
- end > oldest_meta.byte_start && meta.byte_start < oldest_meta.byte_end;
419
- const word_overlap =
420
- this.#records_cursor > oldest_meta.record_start_word &&
421
- meta.record_start_word < oldest_meta.record_start_word + oldest_meta.record_word_count;
422
- if (!byte_overlap && !word_overlap) break;
423
- this.#ticks.delete(this.#oldest_tick);
424
- const next = this.#ticks.keys().next();
425
- this.#oldest_tick = next.done ? -1 : next.value;
426
- }
427
- }
428
-
429
- this.#pending_record_start = -1;
430
- }
431
-
432
- /**
433
- * Close the currently-open tick. Updates the max-observed-tick sizes so
434
- * the next {@link begin_tick} can size its wrap heuristic correctly.
435
- *
436
- * Throws if a record is still open — silently dropping the in-progress
437
- * record's metadata (offset/length) would leak buffer space and produce
438
- * stale bytes that no one can locate.
439
- */
440
- end_tick() {
441
- if (this.#current_tick === -1) {
442
- throw new Error('InterpolationLog.end_tick: no tick is open; call begin_tick first');
443
- }
444
- if (this.#pending_record_start !== -1) {
445
- throw new Error(`InterpolationLog.end_tick: record (network_id=${this.#pending_network_id}, type_id=${this.#pending_type_id}) still open; call end_record first`);
446
- }
447
-
448
- const meta = this.#ticks.get(this.#current_tick);
449
-
450
- const tick_bytes = meta.byte_end - meta.byte_start;
451
- if (tick_bytes > this.#max_tick_bytes) this.#max_tick_bytes = tick_bytes;
452
- if (meta.record_word_count > this.#max_tick_words) this.#max_tick_words = meta.record_word_count;
453
-
454
- this.#current_tick = -1;
455
- }
456
-
457
- /**
458
- * @param {number} tick
459
- * @returns {boolean} true if the tick has live (non-squashed) data
460
- */
461
- has_tick(tick) {
462
- return this.#ticks.has(tick);
463
- }
464
-
465
- /**
466
- * Find a component's stored slice within a tick. Walks the tick's pages,
467
- * bloom-filter-skipping pages that don't contain `network_id`, and
468
- * scanning records inside any page where the bloom hits.
469
- *
470
- * On success, writes `out[out_offset+0] = byte_offset` and
471
- * `out[out_offset+1] = byte_length`.
472
- *
473
- * @param {number[]|Uint32Array} out
474
- * @param {number} out_offset
475
- * @param {number} tick
476
- * @param {number} network_id
477
- * @param {number} type_id
478
- * @returns {boolean} false if the tick is missing/squashed or doesn't carry this component
479
- */
480
- locate(out, out_offset, tick, network_id, type_id) {
481
- const meta = this.#ticks.get(tick);
482
- if (meta === undefined) return false;
483
-
484
- const records = this.#records;
485
- let page_start = meta.record_start_word;
486
- let records_remaining = meta.record_count;
487
-
488
- while (records_remaining > 0) {
489
- const records_in_this_page = Math.min(records_remaining, METADATA_PAGE_SIZE);
490
-
491
- // Skip the whole page if the bloom filter says network_id isn't in it.
492
- if (bloom_contains(records, page_start, network_id)) {
493
- const records_base = page_start + BLOOM_WORDS;
494
- for (let i = 0; i < records_in_this_page; i++) {
495
- const r = records_base + i * RECORD_WORDS;
496
- if (records[r + 0] === network_id && records[r + 1] === type_id) {
497
- out[out_offset + 0] = records[r + 2];
498
- out[out_offset + 1] = records[r + 3];
499
- return true;
500
- }
501
- }
502
- }
503
-
504
- page_start += BLOOM_WORDS + records_in_this_page * RECORD_WORDS;
505
- records_remaining -= records_in_this_page;
506
- }
507
-
508
- return false;
509
- }
510
-
511
- /**
512
- * Interpolate one component between two ticks via `adapter` and write the
513
- * result to `out_buffer` at its current position.
514
- *
515
- * Outcome by available data:
516
- * - Both ticks carry the component → adapter blends them at `t`.
517
- * - Only one carries it → adapter is called with the same offset twice
518
- * (snap to the surviving snapshot; `t` is irrelevant).
519
- * - Neither carries it → returns false; `out_buffer` is unchanged.
520
- *
521
- * @param {BinaryBuffer} out_buffer
522
- * @param {number} network_id
523
- * @param {number} type_id
524
- * @param {number} tick_a
525
- * @param {number} tick_b
526
- * @param {number} t
527
- * @param {BinaryInterpolationAdapter} adapter
528
- * @returns {boolean} true if a payload was written; false if neither tick has the component
529
- */
530
- interpolate(out_buffer, network_id, type_id, tick_a, tick_b, t, adapter) {
531
- const a = this.locate(scratch_u32, 4, tick_a, network_id, type_id);
532
- const b = this.locate(scratch_u32, 6, tick_b, network_id, type_id);
533
-
534
- if (!(a || b)) return false;
535
-
536
- const offset_a = scratch_u32[4];
537
- const offset_b = scratch_u32[6];
538
-
539
- const first = a ? offset_a : offset_b;
540
- const second = b ? offset_b : offset_a;
541
-
542
- // Adapter is free to mutate __buffer.position (it sets it to specific
543
- // offsets to read). Save & restore so subsequent reads/writes aren't
544
- // surprised by a moved cursor.
545
- const buffer = this.#buffer;
546
- const saved = buffer.position;
547
- adapter.interpolate(out_buffer, buffer, first, second, t);
548
- buffer.position = saved;
549
-
550
- return true;
551
- }
552
-
553
- /**
554
- * Number of ticks currently held. Squashed ticks are excluded.
555
- * @returns {number}
556
- */
557
- size() {
558
- return this.#ticks.size;
559
- }
560
-
561
- /**
562
- * Tick number of the oldest live tick, or -1 if empty.
563
- * @returns {number}
564
- */
565
- oldest_tick() {
566
- return this.#oldest_tick;
567
- }
568
-
569
- /**
570
- * Drop all recorded ticks. Resets both ring cursors to 0. Useful on
571
- * reconnect or level transition.
572
- */
573
- clear() {
574
- this.#ticks.clear();
575
- this.#buffer_cursor = 0;
576
- this.#records_cursor = 0;
577
- this.#oldest_tick = -1;
578
- this.#current_tick = -1;
579
- this.#pending_record_start = -1;
580
- this.#current_page_start = -1;
581
- this.#records_in_current_page = 0;
582
- }
583
- }
1
+ import { assert } from "../../core/assert.js";
2
+ import { BinaryBuffer } from "../../core/binary/BinaryBuffer.js";
3
+
4
+ /** Words per record: [network_id, type_id, byte_offset, byte_length]. 4 × u32 = 16 B. */
5
+ const RECORD_WORDS = 4;
6
+
7
+ /** 256-bit bloom filter per page → 8 × u32. */
8
+ const BLOOM_WORDS = 8;
9
+
10
+ /**
11
+ * Records per page. Sized so that with k=3 hash functions on a 256-bit filter
12
+ * the false-positive rate is just under 5% — `(1 - exp(-3·39/256))^3 ≈ 0.048`.
13
+ */
14
+ const METADATA_PAGE_SIZE = 39;
15
+
16
+ /** Total words per fully-occupied page. Underused pages are smaller. */
17
+ const MAX_PAGE_WORDS = BLOOM_WORDS + METADATA_PAGE_SIZE * RECORD_WORDS; // 164
18
+
19
+ /**
20
+ * Reusable scratch row used by {@link InterpolationLog#interpolate} to hold
21
+ * the (offset, length) pairs from two `locate` calls. Six slots × u32 — the
22
+ * two pairs live at indices [4..5] and [6..7]; lower slots are spare for any
23
+ * future scratch use.
24
+ * @type {Uint32Array}
25
+ */
26
+ const scratch_u32 = new Uint32Array(8);
27
+
28
+ /**
29
+ * Insert a u32 key into the 256-bit bloom filter at words `[base..base+7]` of `table`.
30
+ * Reference: standard double-hashing trick, k=3 hashes derived from one murmur3 mix.
31
+ *
32
+ * @param {Uint32Array} table
33
+ * @param {number} base word offset of the bloom filter's first word
34
+ * @param {number} key u32 to hash
35
+ */
36
+ function bloom_insert(table, base, key) {
37
+ let h = key | 0;
38
+ h ^= h >>> 16;
39
+ h = Math.imul(h, 0x85ebca6b);
40
+ h ^= h >>> 13;
41
+
42
+ const h1 = Math.imul(h, 0xc2b2ae35);
43
+ const h2 = h1 ^ (h1 >>> 16);
44
+
45
+ for (let i = 0; i < 3; i++) {
46
+ const bit_index = (h1 + Math.imul(i, h2)) & 255;
47
+ const word_index = bit_index >>> 5;
48
+ table[base + word_index] |= (1 << bit_index);
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Bloom-filter membership test. Returns false ⇒ definitely not present;
54
+ * true ⇒ likely present (false-positive rate per page ≈ 5%).
55
+ *
56
+ * @param {Uint32Array} table
57
+ * @param {number} base
58
+ * @param {number} key
59
+ * @returns {boolean}
60
+ */
61
+ function bloom_contains(table, base, key) {
62
+ let h = key | 0;
63
+ h ^= h >>> 16;
64
+ h = Math.imul(h, 0x85ebca6b);
65
+ h ^= h >>> 13;
66
+
67
+ const h1 = Math.imul(h, 0xc2b2ae35);
68
+ const h2 = h1 ^ (h1 >>> 16);
69
+
70
+ for (let i = 0; i < 3; i++) {
71
+ const bit_index = (h1 + Math.imul(i, h2)) & 255;
72
+ const word_index = bit_index >>> 5;
73
+ if ((table[base + word_index] & (1 << bit_index)) === 0) return false;
74
+ }
75
+ return true;
76
+ }
77
+
78
+ /**
79
+ * Per-tick recording of replicated component state for snapshot interpolation.
80
+ *
81
+ * Two ring buffers — both wrap at tick boundaries only:
82
+ *
83
+ * - `__buffer` (BinaryBuffer): raw component bytes, written via `begin_record`
84
+ * / `end_record`. Variable size per record.
85
+ *
86
+ * - `__records` (Uint32Array): the metadata table, holding one row per
87
+ * `(network_id, type_id, byte_offset, byte_length)` plus a bloom-filter
88
+ * header every {@link METADATA_PAGE_SIZE} records. The structure:
89
+ *
90
+ * page = [bloom_0..7] [rec_0_n, _t, _o, _l] ... [rec_38_n, _t, _o, _l]
91
+ *
92
+ * A new page header is written at `begin_tick` and then again every 39
93
+ * records within a tick. The bloom filter is keyed by `network_id`, so a
94
+ * `locate(network_id, type_id)` can skip whole pages with a single 256-bit
95
+ * check before falling back to a per-record scan inside the page. Pages
96
+ * never straddle tick boundaries.
97
+ *
98
+ * Per-tick metadata is small: byte range + word range in `__records` + record
99
+ * count. The oldest tick is tracked explicitly (`__oldest_tick`) so the squash
100
+ * check at each {@link begin_tick} is amortized O(1) — squash the oldest while
101
+ * it overlaps the new write region, advance the pointer, repeat.
102
+ *
103
+ * Pair with {@link BinaryInterpolationAdapter} concrete subclasses (e.g.
104
+ * {@link Vector3InterpolationAdapter}) which know each component type's
105
+ * encoding and blend math.
106
+ *
107
+ * Typical receive-side use:
108
+ * ```
109
+ * onFrameApplied(_, frame_number) {
110
+ * log.begin_tick(frame_number);
111
+ * const buf = log.begin_record(network_id, type_id);
112
+ * adapter.serialize(buf, value);
113
+ * log.end_record();
114
+ * log.end_tick();
115
+ * }
116
+ * ```
117
+ *
118
+ * Typical render-time use:
119
+ * ```
120
+ * const ok = log.interpolate(out_buffer, network_id, type_id, tick_a, tick_b, t, adapter);
121
+ * if (ok) { /* deserialize from out_buffer into the live component }
122
+ * ```
123
+ *
124
+ * @author Alex Goldring
125
+ * @copyright Company Named Limited (c) 2026
126
+ */
127
+ export class InterpolationLog {
128
+ #buffer;
129
+ /** @private @type {number} */
130
+ #buffer_cursor = 0;
131
+ #records;
132
+ #records_word_capacity;
133
+ /** @private @type {number} Next word position to write. */
134
+ #records_cursor = 0;
135
+ /**
136
+ * Current page state. While a tick is open, `__current_page_start` is
137
+ * the word offset of the bloom-filter header for the page being
138
+ * filled, and `__records_in_current_page` counts how many of its
139
+ * 39 record slots are already populated.
140
+ * @private @type {number}
141
+ */
142
+ #current_page_start = -1;
143
+ /** @private @type {number} */
144
+ #records_in_current_page = 0;
145
+ #ticks;
146
+ /**
147
+ * Tick number of the oldest live tick, or -1 if empty.
148
+ * @private @type {number}
149
+ */
150
+ #oldest_tick = -1;
151
+ /**
152
+ * Largest single-tick byte / word footprint observed. Used as the
153
+ * estimated-tick-size at {@link begin_tick} to decide whether to wrap
154
+ * pre-emptively.
155
+ * @private @type {number}
156
+ */
157
+ #max_tick_bytes = 0;
158
+ /** @private @type {number} */
159
+ #max_tick_words = 0;
160
+ /** @private @type {number} */
161
+ #current_tick = -1;
162
+ /**
163
+ * Open-record state. -1 when no record is currently being written;
164
+ * otherwise the byte offset where the in-progress record's payload
165
+ * began (so {@link end_record} can compute the length).
166
+ * @private @type {number}
167
+ */
168
+ #pending_record_start = -1;
169
+ /** @private @type {number} */
170
+ #pending_network_id = 0;
171
+ /** @private @type {number} */
172
+ #pending_type_id = 0;
173
+
174
+ /**
175
+ * @param {{ buffer_capacity_bytes?: number, records_capacity?: number }} [options]
176
+ * `records_capacity` is in *records* (not bytes); the underlying word
177
+ * array is sized large enough to fit that many records plus their pages'
178
+ * bloom-filter headers.
179
+ */
180
+ constructor({ buffer_capacity_bytes = 65536, records_capacity = 4096 } = {}) {
181
+ assert.isNonNegativeInteger(buffer_capacity_bytes, 'buffer_capacity_bytes');
182
+ assert.ok(buffer_capacity_bytes >= 256, 'buffer_capacity_bytes must be >= 256');
183
+ assert.isNonNegativeInteger(records_capacity, 'records_capacity');
184
+ assert.ok(records_capacity >= 1, 'records_capacity must be >= 1');
185
+
186
+ /**
187
+ * Component-bytes ring. Reads (during {@link interpolate}) move the
188
+ * buffer's position cursor; we track the next write position
189
+ * separately in `__buffer_cursor` so reads don't clobber it.
190
+ * @private @type {BinaryBuffer}
191
+ */
192
+ this.#buffer = new BinaryBuffer();
193
+ this.#buffer.fromArrayBuffer(new ArrayBuffer(buffer_capacity_bytes));
194
+
195
+ /** @readonly @type {number} */
196
+ this.buffer_capacity = buffer_capacity_bytes;
197
+
198
+ /**
199
+ * Metadata table flat Uint32Array of pages back-to-back. Sized for
200
+ * the worst case of every page being full; if the workload doesn't
201
+ * fill pages, the wasted slots just sit empty.
202
+ * @private @type {Uint32Array}
203
+ */
204
+ const num_pages = Math.ceil(records_capacity / METADATA_PAGE_SIZE);
205
+ const total_words = num_pages * MAX_PAGE_WORDS;
206
+ this.#records = new Uint32Array(total_words);
207
+
208
+ /** @readonly @type {number} */
209
+ this.records_capacity = records_capacity;
210
+
211
+ /** Total word capacity of the metadata table (used for wrap/overlap math). @readonly @type {number} */
212
+ this.#records_word_capacity = total_words;
213
+
214
+ /**
215
+ * Per-tick metadata, keyed by tick number. Map preserves insertion
216
+ * order, which equals chronological order; the first key is therefore
217
+ * always the oldest tick, mirrored by `__oldest_tick`.
218
+ *
219
+ * Entry shape: `{ byte_start, byte_end, record_start_word,
220
+ * record_word_count, record_count }`.
221
+ *
222
+ * @private @type {Map<number, {byte_start: number, byte_end: number, record_start_word: number, record_word_count: number, record_count: number}>}
223
+ */
224
+ this.#ticks = new Map();
225
+ }
226
+
227
+ /**
228
+ * Open a new tick for recording. May wrap either ring at this point — but
229
+ * never mid-tick, so a single tick's data is always contiguous in both
230
+ * the byte buffer and the metadata table. After wrapping, any old tick
231
+ * whose data overlaps the new write region is squashed (in oldest-first
232
+ * order) and `__oldest_tick` advances.
233
+ *
234
+ * @param {number} tick non-negative integer
235
+ */
236
+ begin_tick(tick) {
237
+ assert.isNonNegativeInteger(tick, 'tick');
238
+ if (this.#current_tick !== -1) {
239
+ throw new Error(`InterpolationLog.begin_tick: previous tick ${this.#current_tick} still open; call end_tick first`);
240
+ }
241
+
242
+ // Wrap the byte buffer if remaining < typical tick size.
243
+ if (this.buffer_capacity - this.#buffer_cursor < this.#max_tick_bytes) {
244
+ this.#buffer_cursor = 0;
245
+ }
246
+ // Wrap the metadata table similarly.
247
+ if (this.#records_word_capacity - this.#records_cursor < this.#max_tick_words) {
248
+ this.#records_cursor = 0;
249
+ }
250
+
251
+ // Estimate the new tick's byte and word ranges (worst-case = max-observed).
252
+ const new_byte_start = this.#buffer_cursor;
253
+ const new_byte_end_est = new_byte_start + this.#max_tick_bytes;
254
+ const new_word_start = this.#records_cursor;
255
+ const new_word_end_est = new_word_start + this.#max_tick_words;
256
+
257
+ // Squash oldest ticks while they overlap. O(1) amortized.
258
+ while (this.#oldest_tick !== -1) {
259
+ const oldest_meta = this.#ticks.get(this.#oldest_tick);
260
+ const byte_overlap =
261
+ oldest_meta.byte_end > new_byte_start &&
262
+ oldest_meta.byte_start < new_byte_end_est;
263
+ const word_overlap =
264
+ (oldest_meta.record_start_word + oldest_meta.record_word_count) > new_word_start &&
265
+ oldest_meta.record_start_word < new_word_end_est;
266
+ if (!byte_overlap && !word_overlap) break;
267
+ this.#ticks.delete(this.#oldest_tick);
268
+ const next = this.#ticks.keys().next();
269
+ this.#oldest_tick = next.done ? -1 : next.value;
270
+ }
271
+
272
+ // Open this tick's first page: write a fresh (zero) bloom filter header.
273
+ this.#current_page_start = this.#records_cursor;
274
+ const records = this.#records;
275
+ records[this.#current_page_start + 0] = 0;
276
+ records[this.#current_page_start + 1] = 0;
277
+ records[this.#current_page_start + 2] = 0;
278
+ records[this.#current_page_start + 3] = 0;
279
+ records[this.#current_page_start + 4] = 0;
280
+ records[this.#current_page_start + 5] = 0;
281
+ records[this.#current_page_start + 6] = 0;
282
+ records[this.#current_page_start + 7] = 0;
283
+ this.#records_cursor += BLOOM_WORDS;
284
+ this.#records_in_current_page = 0;
285
+
286
+ const meta = {
287
+ byte_start: new_byte_start,
288
+ byte_end: new_byte_start,
289
+ record_start_word: this.#current_page_start,
290
+ record_word_count: BLOOM_WORDS,
291
+ record_count: 0,
292
+ };
293
+ this.#ticks.set(tick, meta);
294
+
295
+ if (this.#oldest_tick === -1) {
296
+ this.#oldest_tick = tick;
297
+ }
298
+
299
+ this.#current_tick = tick;
300
+ }
301
+
302
+ /**
303
+ * Begin recording one component. Returns the underlying byte buffer
304
+ * positioned at the next write slot — the caller writes the component
305
+ * payload directly (e.g. via a `BinaryClassSerializationAdapter.serialize`
306
+ * call), then calls {@link end_record} to finalize the (offset, length).
307
+ *
308
+ * Splitting begin/end (vs. taking a write callback) avoids the per-record
309
+ * closure allocation and lets the caller pass the buffer straight to an
310
+ * adapter without wrapping.
311
+ *
312
+ * @param {number} network_id
313
+ * @param {number} type_id component type id (small integer; matches the registry)
314
+ * @returns {BinaryBuffer} the log's byte buffer, positioned for writing the payload
315
+ */
316
+ begin_record(network_id, type_id) {
317
+ assert.isNonNegativeInteger(network_id, 'network_id');
318
+ assert.isNonNegativeInteger(type_id, 'type_id');
319
+ if (this.#current_tick === -1) {
320
+ throw new Error('InterpolationLog.begin_record: no tick is open; call begin_tick first');
321
+ }
322
+ if (this.#pending_record_start !== -1) {
323
+ throw new Error('InterpolationLog.begin_record: previous record still open; call end_record first');
324
+ }
325
+
326
+ // If the current page is full, open a new one before this record's
327
+ // metadata gets written.
328
+ if (this.#records_in_current_page >= METADATA_PAGE_SIZE) {
329
+ const records = this.#records;
330
+ this.#current_page_start = this.#records_cursor;
331
+ records[this.#current_page_start + 0] = 0;
332
+ records[this.#current_page_start + 1] = 0;
333
+ records[this.#current_page_start + 2] = 0;
334
+ records[this.#current_page_start + 3] = 0;
335
+ records[this.#current_page_start + 4] = 0;
336
+ records[this.#current_page_start + 5] = 0;
337
+ records[this.#current_page_start + 6] = 0;
338
+ records[this.#current_page_start + 7] = 0;
339
+ this.#records_cursor += BLOOM_WORDS;
340
+ this.#records_in_current_page = 0;
341
+ }
342
+
343
+ const buf = this.#buffer;
344
+ buf.position = this.#buffer_cursor;
345
+ this.#pending_record_start = buf.position;
346
+ this.#pending_network_id = network_id;
347
+ this.#pending_type_id = type_id;
348
+ return buf;
349
+ }
350
+
351
+ /**
352
+ * Finalize the in-progress record opened by {@link begin_record}. Reads
353
+ * the buffer's current position to compute the payload length, inserts
354
+ * the network_id into the current page's bloom filter, writes the row to
355
+ * the metadata table, and advances the cursors.
356
+ */
357
+ end_record() {
358
+ if (this.#pending_record_start === -1) {
359
+ throw new Error('InterpolationLog.end_record: no record is open; call begin_record first');
360
+ }
361
+
362
+ const buf = this.#buffer;
363
+ const start = this.#pending_record_start;
364
+ const end = buf.position;
365
+ const length = end - start;
366
+ this.#buffer_cursor = end;
367
+
368
+ const records = this.#records;
369
+ const nid = this.#pending_network_id;
370
+
371
+ // Update the current page's bloom filter for fast skip-by-network_id.
372
+ bloom_insert(records, this.#current_page_start, nid);
373
+
374
+ // Write the record at the cursor.
375
+ const at = this.#records_cursor;
376
+ records[at + 0] = nid;
377
+ records[at + 1] = this.#pending_type_id;
378
+ records[at + 2] = start;
379
+ records[at + 3] = length;
380
+ this.#records_cursor += RECORD_WORDS;
381
+ this.#records_in_current_page++;
382
+
383
+ const meta = this.#ticks.get(this.#current_tick);
384
+ meta.byte_end = end;
385
+ meta.record_count++;
386
+ const grown_word_count = this.#records_cursor - meta.record_start_word;
387
+ meta.record_word_count = grown_word_count;
388
+
389
+ // Overrun guard: the begin_tick wrap heuristic sizes off the largest
390
+ // *previously observed* tick. A tick whose footprint exceeds any prior
391
+ // one can advance the cursors into the live range of an older tick.
392
+ // Only check (and squash) when this tick is actively exceeding the
393
+ // envelope steady-state ticks skip both branches.
394
+ const grown_byte_count = end - meta.byte_start;
395
+ if (grown_byte_count > this.#max_tick_bytes || grown_word_count > this.#max_tick_words) {
396
+ while (this.#oldest_tick !== -1 && this.#oldest_tick !== this.#current_tick) {
397
+ const oldest_meta = this.#ticks.get(this.#oldest_tick);
398
+ const byte_overlap =
399
+ end > oldest_meta.byte_start && meta.byte_start < oldest_meta.byte_end;
400
+ const word_overlap =
401
+ this.#records_cursor > oldest_meta.record_start_word &&
402
+ meta.record_start_word < oldest_meta.record_start_word + oldest_meta.record_word_count;
403
+ if (!byte_overlap && !word_overlap) break;
404
+ this.#ticks.delete(this.#oldest_tick);
405
+ const next = this.#ticks.keys().next();
406
+ this.#oldest_tick = next.done ? -1 : next.value;
407
+ }
408
+ }
409
+
410
+ this.#pending_record_start = -1;
411
+ }
412
+
413
+ /**
414
+ * Close the currently-open tick. Updates the max-observed-tick sizes so
415
+ * the next {@link begin_tick} can size its wrap heuristic correctly.
416
+ *
417
+ * Throws if a record is still open — silently dropping the in-progress
418
+ * record's metadata (offset/length) would leak buffer space and produce
419
+ * stale bytes that no one can locate.
420
+ */
421
+ end_tick() {
422
+ if (this.#current_tick === -1) {
423
+ throw new Error('InterpolationLog.end_tick: no tick is open; call begin_tick first');
424
+ }
425
+ if (this.#pending_record_start !== -1) {
426
+ throw new Error(`InterpolationLog.end_tick: record (network_id=${this.#pending_network_id}, type_id=${this.#pending_type_id}) still open; call end_record first`);
427
+ }
428
+
429
+ const meta = this.#ticks.get(this.#current_tick);
430
+
431
+ const tick_bytes = meta.byte_end - meta.byte_start;
432
+ if (tick_bytes > this.#max_tick_bytes) this.#max_tick_bytes = tick_bytes;
433
+ if (meta.record_word_count > this.#max_tick_words) this.#max_tick_words = meta.record_word_count;
434
+
435
+ this.#current_tick = -1;
436
+ }
437
+
438
+ /**
439
+ * @param {number} tick
440
+ * @returns {boolean} true if the tick has live (non-squashed) data
441
+ */
442
+ has_tick(tick) {
443
+ return this.#ticks.has(tick);
444
+ }
445
+
446
+ /**
447
+ * Find a component's stored slice within a tick. Walks the tick's pages,
448
+ * bloom-filter-skipping pages that don't contain `network_id`, and
449
+ * scanning records inside any page where the bloom hits.
450
+ *
451
+ * On success, writes `out[out_offset+0] = byte_offset` and
452
+ * `out[out_offset+1] = byte_length`.
453
+ *
454
+ * @param {number[]|Uint32Array} out
455
+ * @param {number} out_offset
456
+ * @param {number} tick
457
+ * @param {number} network_id
458
+ * @param {number} type_id
459
+ * @returns {boolean} false if the tick is missing/squashed or doesn't carry this component
460
+ */
461
+ locate(out, out_offset, tick, network_id, type_id) {
462
+ const meta = this.#ticks.get(tick);
463
+ if (meta === undefined) return false;
464
+
465
+ const records = this.#records;
466
+ let page_start = meta.record_start_word;
467
+ let records_remaining = meta.record_count;
468
+
469
+ while (records_remaining > 0) {
470
+ const records_in_this_page = Math.min(records_remaining, METADATA_PAGE_SIZE);
471
+
472
+ // Skip the whole page if the bloom filter says network_id isn't in it.
473
+ if (bloom_contains(records, page_start, network_id)) {
474
+ const records_base = page_start + BLOOM_WORDS;
475
+ for (let i = 0; i < records_in_this_page; i++) {
476
+ const r = records_base + i * RECORD_WORDS;
477
+ if (records[r + 0] === network_id && records[r + 1] === type_id) {
478
+ out[out_offset + 0] = records[r + 2];
479
+ out[out_offset + 1] = records[r + 3];
480
+ return true;
481
+ }
482
+ }
483
+ }
484
+
485
+ page_start += BLOOM_WORDS + records_in_this_page * RECORD_WORDS;
486
+ records_remaining -= records_in_this_page;
487
+ }
488
+
489
+ return false;
490
+ }
491
+
492
+ /**
493
+ * Interpolate one component between two ticks via `adapter` and write the
494
+ * result to `out_buffer` at its current position.
495
+ *
496
+ * Outcome by available data:
497
+ * - Both ticks carry the component → adapter blends them at `t`.
498
+ * - Only one carries it adapter is called with the same offset twice
499
+ * (snap to the surviving snapshot; `t` is irrelevant).
500
+ * - Neither carries it → returns false; `out_buffer` is unchanged.
501
+ *
502
+ * @param {BinaryBuffer} out_buffer
503
+ * @param {number} network_id
504
+ * @param {number} type_id
505
+ * @param {number} tick_a
506
+ * @param {number} tick_b
507
+ * @param {number} t
508
+ * @param {BinaryInterpolationAdapter} adapter
509
+ * @returns {boolean} true if a payload was written; false if neither tick has the component
510
+ */
511
+ interpolate(out_buffer, network_id, type_id, tick_a, tick_b, t, adapter) {
512
+ const a = this.locate(scratch_u32, 4, tick_a, network_id, type_id);
513
+ const b = this.locate(scratch_u32, 6, tick_b, network_id, type_id);
514
+
515
+ if (!(a || b)) return false;
516
+
517
+ const offset_a = scratch_u32[4];
518
+ const offset_b = scratch_u32[6];
519
+
520
+ const first = a ? offset_a : offset_b;
521
+ const second = b ? offset_b : offset_a;
522
+
523
+ // Adapter is free to mutate __buffer.position (it sets it to specific
524
+ // offsets to read). Save & restore so subsequent reads/writes aren't
525
+ // surprised by a moved cursor.
526
+ const buffer = this.#buffer;
527
+ const saved = buffer.position;
528
+ adapter.interpolate(out_buffer, buffer, first, second, t);
529
+ buffer.position = saved;
530
+
531
+ return true;
532
+ }
533
+
534
+ /**
535
+ * Number of ticks currently held. Squashed ticks are excluded.
536
+ * @returns {number}
537
+ */
538
+ size() {
539
+ return this.#ticks.size;
540
+ }
541
+
542
+ /**
543
+ * Tick number of the oldest live tick, or -1 if empty.
544
+ * @returns {number}
545
+ */
546
+ oldest_tick() {
547
+ return this.#oldest_tick;
548
+ }
549
+
550
+ /**
551
+ * Drop all recorded ticks. Resets both ring cursors to 0. Useful on
552
+ * reconnect or level transition.
553
+ */
554
+ clear() {
555
+ this.#ticks.clear();
556
+ this.#buffer_cursor = 0;
557
+ this.#records_cursor = 0;
558
+ this.#oldest_tick = -1;
559
+ this.#current_tick = -1;
560
+ this.#pending_record_start = -1;
561
+ this.#current_page_start = -1;
562
+ this.#records_in_current_page = 0;
563
+ }
564
+ }