@woosh/meep-engine 2.169.6 → 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 (1552) 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 +11 -13
  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/shadows/ShadowMapRenderer.d.ts.map +1 -1
  985. package/src/engine/graphics/shadows/ShadowMapRenderer.js +11 -15
  986. package/src/engine/graphics/texture/AttributeDataTexture.d.ts +11 -11
  987. package/src/engine/graphics/texture/AttributeDataTexture.d.ts.map +1 -1
  988. package/src/engine/graphics/texture/AttributeDataTexture.js +14 -14
  989. package/src/engine/graphics/texture/TextureBackedMemoryRegion.d.ts +6 -6
  990. package/src/engine/graphics/texture/TextureBackedMemoryRegion.d.ts.map +1 -1
  991. package/src/engine/graphics/texture/TextureBackedMemoryRegion.js +33 -32
  992. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.d.ts.map +1 -1
  993. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.js +12 -12
  994. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
  995. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +17 -20
  996. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts +1 -1
  997. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.d.ts.map +1 -1
  998. package/src/engine/graphics/texture/atlas/ReferencedTextureAtlas.js +14 -14
  999. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts +10 -10
  1000. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  1001. package/src/engine/graphics/texture/atlas/TextureAtlas.js +13 -14
  1002. package/src/engine/graphics/texture/atlas/gpu/WebGLTextureAtlas.d.ts.map +1 -1
  1003. package/src/engine/graphics/texture/atlas/gpu/WebGLTextureAtlas.js +49 -49
  1004. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +5 -5
  1005. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  1006. package/src/engine/graphics/texture/sampler/Sampler2D.js +6 -6
  1007. package/src/engine/graphics/trail/tube/TubeX.d.ts +6 -6
  1008. package/src/engine/graphics/trail/tube/TubeX.d.ts.map +1 -1
  1009. package/src/engine/graphics/trail/tube/TubeX.js +3 -3
  1010. package/src/engine/graphics/trail/x/RibbonX.d.ts.map +1 -1
  1011. package/src/engine/graphics/trail/x/RibbonX.js +36 -39
  1012. package/src/engine/grid/area/AreaTrigger.d.ts +1 -1
  1013. package/src/engine/grid/area/AreaTrigger.d.ts.map +1 -1
  1014. package/src/engine/grid/area/AreaTrigger.js +8 -7
  1015. package/src/engine/grid/area/TriggerAction.d.ts.map +1 -1
  1016. package/src/engine/grid/area/TriggerAction.js +2 -4
  1017. package/src/engine/grid/grid2transform/GridPosition2TransformSerializationUpgrader_0_1.d.ts.map +1 -1
  1018. package/src/engine/grid/grid2transform/GridPosition2TransformSerializationUpgrader_0_1.js +3 -6
  1019. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts +3 -3
  1020. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts.map +1 -1
  1021. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.js +6 -9
  1022. package/src/engine/grid/position/GridPositionSerializationUpdater_0_1.d.ts.map +1 -1
  1023. package/src/engine/grid/position/GridPositionSerializationUpdater_0_1.js +2 -6
  1024. package/src/engine/grid/position/GridPositionSystem.d.ts.map +1 -1
  1025. package/src/engine/grid/position/GridPositionSystem.js +7 -11
  1026. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
  1027. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +32 -40
  1028. package/src/engine/input/devices/PointerDevice.d.ts +8 -0
  1029. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  1030. package/src/engine/input/devices/PointerDevice.js +10 -4
  1031. package/src/engine/input/ecs/systems/InputControllerSystem.d.ts.map +1 -1
  1032. package/src/engine/input/ecs/systems/InputControllerSystem.js +9 -13
  1033. package/src/engine/input/ecs/systems/InputSystem.d.ts +1 -1
  1034. package/src/engine/input/ecs/systems/InputSystem.d.ts.map +1 -1
  1035. package/src/engine/input/ecs/systems/InputSystem.js +8 -8
  1036. package/src/engine/intelligence/behavior/SelectorBehavior.d.ts.map +1 -1
  1037. package/src/engine/intelligence/behavior/SelectorBehavior.js +13 -17
  1038. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts +10 -10
  1039. package/src/engine/intelligence/behavior/composite/ParallelBehavior.d.ts.map +1 -1
  1040. package/src/engine/intelligence/behavior/composite/ParallelBehavior.js +12 -11
  1041. package/src/engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.d.ts.map +1 -1
  1042. package/src/engine/intelligence/behavior/composite/ParallelBehaviorSerializationAdapter.js +2 -6
  1043. package/src/engine/intelligence/behavior/composite/SequenceBehavior.d.ts.map +1 -1
  1044. package/src/engine/intelligence/behavior/composite/SequenceBehavior.js +19 -22
  1045. package/src/engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.d.ts.map +1 -1
  1046. package/src/engine/intelligence/behavior/composite/SequenceBehaviorSerializationAdapter.js +2 -6
  1047. package/src/engine/intelligence/behavior/decorator/AbstractDecoratorBehavior.d.ts.map +1 -1
  1048. package/src/engine/intelligence/behavior/decorator/AbstractDecoratorBehavior.js +6 -10
  1049. package/src/engine/intelligence/behavior/decorator/InvertStatusBehaviorSerializationAdapter.d.ts.map +1 -1
  1050. package/src/engine/intelligence/behavior/decorator/InvertStatusBehaviorSerializationAdapter.js +2 -6
  1051. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts +5 -5
  1052. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.d.ts.map +1 -1
  1053. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.js +7 -7
  1054. package/src/engine/intelligence/behavior/decorator/RepeatBehaviorSerializationAdapter.d.ts.map +1 -1
  1055. package/src/engine/intelligence/behavior/decorator/RepeatBehaviorSerializationAdapter.js +2 -6
  1056. package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.d.ts +2 -2
  1057. package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.d.ts.map +1 -1
  1058. package/src/engine/intelligence/behavior/decorator/RepeatUntilSuccessBehavior.js +7 -7
  1059. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.d.ts.map +1 -1
  1060. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.js +3 -5
  1061. package/src/engine/intelligence/behavior/primitive/PromiseBehavior.d.ts +2 -2
  1062. package/src/engine/intelligence/behavior/primitive/PromiseBehavior.d.ts.map +1 -1
  1063. package/src/engine/intelligence/behavior/primitive/PromiseBehavior.js +3 -4
  1064. package/src/engine/intelligence/behavior/util/RotationBehavior.d.ts.map +1 -1
  1065. package/src/engine/intelligence/behavior/util/RotationBehavior.js +8 -13
  1066. package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
  1067. package/src/engine/intelligence/blackboard/Blackboard.js +14 -14
  1068. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.d.ts.map +1 -1
  1069. package/src/engine/intelligence/blackboard/BlackboardDynamicStorageAdapter.js +52 -55
  1070. package/src/engine/intelligence/blackboard/BlackboardStack.d.ts.map +1 -1
  1071. package/src/engine/intelligence/blackboard/BlackboardStack.js +12 -16
  1072. package/src/engine/intelligence/blackboard/BlackboardValue.d.ts.map +1 -1
  1073. package/src/engine/intelligence/blackboard/BlackboardValue.js +6 -5
  1074. package/src/engine/intelligence/controller/graph/StateGraph.d.ts +1 -1
  1075. package/src/engine/intelligence/controller/graph/StateGraph.d.ts.map +1 -1
  1076. package/src/engine/intelligence/controller/graph/StateGraph.js +2 -2
  1077. package/src/engine/intelligence/controller/graph/StateGraphDescription.js +6 -8
  1078. package/src/engine/intelligence/controller/graph/StateGraphSystem.d.ts.map +1 -1
  1079. package/src/engine/intelligence/controller/graph/StateGraphSystem.js +1 -5
  1080. package/src/engine/intelligence/mcts/MoveEdge.d.ts.map +1 -1
  1081. package/src/engine/intelligence/mcts/MoveEdge.js +5 -8
  1082. package/src/engine/intelligence/resource/ResourceAllocationBid.d.ts +5 -5
  1083. package/src/engine/intelligence/resource/ResourceAllocationBid.d.ts.map +1 -1
  1084. package/src/engine/intelligence/resource/ResourceAllocationBid.js +6 -6
  1085. package/src/engine/interpolation/InterpolationLog.d.ts.map +1 -1
  1086. package/src/engine/interpolation/InterpolationLog.js +564 -583
  1087. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  1088. package/src/engine/interpolation/InterpolationSystem.js +232 -233
  1089. package/src/engine/knowledge/database/StaticKnowledgeDataTableDescriptor.d.ts.map +1 -1
  1090. package/src/engine/knowledge/database/StaticKnowledgeDataTableDescriptor.js +17 -20
  1091. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts +6 -6
  1092. package/src/engine/logging/elastic/ElasticSearchLogger.d.ts.map +1 -1
  1093. package/src/engine/logging/elastic/ElasticSearchLogger.js +31 -32
  1094. package/src/engine/metrics/ProxyMetricsGateway.d.ts.map +1 -1
  1095. package/src/engine/metrics/ProxyMetricsGateway.js +5 -9
  1096. package/src/engine/navigation/ecs/components/Path.d.ts.map +1 -1
  1097. package/src/engine/navigation/ecs/components/Path.js +30 -32
  1098. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_0_1.d.ts.map +1 -1
  1099. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_0_1.js +2 -6
  1100. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_1_2.d.ts.map +1 -1
  1101. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_1_2.js +2 -6
  1102. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_2_3.d.ts.map +1 -1
  1103. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_2_3.js +34 -38
  1104. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_0_1.d.ts.map +1 -1
  1105. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_0_1.js +2 -6
  1106. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_1_2.d.ts.map +1 -1
  1107. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationUpgrader_1_2.js +2 -6
  1108. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  1109. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +12 -17
  1110. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  1111. package/src/engine/network/NetworkSession.js +2037 -2036
  1112. package/src/engine/network/PriorityFetch.d.ts +6 -6
  1113. package/src/engine/network/PriorityFetch.d.ts.map +1 -1
  1114. package/src/engine/network/PriorityFetch.js +14 -14
  1115. package/src/engine/network/diagnostics/BandwidthMeter.d.ts.map +1 -1
  1116. package/src/engine/network/diagnostics/BandwidthMeter.js +150 -155
  1117. package/src/engine/network/diagnostics/ReplayLog.d.ts +2 -2
  1118. package/src/engine/network/diagnostics/ReplayLog.d.ts.map +1 -1
  1119. package/src/engine/network/diagnostics/ReplayLog.js +132 -137
  1120. package/src/engine/network/diagnostics/SyncTest.d.ts.map +1 -1
  1121. package/src/engine/network/diagnostics/SyncTest.js +146 -151
  1122. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  1123. package/src/engine/network/orchestrator/NetworkPeer.js +1202 -1209
  1124. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +4 -4
  1125. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
  1126. package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +8 -10
  1127. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +7 -7
  1128. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  1129. package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +643 -654
  1130. package/src/engine/network/replication/Replicator.d.ts +24 -24
  1131. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  1132. package/src/engine/network/replication/Replicator.js +405 -410
  1133. package/src/engine/network/sim/ReplicatedComponentRegistry.d.ts.map +1 -1
  1134. package/src/engine/network/sim/ReplicatedComponentRegistry.js +133 -140
  1135. package/src/engine/network/sim/RewindEngine.d.ts.map +1 -1
  1136. package/src/engine/network/sim/RewindEngine.js +179 -182
  1137. package/src/engine/network/sim/SimActionExecutor.d.ts +34 -34
  1138. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  1139. package/src/engine/network/sim/SimActionExecutor.js +305 -306
  1140. package/src/engine/network/sim/SimActionRegistry.d.ts.map +1 -1
  1141. package/src/engine/network/sim/SimActionRegistry.js +121 -128
  1142. package/src/engine/network/sim/SmoothingState.d.ts.map +1 -1
  1143. package/src/engine/network/sim/SmoothingState.js +220 -222
  1144. package/src/engine/network/sim/SpeculationLog.d.ts.map +1 -1
  1145. package/src/engine/network/sim/SpeculationLog.js +79 -84
  1146. package/src/engine/network/state/Baseline.d.ts.map +1 -1
  1147. package/src/engine/network/state/Baseline.js +78 -83
  1148. package/src/engine/network/state/ChangedEntitySet.d.ts.map +1 -1
  1149. package/src/engine/network/state/ChangedEntitySet.js +253 -256
  1150. package/src/engine/network/state/MutationLedger.d.ts.map +1 -1
  1151. package/src/engine/network/state/MutationLedger.js +179 -182
  1152. package/src/engine/network/state/ReplicationSlotTable.d.ts.map +1 -1
  1153. package/src/engine/network/state/ReplicationSlotTable.js +206 -211
  1154. package/src/engine/network/time/AdaptiveRenderDelay.d.ts.map +1 -1
  1155. package/src/engine/network/time/AdaptiveRenderDelay.js +250 -258
  1156. package/src/engine/network/time/JitterBuffer.d.ts.map +1 -1
  1157. package/src/engine/network/time/JitterBuffer.js +113 -116
  1158. package/src/engine/network/time/TimeSync.d.ts.map +1 -1
  1159. package/src/engine/network/time/TimeSync.js +145 -152
  1160. package/src/engine/network/transport/LoopbackTransport.d.ts.map +1 -1
  1161. package/src/engine/network/transport/LoopbackTransport.js +165 -173
  1162. package/src/engine/network/transport/ReliableCommandPipeline.d.ts.map +1 -1
  1163. package/src/engine/network/transport/ReliableCommandPipeline.js +315 -320
  1164. package/src/engine/network/transport/adapters/SimulatedTransport.d.ts.map +1 -1
  1165. package/src/engine/network/transport/adapters/SimulatedTransport.js +235 -241
  1166. package/src/engine/network/transport/adapters/WebSocketTransport.d.ts.map +1 -1
  1167. package/src/engine/network/transport/adapters/WebSocketTransport.js +154 -154
  1168. package/src/engine/network/transport/adapters/WebTransportTransport.d.ts.map +1 -1
  1169. package/src/engine/network/transport/adapters/WebTransportTransport.js +195 -199
  1170. package/src/engine/network/transport/fragments/FragmentAssembler.d.ts.map +1 -1
  1171. package/src/engine/network/transport/fragments/FragmentAssembler.js +286 -291
  1172. package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +1 -1
  1173. package/src/engine/network/transport/fragments/FragmentRetention.js +191 -194
  1174. package/src/engine/physics/body/BodyStorage.d.ts +2 -2
  1175. package/src/engine/physics/body/BodyStorage.d.ts.map +1 -1
  1176. package/src/engine/physics/body/BodyStorage.js +406 -406
  1177. package/src/engine/physics/body/SolverBodyState.d.ts +8 -8
  1178. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  1179. package/src/engine/physics/body/SolverBodyState.js +10 -10
  1180. package/src/engine/physics/broadphase/PairList.d.ts +1 -1
  1181. package/src/engine/physics/broadphase/PairList.d.ts.map +1 -1
  1182. package/src/engine/physics/broadphase/PairList.js +98 -97
  1183. package/src/engine/physics/contact/ManifoldStore.d.ts +2 -2
  1184. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  1185. package/src/engine/physics/contact/ManifoldStore.js +3 -4
  1186. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +2 -2
  1187. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -1
  1188. package/src/engine/physics/ecs/ColliderObserverSystem.js +102 -103
  1189. package/src/engine/physics/ecs/PhysicsSystem.d.ts +2 -2
  1190. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  1191. package/src/engine/physics/ecs/PhysicsSystem.js +248 -249
  1192. package/src/engine/physics/events/ContactEventBuffer.d.ts +1 -1
  1193. package/src/engine/physics/events/ContactEventBuffer.d.ts.map +1 -1
  1194. package/src/engine/physics/events/ContactEventBuffer.js +2 -1
  1195. package/src/engine/physics/fluid/FluidField.d.ts +54 -0
  1196. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  1197. package/src/engine/physics/fluid/FluidField.js +198 -15
  1198. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  1199. package/src/engine/physics/fluid/FluidSimulator.js +14 -4
  1200. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  1201. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +0 -45
  1202. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  1203. package/src/engine/physics/fluid/ecs/FluidSystem.js +8 -144
  1204. package/src/engine/physics/fluid/ecs/FluidWorkerCore.d.ts +43 -0
  1205. package/src/engine/physics/fluid/ecs/FluidWorkerCore.d.ts.map +1 -0
  1206. package/src/engine/physics/fluid/ecs/FluidWorkerCore.js +123 -0
  1207. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +119 -0
  1208. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts.map +1 -0
  1209. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +395 -0
  1210. package/src/engine/physics/fluid/ecs/fluid.worker.d.ts +2 -0
  1211. package/src/engine/physics/fluid/ecs/fluid.worker.d.ts.map +1 -0
  1212. package/src/engine/physics/fluid/ecs/fluid.worker.js +12 -0
  1213. package/src/engine/physics/fluid/ecs/fluid_build_world_to_grid.d.ts +20 -0
  1214. package/src/engine/physics/fluid/ecs/fluid_build_world_to_grid.d.ts.map +1 -0
  1215. package/src/engine/physics/fluid/ecs/fluid_build_world_to_grid.js +32 -0
  1216. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.d.ts +22 -0
  1217. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.d.ts.map +1 -0
  1218. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.js +47 -0
  1219. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts +28 -0
  1220. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -0
  1221. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +85 -0
  1222. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts +11 -0
  1223. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts.map +1 -0
  1224. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.js +16 -0
  1225. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.d.ts +51 -0
  1226. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.d.ts.map +1 -0
  1227. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.js +111 -0
  1228. package/src/engine/physics/fluid/ecs/makeFluidWorker.d.ts +17 -0
  1229. package/src/engine/physics/fluid/ecs/makeFluidWorker.d.ts.map +1 -0
  1230. package/src/engine/physics/fluid/ecs/makeFluidWorker.js +18 -0
  1231. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  1232. package/src/engine/physics/island/IslandBuilder.js +84 -86
  1233. package/src/engine/physics/mls-mpm/MLS_MPM.d.ts.map +1 -1
  1234. package/src/engine/physics/mls-mpm/MLS_MPM.js +24 -26
  1235. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  1236. package/src/engine/physics/queries/PhysicsSurfacePoint.js +98 -100
  1237. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +6 -6
  1238. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  1239. package/src/engine/physics/vehicle/RaycastVehicle.js +357 -344
  1240. package/src/engine/plugin/PluginReferenceContext.d.ts +12 -12
  1241. package/src/engine/plugin/PluginReferenceContext.d.ts.map +1 -1
  1242. package/src/engine/plugin/PluginReferenceContext.js +24 -25
  1243. package/src/engine/scene/Scene.d.ts +5 -5
  1244. package/src/engine/scene/Scene.d.ts.map +1 -1
  1245. package/src/engine/scene/Scene.js +24 -23
  1246. package/src/engine/scene/SceneManager.d.ts +5 -5
  1247. package/src/engine/scene/SceneManager.d.ts.map +1 -1
  1248. package/src/engine/scene/SceneManager.js +13 -14
  1249. package/src/engine/sound/SoundEngine.d.ts +2 -2
  1250. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  1251. package/src/engine/sound/SoundEngine.js +7 -8
  1252. package/src/engine/sound/asset/SoundAssetPlaybackSpec.d.ts.map +1 -1
  1253. package/src/engine/sound/asset/SoundAssetPlaybackSpec.js +16 -20
  1254. package/src/engine/sound/ecs/SoundController.d.ts.map +1 -1
  1255. package/src/engine/sound/ecs/SoundController.js +37 -33
  1256. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +1 -1
  1257. package/src/engine/sound/ecs/SoundControllerSystem.js +5 -11
  1258. package/src/engine/sound/ecs/SoundListener.d.ts.map +1 -1
  1259. package/src/engine/sound/ecs/SoundListener.js +4 -6
  1260. package/src/engine/sound/ecs/SoundListenerSystem.d.ts +6 -6
  1261. package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
  1262. package/src/engine/sound/ecs/SoundListenerSystem.js +22 -23
  1263. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +10 -4
  1264. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  1265. package/src/engine/sound/ecs/audio/AudioEmitter.js +131 -122
  1266. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts +34 -0
  1267. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.d.ts.map +1 -0
  1268. package/src/engine/sound/ecs/audio/AudioEmitterSerializationAdapter.js +68 -0
  1269. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
  1270. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  1271. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +314 -316
  1272. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +1 -1
  1273. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +31 -1
  1274. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  1275. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_0_1.js +2 -6
  1276. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
  1277. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationUpgrader_1_2.js +2 -6
  1278. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +5 -5
  1279. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +1 -1
  1280. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +159 -159
  1281. package/src/engine/sound/material/concrete/RandomSoundMaterial.d.ts.map +1 -1
  1282. package/src/engine/sound/material/concrete/RandomSoundMaterial.js +5 -9
  1283. package/src/engine/sound/material/concrete/SingleSoundMaterial.d.ts.map +1 -1
  1284. package/src/engine/sound/material/concrete/SingleSoundMaterial.js +1 -6
  1285. package/src/engine/sound/material/concrete/SoundMaterialComposition.d.ts.map +1 -1
  1286. package/src/engine/sound/material/concrete/SoundMaterialComposition.js +18 -21
  1287. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.d.ts.map +1 -1
  1288. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +13 -15
  1289. package/src/engine/sound/simulation/core/OccluderBody.d.ts +12 -12
  1290. package/src/engine/sound/simulation/core/OccluderBody.d.ts.map +1 -1
  1291. package/src/engine/sound/simulation/core/OccluderBody.js +74 -74
  1292. package/src/engine/sound/simulation/prototypeAcousticSolver.js +5 -4
  1293. package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts +7 -3
  1294. package/src/engine/sound/sopra/definition/SopraPanningModel.d.ts.map +1 -1
  1295. package/src/engine/sound/sopra/definition/SopraPanningModel.js +34 -20
  1296. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +15 -0
  1297. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
  1298. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -106
  1299. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  1300. package/src/engine/sound/sopra/runtime/EventInstance.js +852 -815
  1301. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts +20 -6
  1302. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
  1303. package/src/engine/sound/sopra/util/buildAttenuationCurve.js +56 -21
  1304. package/src/engine/ui/bindings/DomElementBinding.d.ts.map +1 -1
  1305. package/src/engine/ui/bindings/DomElementBinding.js +15 -18
  1306. package/src/engine/ui/bindings/DomElementBindingDescription.d.ts.map +1 -1
  1307. package/src/engine/ui/bindings/DomElementBindingDescription.js +10 -14
  1308. package/src/engine/ui/bindings/DomElementProcessor.d.ts.map +1 -1
  1309. package/src/engine/ui/bindings/DomElementProcessor.js +5 -7
  1310. package/src/engine/ui/bindings/DomElementProcessorManager.d.ts.map +1 -1
  1311. package/src/engine/ui/bindings/DomElementProcessorManager.js +26 -26
  1312. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.d.ts.map +1 -1
  1313. package/src/engine/ui/bindings/processors/DomElementProcessorTilt3D.js +15 -19
  1314. package/src/engine/ui/cursor/CursorCoalescence.d.ts.map +1 -1
  1315. package/src/engine/ui/cursor/CursorCoalescence.js +11 -14
  1316. package/src/engine/ui/modal/ModalStack.d.ts.map +1 -1
  1317. package/src/engine/ui/modal/ModalStack.js +19 -22
  1318. package/src/engine/ui/notification/AnimatedObjectEmitter.d.ts +4 -4
  1319. package/src/engine/ui/notification/AnimatedObjectEmitter.d.ts.map +1 -1
  1320. package/src/engine/ui/notification/AnimatedObjectEmitter.js +68 -70
  1321. package/src/engine/ui/notification/NotificationManager.d.ts +4 -4
  1322. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  1323. package/src/engine/ui/notification/NotificationManager.js +27 -29
  1324. package/src/engine/ui/notification/ViewEmitter.d.ts.map +1 -1
  1325. package/src/engine/ui/notification/ViewEmitter.js +2 -2
  1326. package/src/engine/ui/scene/SceneGUIContext.d.ts.map +1 -1
  1327. package/src/engine/ui/scene/SceneGUIContext.js +20 -22
  1328. package/src/engine/ui/tiles2d/TileMoveProgram.d.ts.map +1 -1
  1329. package/src/engine/ui/tiles2d/TileMoveProgram.js +5 -7
  1330. package/src/generation/GraphGenerationRule.d.ts.map +1 -1
  1331. package/src/generation/GraphGenerationRule.js +10 -14
  1332. package/src/generation/GridGeneratorConfig.d.ts.map +1 -1
  1333. package/src/generation/GridGeneratorConfig.js +15 -19
  1334. package/src/generation/filtering/CellFilterCellMatcher.d.ts.map +1 -1
  1335. package/src/generation/filtering/CellFilterCellMatcher.js +5 -9
  1336. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.d.ts.map +1 -1
  1337. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +11 -15
  1338. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.d.ts.map +1 -1
  1339. package/src/generation/grid/actions/ContinuousGridCellActionSetTerrainObstacle.js +11 -15
  1340. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +10 -10
  1341. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  1342. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +20 -19
  1343. package/src/generation/markers/matcher/MarkerNodeMatcherByType.d.ts.map +1 -1
  1344. package/src/generation/markers/matcher/MarkerNodeMatcherByType.js +5 -9
  1345. package/src/generation/placement/action/random/CellActionSelectRandom.d.ts.map +1 -1
  1346. package/src/generation/placement/action/random/CellActionSelectRandom.js +11 -16
  1347. package/src/view/ViewGroup.d.ts.map +1 -1
  1348. package/src/view/ViewGroup.js +11 -14
  1349. package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
  1350. package/src/view/common/HTMLElementCacheKey.js +21 -24
  1351. package/src/view/common/TabbedView.d.ts +56 -26
  1352. package/src/view/common/TabbedView.d.ts.map +1 -1
  1353. package/src/view/common/TabbedView.js +128 -30
  1354. package/src/view/common/dnd/DragAndDropContext.d.ts.map +1 -1
  1355. package/src/view/common/dnd/DragAndDropContext.js +11 -12
  1356. package/src/view/common/dnd/Draggable.d.ts +5 -5
  1357. package/src/view/common/dnd/Draggable.d.ts.map +1 -1
  1358. package/src/view/common/dnd/Draggable.js +6 -6
  1359. package/src/view/controller/GuiController.d.ts +1 -1
  1360. package/src/view/controller/GuiController.d.ts.map +1 -1
  1361. package/src/view/controller/GuiController.js +3 -3
  1362. package/src/view/controller/controls/BooleanVector3Control.d.ts.map +1 -1
  1363. package/src/view/controller/controls/BooleanVector3Control.js +2 -2
  1364. package/src/view/controller/controls/NumericIntervalControl.d.ts +1 -1
  1365. package/src/view/controller/controls/NumericIntervalControl.d.ts.map +1 -1
  1366. package/src/view/controller/controls/NumericIntervalControl.js +90 -90
  1367. package/src/view/controller/controls/Vector2Control.d.ts +1 -1
  1368. package/src/view/controller/controls/Vector2Control.d.ts.map +1 -1
  1369. package/src/view/controller/controls/Vector2Control.js +83 -83
  1370. package/src/view/controller/controls/Vector3Control.d.ts +1 -1
  1371. package/src/view/controller/controls/Vector3Control.d.ts.map +1 -1
  1372. package/src/view/controller/controls/Vector3Control.js +90 -90
  1373. package/{editor/view/ecs/components → src/view/controller/dat}/DatGuiController.d.ts +45 -45
  1374. package/src/view/controller/dat/DatGuiController.d.ts.map +1 -0
  1375. package/src/view/controller/dat/DatGuiController.js +216 -0
  1376. package/src/view/currency/CompositeCurrencyLabelView.d.ts.map +1 -1
  1377. package/src/view/currency/CompositeCurrencyLabelView.js +2 -2
  1378. package/src/view/currency/CurrencyDenominationLabelView.d.ts.map +1 -1
  1379. package/src/view/currency/CurrencyDenominationLabelView.js +2 -3
  1380. package/src/view/currency/CurrencyDenominationSpec.d.ts.map +1 -1
  1381. package/src/view/currency/CurrencyDenominationSpec.js +11 -12
  1382. package/src/view/currency/CurrencyDisplaySpec.d.ts.map +1 -1
  1383. package/src/view/currency/CurrencyDisplaySpec.js +5 -9
  1384. package/src/view/elements/ColorPickerView.js +1 -1
  1385. package/src/view/elements/EmptyView.js +1 -1
  1386. package/src/view/elements/MeshPreview.d.ts +1 -1
  1387. package/src/view/elements/MeshPreview.d.ts.map +1 -1
  1388. package/src/view/elements/MeshPreview.js +4 -10
  1389. package/{editor/view/ecs/components/particles/ColorParameterLUTController.d.ts → src/view/elements/drawCheckers.d.ts} +13 -14
  1390. package/src/view/elements/drawCheckers.d.ts.map +1 -0
  1391. package/src/view/elements/drawCheckers.js +33 -0
  1392. package/src/view/elements/progress/segmented/SegmentDefinition.d.ts.map +1 -1
  1393. package/src/view/elements/progress/segmented/SegmentDefinition.js +1 -3
  1394. package/src/view/elements/radial/RadialMenu.d.ts.map +1 -1
  1395. package/src/view/elements/radial/RadialMenu.js +18 -19
  1396. package/src/view/elements/radial/RadialMenuElementDefinition.d.ts.map +1 -1
  1397. package/src/view/elements/radial/RadialMenuElementDefinition.js +95 -87
  1398. package/src/view/elements/radial/RadialText.d.ts +3 -3
  1399. package/src/view/elements/radial/RadialText.d.ts.map +1 -1
  1400. package/src/view/elements/radial/RadialText.js +19 -22
  1401. package/src/view/elements/tiles2d/Tile.d.ts +1 -1
  1402. package/src/view/elements/tiles2d/Tile.d.ts.map +1 -1
  1403. package/src/view/elements/tiles2d/Tile.js +2 -2
  1404. package/src/view/elements/tiles2d/TileGrid.d.ts.map +1 -1
  1405. package/src/view/elements/tiles2d/TileGrid.js +1 -4
  1406. package/src/view/game/achievements/AchievementNotificationView.d.ts.map +1 -1
  1407. package/src/view/game/achievements/AchievementNotificationView.js +2 -3
  1408. package/src/view/interaction/InteractionCommandSet.d.ts.map +1 -1
  1409. package/src/view/interaction/InteractionCommandSet.js +5 -7
  1410. package/src/view/layout/DockDragOverlayView.d.ts +24 -0
  1411. package/src/view/layout/DockDragOverlayView.d.ts.map +1 -0
  1412. package/src/view/layout/DockDragOverlayView.js +63 -0
  1413. package/src/view/layout/DockDropPlan.d.ts +46 -0
  1414. package/src/view/layout/DockDropPlan.d.ts.map +1 -0
  1415. package/src/view/layout/DockDropPlan.js +53 -0
  1416. package/src/view/layout/DockGroupNode.d.ts +29 -0
  1417. package/src/view/layout/DockGroupNode.d.ts.map +1 -0
  1418. package/src/view/layout/DockGroupNode.js +38 -0
  1419. package/src/view/layout/DockLayoutView.d.ts +125 -0
  1420. package/src/view/layout/DockLayoutView.d.ts.map +1 -0
  1421. package/src/view/layout/DockLayoutView.js +1193 -0
  1422. package/src/view/layout/DockPanel.d.ts +38 -0
  1423. package/src/view/layout/DockPanel.d.ts.map +1 -0
  1424. package/src/view/layout/DockPanel.js +51 -0
  1425. package/src/view/layout/DockSide.d.ts +48 -0
  1426. package/src/view/layout/DockSide.d.ts.map +1 -0
  1427. package/src/view/layout/DockSide.js +88 -0
  1428. package/src/view/layout/DockSplitNode.d.ts +59 -0
  1429. package/src/view/layout/DockSplitNode.d.ts.map +1 -0
  1430. package/src/view/layout/DockSplitNode.js +78 -0
  1431. package/src/view/layout/DrawerView.d.ts +53 -0
  1432. package/src/view/layout/DrawerView.d.ts.map +1 -0
  1433. package/src/view/layout/DrawerView.js +163 -0
  1434. package/src/view/layout/FloatingPanelView.d.ts +38 -0
  1435. package/src/view/layout/FloatingPanelView.d.ts.map +1 -0
  1436. package/src/view/layout/FloatingPanelView.js +251 -0
  1437. package/src/view/layout/SplitView.d.ts +73 -0
  1438. package/src/view/layout/SplitView.d.ts.map +1 -0
  1439. package/src/view/layout/SplitView.js +365 -0
  1440. package/src/view/layout/layout.scss +236 -0
  1441. package/src/view/layout/show_popup_menu.d.ts +19 -0
  1442. package/src/view/layout/show_popup_menu.d.ts.map +1 -0
  1443. package/src/view/layout/show_popup_menu.js +81 -0
  1444. package/src/view/minimap/Minimap.d.ts.map +1 -1
  1445. package/src/view/minimap/Minimap.js +2 -6
  1446. package/src/view/minimap/dom/MinimapMarkerView.d.ts.map +1 -1
  1447. package/src/view/minimap/dom/MinimapMarkerView.js +2 -3
  1448. package/src/view/minimap/gl/MarkerGL.d.ts +6 -6
  1449. package/src/view/minimap/gl/MarkerGL.d.ts.map +1 -1
  1450. package/src/view/minimap/gl/MarkerGL.js +8 -9
  1451. package/src/view/minimap/gl/MinimapFogOfWar.d.ts +7 -7
  1452. package/src/view/minimap/gl/MinimapFogOfWar.d.ts.map +1 -1
  1453. package/src/view/minimap/gl/MinimapFogOfWar.js +10 -12
  1454. package/src/view/minimap/gl/MinimapWorldGL.d.ts +15 -15
  1455. package/src/view/minimap/gl/MinimapWorldGL.d.ts.map +1 -1
  1456. package/src/view/minimap/gl/MinimapWorldGL.js +18 -16
  1457. package/src/view/minimap/gl/MinimapWorldLayer.d.ts.map +1 -1
  1458. package/src/view/minimap/gl/MinimapWorldLayer.js +4 -8
  1459. package/src/view/tooltip/DomTooltipManager.d.ts +6 -6
  1460. package/src/view/tooltip/DomTooltipManager.d.ts.map +1 -1
  1461. package/src/view/tooltip/DomTooltipManager.js +21 -22
  1462. package/src/view/tooltip/TooltipManager.d.ts.map +1 -1
  1463. package/src/view/tooltip/TooltipManager.js +6 -8
  1464. package/src/view/tooltip/TooltipView.d.ts +1 -1
  1465. package/src/view/tooltip/TooltipView.d.ts.map +1 -1
  1466. package/src/view/tooltip/TooltipView.js +3 -4
  1467. package/src/view/tooltip/VisualTip.d.ts +5 -5
  1468. package/src/view/tooltip/VisualTip.d.ts.map +1 -1
  1469. package/src/view/tooltip/VisualTip.js +6 -7
  1470. package/src/view/tooltip/gml/GMLEngine.d.ts.map +1 -1
  1471. package/src/view/tooltip/gml/GMLEngine.js +57 -63
  1472. package/src/view/util/DomSizeObserver.d.ts +6 -6
  1473. package/src/view/util/DomSizeObserver.d.ts.map +1 -1
  1474. package/src/view/util/DomSizeObserver.js +27 -20
  1475. package/editor/actions/concrete/PatchTerrainTextureAction.js +0 -153
  1476. package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts +0 -14
  1477. package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts.map +0 -1
  1478. package/editor/process/symbolic/makeStoryTriggerSetAreaDisplay.js +0 -114
  1479. package/editor/tools/TopDownCameraControlTool.d.ts +0 -13
  1480. package/editor/tools/TopDownCameraControlTool.d.ts.map +0 -1
  1481. package/editor/tools/TopDownCameraControlTool.js +0 -56
  1482. package/editor/tools/TransformTool.js +0 -385
  1483. package/editor/tools/paint/prototypeTerrainEditor.js +0 -135
  1484. package/editor/view/EditorView.d.ts +0 -39
  1485. package/editor/view/EditorView.d.ts.map +0 -1
  1486. package/editor/view/EditorView.js +0 -304
  1487. package/editor/view/ecs/ComponentControlFactory.d.ts +0 -19
  1488. package/editor/view/ecs/ComponentControlFactory.d.ts.map +0 -1
  1489. package/editor/view/ecs/ComponentControlFactory.js +0 -45
  1490. package/editor/view/ecs/EntityList.d.ts +0 -22
  1491. package/editor/view/ecs/EntityList.d.ts.map +0 -1
  1492. package/editor/view/ecs/HierarchicalEntityListView.module.scss +0 -13
  1493. package/editor/view/ecs/components/BlackboardController.js +0 -50
  1494. package/editor/view/ecs/components/DatGuiController.d.ts.map +0 -1
  1495. package/editor/view/ecs/components/FogOfWarController.js +0 -78
  1496. package/editor/view/ecs/components/FogOfWarRevealerController.js +0 -44
  1497. package/editor/view/ecs/components/GeneratedArmyController.js +0 -42
  1498. package/editor/view/ecs/components/GridObstacleController.d.ts +0 -14
  1499. package/editor/view/ecs/components/GridObstacleController.d.ts.map +0 -1
  1500. package/editor/view/ecs/components/GridObstacleController.js +0 -72
  1501. package/editor/view/ecs/components/GridPositionController.js +0 -40
  1502. package/editor/view/ecs/components/HeadsUpDisplayController.js +0 -30
  1503. package/editor/view/ecs/components/HighlightController.js +0 -47
  1504. package/editor/view/ecs/components/MeshController.js +0 -122
  1505. package/editor/view/ecs/components/PathFollowerController.js +0 -87
  1506. package/editor/view/ecs/components/TagController.js +0 -80
  1507. package/editor/view/ecs/components/TerrainController.js +0 -215
  1508. package/editor/view/ecs/components/TransformController.js +0 -97
  1509. package/editor/view/ecs/components/UnitShopController.js +0 -112
  1510. package/editor/view/ecs/components/army/ArmyController.js +0 -130
  1511. package/editor/view/ecs/components/gui/GUIElementController.js +0 -117
  1512. package/editor/view/ecs/components/items/ItemContainerController.js +0 -132
  1513. package/editor/view/ecs/components/items/ItemContainerController.stories.js +0 -50
  1514. package/editor/view/ecs/components/items/ItemController.js +0 -52
  1515. package/editor/view/ecs/components/particles/ColorParameterLUTController.d.ts.map +0 -1
  1516. package/editor/view/ecs/components/particles/ColorParameterLUTController.js +0 -444
  1517. package/editor/view/ecs/components/particles/ParameterTrackController.js +0 -51
  1518. package/editor/view/ecs/components/particles/ParticleEmitterController.js +0 -213
  1519. package/editor/view/ecs/components/particles/ParticleLayerController.js +0 -213
  1520. package/editor/view/ecs/components/particles/ScalarParameterLUTController.js +0 -401
  1521. package/editor/view/ecs/components/sockets/AttachmentSocketsController.js +0 -51
  1522. package/editor/view/ecs/components/sound/SoundEmitterController.js +0 -137
  1523. package/editor/view/ecs/components/story/StoryTriggerSetController.js +0 -214
  1524. package/editor/view/ecs/components/unit/AuraController.js +0 -45
  1525. package/editor/view/makeEntityDecorators.d.ts +0 -6
  1526. package/editor/view/makeEntityDecorators.d.ts.map +0 -1
  1527. package/editor/view/v2/SplitView.d.ts +0 -17
  1528. package/editor/view/v2/SplitView.d.ts.map +0 -1
  1529. package/editor/view/v2/ViewManagementSystem.js +0 -0
  1530. package/editor/view/v2/prototypeEditor.js +0 -127
  1531. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.d.ts +0 -2
  1532. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.d.ts.map +0 -1
  1533. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +0 -1570
  1534. package/src/engine/graphics/three/TransfromControls.js +0 -1495
  1535. package/src/view/controller/controls_v2/AbstractPropertyBinding.d.ts +0 -8
  1536. package/src/view/controller/controls_v2/AbstractPropertyBinding.d.ts.map +0 -1
  1537. package/src/view/controller/controls_v2/AbstractPropertyBinding.ts +0 -10
  1538. package/src/view/controller/controls_v2/Controller.d.ts +0 -21
  1539. package/src/view/controller/controls_v2/Controller.d.ts.map +0 -1
  1540. package/src/view/controller/controls_v2/Controller.ts +0 -32
  1541. package/src/view/controller/controls_v2/IPropertyBinding.d.ts +0 -5
  1542. package/src/view/controller/controls_v2/IPropertyBinding.d.ts.map +0 -1
  1543. package/src/view/controller/controls_v2/IPropertyBinding.ts +0 -6
  1544. package/src/view/controller/controls_v2/PrimitivePropertyBinding.d.ts +0 -6
  1545. package/src/view/controller/controls_v2/PrimitivePropertyBinding.d.ts.map +0 -1
  1546. package/src/view/controller/controls_v2/PrimitivePropertyBinding.ts +0 -12
  1547. package/src/view/controller/controls_v2/SliderController.d.ts +0 -6
  1548. package/src/view/controller/controls_v2/SliderController.d.ts.map +0 -1
  1549. package/src/view/controller/controls_v2/SliderController.ts +0 -10
  1550. package/src/view/elements/button/ButtonView.stories.d.ts +0 -2
  1551. package/src/view/elements/button/ButtonView.stories.d.ts.map +0 -1
  1552. package/src/view/elements/button/ButtonView.stories.js +0 -14
@@ -1,654 +1,643 @@
1
- import { assert } from "../../../core/assert.js";
2
- import { BinaryBuffer } from "../../../core/binary/BinaryBuffer.js";
3
- import { binarySearchHighIndex } from "../../../core/collection/array/binarySearchHighIndex.js";
4
- import { fastArrayEquals } from "../../../core/collection/array/fastArrayEquals.js";
5
- import Signal from "../../../core/events/signal/Signal.js";
6
- import { number_compare_ascending } from "../../../core/primitives/numbers/number_compare_ascending.js";
7
- import { NetworkIdentity } from "../ecs/components/NetworkIdentity.js";
8
- import { make_owner_authorization } from "../ecs/owner_authorization.js";
9
- import { Replicator } from "../replication/Replicator.js";
10
- import { AlwaysRelevantScope } from "../replication/ScopeFilter.js";
11
- import { RewindEngine } from "../sim/RewindEngine.js";
12
- import { NetworkPeer } from "./NetworkPeer.js";
13
-
14
- /**
15
- * Server-authoritative orchestrator with deterministic per-tick rollback.
16
- *
17
- * Encapsulates the algorithm previously inlined in
18
- * `app/src/prototype/network_prototype_prediction.js`:
19
- *
20
- * 1. Inbound action packets do NOT execute on arrival. Instead, a deferral
21
- * hook on the {@link Replicator} drops them into a per-tick pending log
22
- * tagged with `(client_frame, sender_id, type_id, payload_bytes)`.
23
- * 2. Once per server tick, `tick(current_frame)` consumes the pending log:
24
- * - Rejects entries older than the action_log's rewindable window.
25
- * - Determines the oldest pending frame `replay_start`.
26
- * - Rewinds the server world back to end-of-(replay_start - 1) via the
27
- * action_log's prior-state captures (see {@link RewindEngine}).
28
- * - Replays forward `[replay_start, current_frame]`. For each frame `f`:
29
- * - Read historical actions out of `action_log[f]` BEFORE
30
- * `begin_frame(f)` recycles the buffer.
31
- * - Append pending entries for `f`.
32
- * - Stable-sort the merged list by `sender_id` (so multi-client order
33
- * is deterministic across peers — relies on per-record sender_id in
34
- * the action log).
35
- * - `executor.execute` each in sorted order, then run the user-
36
- * supplied local sim via {@link onLocalSim}.
37
- * - Clear pending.
38
- *
39
- * Net effect: a client action tagged at client tick K lands on the server as
40
- * if applied against end-of-K-1 server state, regardless of arrival timing
41
- * or order. Both peers compute identical world states for identical inputs.
42
- *
43
- * The user wires this orchestrator up by:
44
- * 1. Constructing with a world, replication setup, and (typically) an
45
- * {@link OwnerAwareScope} filter so client-owned-entity actions are
46
- * not echoed back.
47
- * 2. Calling {@link connect_peer} for each connected client.
48
- * 3. Subscribing to {@link onLocalSim} for per-frame server-side game logic
49
- * (e.g. clamps, physics, collision) and {@link onTickComplete} for
50
- * end-of-tick work (e.g. sending AUTH_STATE).
51
- * 4. Calling {@link tick} once per server frame.
52
- *
53
- * @author Alex Goldring
54
- * @copyright Company Named Limited (c) 2026
55
- */
56
- export class ServerAuthoritativeServer {
57
- #pending_frames;
58
- #pending_senders;
59
- #pending_type_ids;
60
- #pending_payloads;
61
- #pending_referenced_frames;
62
- #peer_max_received_frame;
63
- #historical_scratch;
64
- #sort_scratch;
65
- #payload_buf;
66
- #pending_dropped;
67
-
68
-
69
- /**
70
- * @param {{
71
- * world: EntityComponentDataset,
72
- * binary_registry: BinarySerializationRegistry,
73
- * replicated_components: Function[],
74
- * action_classes: Function[],
75
- * scope_filter?: object,
76
- * frame_capacity?: number,
77
- * initial_buffer_size?: number,
78
- * simulation_delay_ticks?: number,
79
- * }} options
80
- *
81
- * `simulation_delay_ticks`: server-side input buffer (Overwatch-style).
82
- * When > 0, {@link tick}(wall_frame) simulates
83
- * `sim_frame = wall_frame - simulation_delay_ticks`. Pending actions
84
- * tagged for `> sim_frame` stay queued and apply when `sim_frame`
85
- * catches up — most client actions land before the server needs
86
- * them, so rollback rarely fires. Costs N ticks of perceived
87
- * input-to-feedback latency (client prediction hides it). Default 0
88
- * reproduces pre-feature behavior.
89
- */
90
- constructor({
91
- world,
92
- binary_registry,
93
- replicated_components,
94
- action_classes,
95
- scope_filter = new AlwaysRelevantScope(),
96
- frame_capacity = 32,
97
- initial_buffer_size = 1024,
98
- simulation_delay_ticks = 0,
99
- max_pending_future_lead = 256,
100
- max_pending_total = 4096,
101
- identity_class = NetworkIdentity,
102
- server_peer_id = -1,
103
- }) {
104
- assert.isNonNegativeInteger(simulation_delay_ticks, 'simulation_delay_ticks');
105
- assert.isPositiveInteger(max_pending_future_lead, 'max_pending_future_lead');
106
- assert.isPositiveInteger(max_pending_total, 'max_pending_total');
107
- /** @type {NetworkPeer} */
108
- this.peer = new NetworkPeer({
109
- world,
110
- binary_registry,
111
- replicated_components,
112
- action_classes,
113
- scope_filter,
114
- frame_capacity,
115
- initial_buffer_size,
116
- });
117
-
118
- /** @type {EntityComponentDataset} */
119
- this.world = world;
120
- /** @type {SimActionExecutor} */
121
- this.executor = this.peer.executor;
122
-
123
- // Secure-by-default inbound authorization: a remote peer may only mutate
124
- // entities it owns (identity.owner_peer_id === sender); the authoritative
125
- // server (sender === server_peer_id) may mutate anything. Without this a
126
- // connected peer can craft an action targeting another peer's — or a
127
- // server-owned — entity and drive it. Games that intentionally allow
128
- // shared mutation can overwrite `executor.authorize` (e.g. set it to null)
129
- // after construction.
130
- this.executor.authorize = make_owner_authorization({
131
- world,
132
- identity_class,
133
- server_peer_id,
134
- });
135
- /** @type {ReplicationSlotTable} */
136
- this.slot_table = this.peer.slot_table;
137
- /** @type {ActionLog} */
138
- this.action_log = this.peer.action_log;
139
- /** @type {SimActionRegistry} */
140
- this.action_registry = this.peer.action_registry;
141
- /** @type {ReplicatedComponentRegistry} */
142
- this.component_registry = this.peer.component_registry;
143
-
144
- /** @type {RewindEngine} */
145
- this.rewind_engine = new RewindEngine({
146
- action_log: this.action_log,
147
- world: this.world,
148
- component_registry: this.component_registry,
149
- });
150
-
151
- /**
152
- * Highest client-tagged frame received (across all peers).
153
- * RECEIPT semantic — under `simulation_delay_ticks > 0` this
154
- * may be ahead of {@link current_sim_frame}. Tag AUTH_STATE
155
- * with `current_sim_frame`, not this.
156
- * @type {number}
157
- */
158
- this.last_client_frame_processed = -1;
159
-
160
- /**
161
- * Number of ticks the server's simulation lags behind the caller's
162
- * wall frame. See constructor doc.
163
- * @type {number}
164
- */
165
- this.simulation_delay_ticks = simulation_delay_ticks;
166
-
167
- /**
168
- * Upper bound on how far ahead of the server's own simulation a peer
169
- * may tag an inbound action. `frame_number` is an attacker-controlled
170
- * varint; without a ceiling, future-tagged entries accumulate in the
171
- * pending log unbounded (only the past side is trimmed in {@link tick}).
172
- * A well-behaved client tags at most ~`simulation_delay_ticks` ahead
173
- * plus a jitter lead, so the accept window is
174
- * `current_sim_frame + simulation_delay_ticks + max_pending_future_lead`.
175
- * @type {number}
176
- */
177
- this.max_pending_future_lead = max_pending_future_lead;
178
-
179
- /**
180
- * Absolute backstop on the number of buffered pending entries. Even
181
- * within the future window a peer can vary an action's payload to
182
- * defeat the per-frame dedup and pile up many distinct entries; this
183
- * caps total memory (and the dedup scan cost) regardless. Legitimate
184
- * pending depth is tiny (≈ delay × actions/frame × peers), so this only
185
- * ever trips under abuse. Raise it for very high concurrent-player
186
- * counts.
187
- * @type {number}
188
- */
189
- this.max_pending_total = max_pending_total;
190
-
191
- /**
192
- * Most recently simulated frame. `-1` during warmup
193
- * (`wall_frame < simulation_delay_ticks`), advances by 1 per
194
- * `tick()` after.
195
- * @type {number}
196
- */
197
- this.current_sim_frame = -1;
198
-
199
- // Per-tick pending input log. Parallel arrays (no per-action object
200
- // alloc) of newly-arrived action records, plus a sorted unique set
201
- // of the frames they reference.
202
- this.#pending_frames = /** @type {number[]} */ ([]);
203
- this.#pending_senders = /** @type {number[]} */ ([]);
204
- this.#pending_type_ids = /** @type {number[]} */ ([]);
205
- this.#pending_payloads = /** @type {Uint8Array[]} */ ([]);
206
- this.#pending_referenced_frames = /** @type {number[]} */ ([]);
207
-
208
- /**
209
- * Running watermark per peer: highest client-tagged frame received
210
- * from each peer. {@link buffer_depth_for_peer} reads this minus
211
- * {@link current_sim_frame} to drive time-dilation feedback.
212
- * @private @type {Map<number, number>}
213
- */
214
- this.#peer_max_received_frame = new Map();
215
-
216
- // Scratch for the replay loop.
217
- this.#historical_scratch = /** @type {Array<{type_id:number, sender_id:number, payload:Uint8Array}>} */ ([]);
218
- this.#sort_scratch = /** @type {Array<{sender_id:number, type_id:number, payload:Uint8Array}>} */ ([]);
219
- this.#payload_buf = new BinaryBuffer();
220
- this.#payload_buf.setCapacity(64);
221
-
222
- /**
223
- * Count of inbound pending entries dropped by the future-lead / total
224
- * bounds. See {@link onPendingActionDropped}.
225
- * @private @type {number}
226
- */
227
- this.#pending_dropped = 0;
228
-
229
- // Switch the Replicator to deferred-execute mode: incoming actions
230
- // accumulate in pending until tick() drains them.
231
- this.peer.replicator.on_pending_action = (peer_id, frame_number, type_id, buf, off, len) => {
232
- const payload = new Uint8Array(len);
233
- payload.set(buf.raw_bytes.subarray(off, off + len));
234
- this.#pending_add(frame_number, peer_id, type_id, payload);
235
- if (frame_number > this.last_client_frame_processed) {
236
- this.last_client_frame_processed = frame_number;
237
- }
238
- const prev = this.#peer_max_received_frame.get(peer_id);
239
- if (prev === undefined || frame_number > prev) {
240
- this.#peer_max_received_frame.set(peer_id, frame_number);
241
- }
242
- };
243
-
244
- /**
245
- * Fires once per frame during the replay loop, AFTER all merged
246
- * actions for that frame have been applied and BEFORE the action_log
247
- * frame is closed. Use this for server-authoritative local sim
248
- * (clamps, collision, AI step, etc.). The current world state
249
- * reflects all inputs for this frame; the local sim should be
250
- * idempotent under repeated application (because it may run many
251
- * times under rollback).
252
- *
253
- * Args: `(frame_number)`.
254
- * @type {Signal}
255
- */
256
- this.onLocalSim = new Signal();
257
-
258
- /**
259
- * Fires after `tick()` completes (pending drained, all frames in the
260
- * replay window applied). Use for end-of-tick work: sending
261
- * AUTH_STATE, recording diagnostics, etc.
262
- *
263
- * Args: `(current_frame)`.
264
- * @type {Signal}
265
- */
266
- this.onTickComplete = new Signal();
267
-
268
- /**
269
- * Fired when a tick triggers an actual rewind (i.e. the replay
270
- * window includes already-committed frames). Args:
271
- * `(committed_top, replay_target, depth)` where depth is
272
- * `committed_top - replay_target` (number of frames undone).
273
- *
274
- * Diagnostic: counts rollbacks and characterizes how deep they
275
- * went, which directly maps to how late client actions arrived.
276
- * Tick paths that ran without a rewind (steady-state, no pending
277
- * for past frames) do NOT fire this.
278
- * @type {Signal}
279
- */
280
- this.onRewind = new Signal();
281
-
282
- /**
283
- * Fired when an inbound pending action is dropped by the future-lead or
284
- * total-capacity bound (i.e. a far-future frame tag or a flood). Args:
285
- * `(sender_id, frame_number, reason)` where `reason` is `'future'` or
286
- * `'capacity'`. Observable so an abusive peer can be logged / kicked;
287
- * the dropped action is simply not buffered.
288
- * @type {Signal}
289
- */
290
- this.onPendingActionDropped = new Signal();
291
- }
292
-
293
- /**
294
- * Connect a client peer over a transport. Subsequent action packets from
295
- * this peer will be buffered in the pending log via the deferral hook
296
- * and consumed on the next `tick()`.
297
- *
298
- * @param {number} peer_id
299
- * @param {object} transport
300
- */
301
- connect_peer(peer_id, transport) {
302
- this.peer.connect_peer(peer_id, transport);
303
- }
304
-
305
- /**
306
- * Disconnect a previously-connected peer.
307
- * @param {number} peer_id
308
- */
309
- disconnect_peer(peer_id) {
310
- this.peer.disconnect_peer(peer_id);
311
- }
312
-
313
- /**
314
- * Forward to {@link NetworkPeer#send_auth_state}. Typically called from
315
- * an {@link onTickComplete} subscriber.
316
- *
317
- * @param {number} peer_id
318
- * @param {number} frame_number
319
- * @param {number} network_id
320
- * @param {(buf: BinaryBuffer) => void} write_fn
321
- */
322
- send_auth_state(peer_id, frame_number, network_id, write_fn) {
323
- return this.peer.send_auth_state(peer_id, frame_number, network_id, write_fn);
324
- }
325
-
326
- /**
327
- * Channel accessor for the user's manual packet plumbing (e.g. sending
328
- * empty ACK packets in the prototype). Most callers won't need this.
329
- * @param {number} peer_id
330
- */
331
- channel_for(peer_id) {
332
- return this.peer.channel_for(peer_id);
333
- }
334
-
335
- /**
336
- * Send the current buffer-depth observation for one peer to that peer.
337
- * Convenience wrapper around {@link NetworkPeer#send_time_dilation_feedback}
338
- * that pulls the depth from {@link buffer_depth_for_peer}. Typically
339
- * invoked once per tick (or every few ticks) from an
340
- * {@link onTickComplete} subscriber.
341
- *
342
- * @param {number} peer_id
343
- */
344
- send_time_dilation_feedback(peer_id) {
345
- this.peer.send_time_dilation_feedback(peer_id, this.buffer_depth_for_peer(peer_id));
346
- }
347
-
348
- /**
349
- * Drive the rollback flow for one tick.
350
- *
351
- * With `simulation_delay_ticks = 0` (default), simulates the caller's
352
- * `wall_frame` and drains pending. With `> 0`, simulates
353
- * `sim_frame = wall_frame - simulation_delay_ticks` and holds
354
- * `frame > sim_frame` pending until the sim catches up. Warmup
355
- * (`sim_frame < 0`) is a no-op; `onTickComplete` does not fire.
356
- *
357
- * `onTickComplete` fires with `sim_frame` (not `wall_frame`).
358
- *
359
- * @param {number} current_frame the caller's wall frame
360
- */
361
- tick(current_frame) {
362
- assert.isNonNegativeInteger(current_frame, 'current_frame');
363
-
364
- const sim_frame = current_frame - this.simulation_delay_ticks;
365
-
366
- if (sim_frame < 0) return; // warmup
367
-
368
- // 1. Drop pending entries outside the action_log's rewindable window.
369
- const window_oldest = Math.max(0, sim_frame - this.action_log.frame_capacity + 1);
370
- if (this.#pending_frames.length > 0 && this.#pending_referenced_frames[0] < window_oldest) {
371
- this.#pending_trim_to_window(window_oldest);
372
- }
373
-
374
- // 2. Pick the replay window. `__pending_referenced_frames` is
375
- // sorted ascending; entries `> sim_frame` stay buffered.
376
- let replay_start = sim_frame;
377
- const refs = this.#pending_referenced_frames;
378
- if (refs.length > 0 && refs[0] <= sim_frame) {
379
- replay_start = refs[0];
380
- }
381
-
382
- // 3. Rewind only if the replay window covers committed frames.
383
- const committed_top = sim_frame - 1;
384
- if (replay_start <= committed_top) {
385
- this.rewind_engine.rewind_to(committed_top, replay_start - 1);
386
- this.onRewind.send3(committed_top, replay_start - 1, committed_top - (replay_start - 1));
387
- }
388
-
389
- // 4. Replay [replay_start, sim_frame].
390
- for (let f = replay_start; f <= sim_frame; f++) {
391
- this.#replay_frame(f);
392
- }
393
-
394
- // 5. Keep only `frame > sim_frame` pending (future buffer).
395
- this.#pending_filter_to_future(sim_frame);
396
-
397
- // 6. Publish sim_frame before flushing, so onTickComplete handlers
398
- // reading current_sim_frame see the just-advanced value.
399
- this.current_sim_frame = sim_frame;
400
- this.peer.flush_outbound(sim_frame);
401
- this.onTickComplete.send1(sim_frame);
402
- }
403
-
404
- /**
405
- * Current input-buffer depth for a peer: `max_received_frame - current_sim_frame`.
406
- * Positive peer is sending ahead of sim (good); zero/negative ⇒
407
- * peer is falling behind. Returns 0 if no inputs from this peer.
408
- * During warmup returns the count of received frames.
409
- *
410
- * @param {number} peer_id
411
- * @returns {number}
412
- */
413
- buffer_depth_for_peer(peer_id) {
414
- const max = this.#peer_max_received_frame.get(peer_id);
415
- if (max === undefined) return 0;
416
- if (this.current_sim_frame < 0) return max + 1;
417
- return max - this.current_sim_frame;
418
- }
419
-
420
- /** @private */
421
- #replay_frame(f) {
422
- this.#sort_scratch.length = 0;
423
-
424
- // Read historical actions out of action_log[f] BEFORE begin_frame(f)
425
- // recycles the buffer. The sender_id is recorded per-record (see
426
- // SimActionExecutor), so the stable sort below produces deterministic
427
- // order regardless of how history was originally interleaved.
428
- this.#read_historical(f, this.#historical_scratch);
429
- for (let i = 0; i < this.#historical_scratch.length; i++) {
430
- const h = this.#historical_scratch[i];
431
- this.#sort_scratch.push({ sender_id: h.sender_id, type_id: h.type_id, payload: h.payload });
432
- }
433
-
434
- // Append newly-arrived pending actions for this frame, deduplicating
435
- // against historical entries. Retransmissions are routine on the
436
- // wire `Replicator.pack_for_peer` packs every frame in
437
- // [last_acked + 1, current_frame] each tick, so an action lives in
438
- // every outgoing packet for the round-trip duration of its ack.
439
- // The server receives each retransmission as a fresh pending entry;
440
- // without dedup, the rollback flow merges it with the historical
441
- // record left over from the previous apply and executes the action
442
- // twice (and three times, four times… until the ack arrives).
443
- //
444
- // Dedup key: (sender_id, type_id, payload bytes). Two actions are
445
- // "the same arrival" if all three match. (Same sender_id and
446
- // type_id but different payload = legitimately distinct actions
447
- // for the same frame, e.g. fire + move in the same tick.)
448
- for (let i = 0; i < this.#pending_frames.length; i++) {
449
- if (this.#pending_frames[i] !== f) continue;
450
- const p_sender = this.#pending_senders[i];
451
- const p_type = this.#pending_type_ids[i];
452
- const p_payload = this.#pending_payloads[i];
453
- let is_dup = false;
454
- for (let j = 0; j < this.#historical_scratch.length; j++) {
455
- const h = this.#historical_scratch[j];
456
- if (h.sender_id !== p_sender) continue;
457
- if (h.type_id !== p_type) continue;
458
- if (fastArrayEquals(h.payload, p_payload)) { is_dup = true; break; }
459
- }
460
- if (is_dup) continue;
461
- this.#sort_scratch.push({ sender_id: p_sender, type_id: p_type, payload: p_payload });
462
- }
463
-
464
- // Stable sort by sender. Array.prototype.sort is stable since ES2019;
465
- // equal sender_ids preserve insertion order, with historical entries
466
- // appearing before newly-arrived pending entries for the same sender.
467
- this.#sort_scratch.sort((a, b) => a.sender_id - b.sender_id);
468
-
469
- // Open the frame, execute all, close.
470
- this.action_log.begin_frame(f);
471
- for (let i = 0; i < this.#sort_scratch.length; i++) {
472
- const s = this.#sort_scratch[i];
473
- this.#apply_payload(s.type_id, s.sender_id, s.payload);
474
- }
475
- // Notify user code so server-side local sim runs at the right point
476
- // in the frame (after inputs applied, before frame closed). Idempotent
477
- // under repeated application across rollback replays.
478
- this.onLocalSim.send1(f);
479
- this.action_log.end_frame();
480
- }
481
-
482
- /** @private */
483
- #apply_payload(type_id, sender_id, payload) {
484
- const klass = this.action_registry.klass_for(type_id);
485
- if (klass === undefined) return;
486
- const action = this.action_registry.acquire(klass);
487
- try {
488
- if (this.#payload_buf.raw_bytes.length < payload.length) {
489
- this.#payload_buf.setCapacity(payload.length);
490
- }
491
- this.#payload_buf.position = 0;
492
- this.#payload_buf.writeBytes(payload, 0, payload.length);
493
- this.#payload_buf.position = 0;
494
- action.deserialize(this.#payload_buf);
495
- this.executor.execute(action, sender_id);
496
- } finally {
497
- this.action_registry.release(action);
498
- }
499
- }
500
-
501
- /** @private */
502
- #read_historical(frame_number, out_array) {
503
- out_array.length = 0;
504
- if (!this.action_log.has_frame(frame_number)) return;
505
- const buf = this.action_log.buffer_for(frame_number); // sets position = 0
506
- const end = this.action_log.write_end_for(frame_number);
507
- while (buf.position < end) {
508
- const prior_count = buf.readUintVar();
509
- for (let i = 0; i < prior_count; i++) {
510
- buf.readUintVar(); // entity_id
511
- buf.readUint8(); // component_type_id
512
- const plen = buf.readUint32();
513
- buf.position += plen;
514
- }
515
- const type_id = buf.readUint8();
516
- const sender_id = buf.readUint8();
517
- const payload_len = buf.readUint32();
518
- const payload = new Uint8Array(payload_len);
519
- payload.set(buf.raw_bytes.subarray(buf.position, buf.position + payload_len));
520
- buf.position += payload_len;
521
- out_array.push({ type_id, sender_id, payload });
522
- }
523
- }
524
-
525
- /**
526
- * Number of inbound pending actions dropped by the future-lead / total
527
- * bounds so far. See {@link onPendingActionDropped}.
528
- * @returns {number}
529
- */
530
- pending_dropped_count() {
531
- return this.#pending_dropped;
532
- }
533
-
534
- /** @private */
535
- #pending_add(frame_number, sender_id, type_id, payload) {
536
- // Reject far-future frame numbers. `frame_number` is an attacker-
537
- // controlled varint; tick() only trims the PAST side of the pending
538
- // log, so without this ceiling a peer can pin unbounded memory (and
539
- // O(n) per-insert cost) by tagging actions near 2^32. A well-behaved
540
- // client tags at most ~simulation_delay_ticks ahead plus jitter lead.
541
- // Real runtime check — asserts strip in prod.
542
- const future_horizon = this.current_sim_frame + this.simulation_delay_ticks + this.max_pending_future_lead;
543
- if (frame_number > future_horizon) {
544
- this.#pending_dropped++;
545
- this.onPendingActionDropped.send3(sender_id, frame_number, 'future');
546
- return;
547
- }
548
- // Absolute backstop: even within the future window a peer can vary the
549
- // payload to defeat the dedup below and pile up distinct entries.
550
- if (this.#pending_frames.length >= this.max_pending_total) {
551
- this.#pending_dropped++;
552
- this.onPendingActionDropped.send3(sender_id, frame_number, 'capacity');
553
- return;
554
- }
555
-
556
- // Dedup against other pending entries for the same frame. Multiple
557
- // retransmission packets routinely arrive in the same c2s.tick
558
- // window when ack RTT exceeds tick period; each carries the same
559
- // action records for the same frames. The __replay_frame dedup
560
- // catches retransmissions across server ticks (where historical
561
- // already has the record), but the SAME server tick can collect
562
- // multiple identical pending entries before historical exists. So
563
- // also dedup here, against everything already in pending for this
564
- // frame. Match on (sender_id, type_id, payload bytes) — distinct
565
- // payloads from the same sender at the same frame are legitimately
566
- // different actions (move + fire) and both flow through.
567
- for (let i = 0; i < this.#pending_frames.length; i++) {
568
- if (this.#pending_frames[i] !== frame_number) continue;
569
- if (this.#pending_senders[i] !== sender_id) continue;
570
- if (this.#pending_type_ids[i] !== type_id) continue;
571
- if (fastArrayEquals(this.#pending_payloads[i], payload)) return; // duplicate already in pending; drop
572
- }
573
-
574
- this.#pending_frames.push(frame_number);
575
- this.#pending_senders.push(sender_id);
576
- this.#pending_type_ids.push(type_id);
577
- this.#pending_payloads.push(payload);
578
- this.#track_referenced_frame(frame_number);
579
- }
580
-
581
- /**
582
- * Insert `frame_number` into the monotonically-sorted referenced-frames
583
- * index, leaving it untouched if already present. Single source of truth
584
- * for the three sites (per-add, post-trim, post-filter) that maintain
585
- * this index, so the binary-search invariant and uniqueness check live
586
- * in one place.
587
- * @param {number} frame_number
588
- * @private
589
- */
590
- #track_referenced_frame(frame_number) {
591
- const arr = this.#pending_referenced_frames;
592
- const i = binarySearchHighIndex(arr, frame_number, number_compare_ascending);
593
- if (arr[i] !== frame_number) arr.splice(i, 0, frame_number);
594
- }
595
-
596
- /** @private */
597
- #pending_trim_to_window(window_oldest) {
598
- let kept = 0;
599
- for (let i = 0; i < this.#pending_frames.length; i++) {
600
- if (this.#pending_frames[i] >= window_oldest) {
601
- this.#pending_frames[kept] = this.#pending_frames[i];
602
- this.#pending_senders[kept] = this.#pending_senders[i];
603
- this.#pending_type_ids[kept] = this.#pending_type_ids[i];
604
- this.#pending_payloads[kept] = this.#pending_payloads[i];
605
- kept++;
606
- }
607
- }
608
- this.#pending_frames.length = kept;
609
- this.#pending_senders.length = kept;
610
- this.#pending_type_ids.length = kept;
611
- this.#pending_payloads.length = kept;
612
- this.#pending_referenced_frames.length = 0;
613
- for (const f of this.#pending_frames) {
614
- this.#track_referenced_frame(f);
615
- }
616
- }
617
-
618
- /** @private */
619
- #pending_clear() {
620
- this.#pending_frames.length = 0;
621
- this.#pending_senders.length = 0;
622
- this.#pending_type_ids.length = 0;
623
- this.#pending_payloads.length = 0;
624
- this.#pending_referenced_frames.length = 0;
625
- }
626
-
627
- /**
628
- * Drop pending entries with `frame <= keep_threshold`, keeping the
629
- * rest. Same structural pattern as {@link __pending_trim_to_window}
630
- * but with the inequality flipped — used at the end of {@link tick}
631
- * to retain future-tagged inputs under `simulation_delay_ticks > 0`.
632
- * @private
633
- */
634
- #pending_filter_to_future(keep_threshold) {
635
- let kept = 0;
636
- for (let i = 0; i < this.#pending_frames.length; i++) {
637
- if (this.#pending_frames[i] > keep_threshold) {
638
- this.#pending_frames[kept] = this.#pending_frames[i];
639
- this.#pending_senders[kept] = this.#pending_senders[i];
640
- this.#pending_type_ids[kept] = this.#pending_type_ids[i];
641
- this.#pending_payloads[kept] = this.#pending_payloads[i];
642
- kept++;
643
- }
644
- }
645
- this.#pending_frames.length = kept;
646
- this.#pending_senders.length = kept;
647
- this.#pending_type_ids.length = kept;
648
- this.#pending_payloads.length = kept;
649
- this.#pending_referenced_frames.length = 0;
650
- for (const f of this.#pending_frames) {
651
- this.#track_referenced_frame(f);
652
- }
653
- }
654
- }
1
+ import { assert } from "../../../core/assert.js";
2
+ import { BinaryBuffer } from "../../../core/binary/BinaryBuffer.js";
3
+ import { binarySearchHighIndex } from "../../../core/collection/array/binarySearchHighIndex.js";
4
+ import { fastArrayEquals } from "../../../core/collection/array/fastArrayEquals.js";
5
+ import Signal from "../../../core/events/signal/Signal.js";
6
+ import { number_compare_ascending } from "../../../core/primitives/numbers/number_compare_ascending.js";
7
+ import { NetworkIdentity } from "../ecs/components/NetworkIdentity.js";
8
+ import { make_owner_authorization } from "../ecs/owner_authorization.js";
9
+ import { Replicator } from "../replication/Replicator.js";
10
+ import { AlwaysRelevantScope } from "../replication/ScopeFilter.js";
11
+ import { RewindEngine } from "../sim/RewindEngine.js";
12
+ import { NetworkPeer } from "./NetworkPeer.js";
13
+
14
+ /**
15
+ * Server-authoritative orchestrator with deterministic per-tick rollback.
16
+ *
17
+ * Encapsulates the algorithm previously inlined in
18
+ * `app/src/prototype/network_prototype_prediction.js`:
19
+ *
20
+ * 1. Inbound action packets do NOT execute on arrival. Instead, a deferral
21
+ * hook on the {@link Replicator} drops them into a per-tick pending log
22
+ * tagged with `(client_frame, sender_id, type_id, payload_bytes)`.
23
+ * 2. Once per server tick, `tick(current_frame)` consumes the pending log:
24
+ * - Rejects entries older than the action_log's rewindable window.
25
+ * - Determines the oldest pending frame `replay_start`.
26
+ * - Rewinds the server world back to end-of-(replay_start - 1) via the
27
+ * action_log's prior-state captures (see {@link RewindEngine}).
28
+ * - Replays forward `[replay_start, current_frame]`. For each frame `f`:
29
+ * - Read historical actions out of `action_log[f]` BEFORE
30
+ * `begin_frame(f)` recycles the buffer.
31
+ * - Append pending entries for `f`.
32
+ * - Stable-sort the merged list by `sender_id` (so multi-client order
33
+ * is deterministic across peers — relies on per-record sender_id in
34
+ * the action log).
35
+ * - `executor.execute` each in sorted order, then run the user-
36
+ * supplied local sim via {@link onLocalSim}.
37
+ * - Clear pending.
38
+ *
39
+ * Net effect: a client action tagged at client tick K lands on the server as
40
+ * if applied against end-of-K-1 server state, regardless of arrival timing
41
+ * or order. Both peers compute identical world states for identical inputs.
42
+ *
43
+ * The user wires this orchestrator up by:
44
+ * 1. Constructing with a world, replication setup, and (typically) an
45
+ * {@link OwnerAwareScope} filter so client-owned-entity actions are
46
+ * not echoed back.
47
+ * 2. Calling {@link connect_peer} for each connected client.
48
+ * 3. Subscribing to {@link onLocalSim} for per-frame server-side game logic
49
+ * (e.g. clamps, physics, collision) and {@link onTickComplete} for
50
+ * end-of-tick work (e.g. sending AUTH_STATE).
51
+ * 4. Calling {@link tick} once per server frame.
52
+ *
53
+ * @author Alex Goldring
54
+ * @copyright Company Named Limited (c) 2026
55
+ */
56
+ export class ServerAuthoritativeServer {
57
+ // Per-tick pending input log. Parallel arrays (no per-action object
58
+ // alloc) of newly-arrived action records, plus a sorted unique set
59
+ // of the frames they reference.
60
+ #pending_frames = /** @type {number[]} */ ([]);
61
+ #pending_senders = /** @type {number[]} */ ([]);
62
+ #pending_type_ids = /** @type {number[]} */ ([]);
63
+ #pending_payloads = /** @type {Uint8Array[]} */ ([]);
64
+ #pending_referenced_frames = /** @type {number[]} */ ([]);
65
+ #peer_max_received_frame;
66
+ // Scratch for the replay loop.
67
+ #historical_scratch = /** @type {Array<{type_id:number, sender_id:number, payload:Uint8Array}>} */ ([]);
68
+ #sort_scratch = /** @type {Array<{sender_id:number, type_id:number, payload:Uint8Array}>} */ ([]);
69
+ #payload_buf;
70
+ /**
71
+ * Count of inbound pending entries dropped by the future-lead / total
72
+ * bounds. See {@link onPendingActionDropped}.
73
+ * @private @type {number}
74
+ */
75
+ #pending_dropped = 0;
76
+
77
+ /**
78
+ * Most recently simulated frame. `-1` during warmup
79
+ * (`wall_frame < simulation_delay_ticks`), advances by 1 per
80
+ * `tick()` after.
81
+ * @type {number}
82
+ */
83
+ current_sim_frame = -1;
84
+
85
+ /**
86
+ * @param {{
87
+ * world: EntityComponentDataset,
88
+ * binary_registry: BinarySerializationRegistry,
89
+ * replicated_components: Function[],
90
+ * action_classes: Function[],
91
+ * scope_filter?: object,
92
+ * frame_capacity?: number,
93
+ * initial_buffer_size?: number,
94
+ * simulation_delay_ticks?: number,
95
+ * }} options
96
+ *
97
+ * `simulation_delay_ticks`: server-side input buffer (Overwatch-style).
98
+ * When > 0, {@link tick}(wall_frame) simulates
99
+ * `sim_frame = wall_frame - simulation_delay_ticks`. Pending actions
100
+ * tagged for `> sim_frame` stay queued and apply when `sim_frame`
101
+ * catches up — most client actions land before the server needs
102
+ * them, so rollback rarely fires. Costs N ticks of perceived
103
+ * input-to-feedback latency (client prediction hides it). Default 0
104
+ * reproduces pre-feature behavior.
105
+ */
106
+ constructor({
107
+ world,
108
+ binary_registry,
109
+ replicated_components,
110
+ action_classes,
111
+ scope_filter = new AlwaysRelevantScope(),
112
+ frame_capacity = 32,
113
+ initial_buffer_size = 1024,
114
+ simulation_delay_ticks = 0,
115
+ max_pending_future_lead = 256,
116
+ max_pending_total = 4096,
117
+ identity_class = NetworkIdentity,
118
+ server_peer_id = -1,
119
+ }) {
120
+ assert.isNonNegativeInteger(simulation_delay_ticks, 'simulation_delay_ticks');
121
+ assert.isPositiveInteger(max_pending_future_lead, 'max_pending_future_lead');
122
+ assert.isPositiveInteger(max_pending_total, 'max_pending_total');
123
+ /** @type {NetworkPeer} */
124
+ this.peer = new NetworkPeer({
125
+ world,
126
+ binary_registry,
127
+ replicated_components,
128
+ action_classes,
129
+ scope_filter,
130
+ frame_capacity,
131
+ initial_buffer_size,
132
+ });
133
+
134
+ /** @type {EntityComponentDataset} */
135
+ this.world = world;
136
+ /** @type {SimActionExecutor} */
137
+ this.executor = this.peer.executor;
138
+
139
+ // Secure-by-default inbound authorization: a remote peer may only mutate
140
+ // entities it owns (identity.owner_peer_id === sender); the authoritative
141
+ // server (sender === server_peer_id) may mutate anything. Without this a
142
+ // connected peer can craft an action targeting another peer's — or a
143
+ // server-owned — entity and drive it. Games that intentionally allow
144
+ // shared mutation can overwrite `executor.authorize` (e.g. set it to null)
145
+ // after construction.
146
+ this.executor.authorize = make_owner_authorization({
147
+ world,
148
+ identity_class,
149
+ server_peer_id,
150
+ });
151
+ /** @type {ReplicationSlotTable} */
152
+ this.slot_table = this.peer.slot_table;
153
+ /** @type {ActionLog} */
154
+ this.action_log = this.peer.action_log;
155
+ /** @type {SimActionRegistry} */
156
+ this.action_registry = this.peer.action_registry;
157
+ /** @type {ReplicatedComponentRegistry} */
158
+ this.component_registry = this.peer.component_registry;
159
+
160
+ /** @type {RewindEngine} */
161
+ this.rewind_engine = new RewindEngine({
162
+ action_log: this.action_log,
163
+ world: this.world,
164
+ component_registry: this.component_registry,
165
+ });
166
+
167
+ /**
168
+ * Highest client-tagged frame received (across all peers).
169
+ * RECEIPT semantic under `simulation_delay_ticks > 0` this
170
+ * may be ahead of {@link current_sim_frame}. Tag AUTH_STATE
171
+ * with `current_sim_frame`, not this.
172
+ * @type {number}
173
+ */
174
+ this.last_client_frame_processed = -1;
175
+
176
+ /**
177
+ * Number of ticks the server's simulation lags behind the caller's
178
+ * wall frame. See constructor doc.
179
+ * @type {number}
180
+ */
181
+ this.simulation_delay_ticks = simulation_delay_ticks;
182
+
183
+ /**
184
+ * Upper bound on how far ahead of the server's own simulation a peer
185
+ * may tag an inbound action. `frame_number` is an attacker-controlled
186
+ * varint; without a ceiling, future-tagged entries accumulate in the
187
+ * pending log unbounded (only the past side is trimmed in {@link tick}).
188
+ * A well-behaved client tags at most ~`simulation_delay_ticks` ahead
189
+ * plus a jitter lead, so the accept window is
190
+ * `current_sim_frame + simulation_delay_ticks + max_pending_future_lead`.
191
+ * @type {number}
192
+ */
193
+ this.max_pending_future_lead = max_pending_future_lead;
194
+
195
+ /**
196
+ * Absolute backstop on the number of buffered pending entries. Even
197
+ * within the future window a peer can vary an action's payload to
198
+ * defeat the per-frame dedup and pile up many distinct entries; this
199
+ * caps total memory (and the dedup scan cost) regardless. Legitimate
200
+ * pending depth is tiny (≈ delay × actions/frame × peers), so this only
201
+ * ever trips under abuse. Raise it for very high concurrent-player
202
+ * counts.
203
+ * @type {number}
204
+ */
205
+ this.max_pending_total = max_pending_total;
206
+
207
+ /**
208
+ * Running watermark per peer: highest client-tagged frame received
209
+ * from each peer. {@link buffer_depth_for_peer} reads this minus
210
+ * {@link current_sim_frame} to drive time-dilation feedback.
211
+ * @private @type {Map<number, number>}
212
+ */
213
+ this.#peer_max_received_frame = new Map();
214
+
215
+ this.#payload_buf = new BinaryBuffer();
216
+ this.#payload_buf.setCapacity(64);
217
+
218
+ // Switch the Replicator to deferred-execute mode: incoming actions
219
+ // accumulate in pending until tick() drains them.
220
+ this.peer.replicator.on_pending_action = (peer_id, frame_number, type_id, buf, off, len) => {
221
+ const payload = new Uint8Array(len);
222
+ payload.set(buf.raw_bytes.subarray(off, off + len));
223
+ this.#pending_add(frame_number, peer_id, type_id, payload);
224
+ if (frame_number > this.last_client_frame_processed) {
225
+ this.last_client_frame_processed = frame_number;
226
+ }
227
+ const prev = this.#peer_max_received_frame.get(peer_id);
228
+ if (prev === undefined || frame_number > prev) {
229
+ this.#peer_max_received_frame.set(peer_id, frame_number);
230
+ }
231
+ };
232
+
233
+ /**
234
+ * Fires once per frame during the replay loop, AFTER all merged
235
+ * actions for that frame have been applied and BEFORE the action_log
236
+ * frame is closed. Use this for server-authoritative local sim
237
+ * (clamps, collision, AI step, etc.). The current world state
238
+ * reflects all inputs for this frame; the local sim should be
239
+ * idempotent under repeated application (because it may run many
240
+ * times under rollback).
241
+ *
242
+ * Args: `(frame_number)`.
243
+ * @type {Signal}
244
+ */
245
+ this.onLocalSim = new Signal();
246
+
247
+ /**
248
+ * Fires after `tick()` completes (pending drained, all frames in the
249
+ * replay window applied). Use for end-of-tick work: sending
250
+ * AUTH_STATE, recording diagnostics, etc.
251
+ *
252
+ * Args: `(current_frame)`.
253
+ * @type {Signal}
254
+ */
255
+ this.onTickComplete = new Signal();
256
+
257
+ /**
258
+ * Fired when a tick triggers an actual rewind (i.e. the replay
259
+ * window includes already-committed frames). Args:
260
+ * `(committed_top, replay_target, depth)` where depth is
261
+ * `committed_top - replay_target` (number of frames undone).
262
+ *
263
+ * Diagnostic: counts rollbacks and characterizes how deep they
264
+ * went, which directly maps to how late client actions arrived.
265
+ * Tick paths that ran without a rewind (steady-state, no pending
266
+ * for past frames) do NOT fire this.
267
+ * @type {Signal}
268
+ */
269
+ this.onRewind = new Signal();
270
+
271
+ /**
272
+ * Fired when an inbound pending action is dropped by the future-lead or
273
+ * total-capacity bound (i.e. a far-future frame tag or a flood). Args:
274
+ * `(sender_id, frame_number, reason)` where `reason` is `'future'` or
275
+ * `'capacity'`. Observable so an abusive peer can be logged / kicked;
276
+ * the dropped action is simply not buffered.
277
+ * @type {Signal}
278
+ */
279
+ this.onPendingActionDropped = new Signal();
280
+ }
281
+
282
+ /**
283
+ * Connect a client peer over a transport. Subsequent action packets from
284
+ * this peer will be buffered in the pending log via the deferral hook
285
+ * and consumed on the next `tick()`.
286
+ *
287
+ * @param {number} peer_id
288
+ * @param {object} transport
289
+ */
290
+ connect_peer(peer_id, transport) {
291
+ this.peer.connect_peer(peer_id, transport);
292
+ }
293
+
294
+ /**
295
+ * Disconnect a previously-connected peer.
296
+ * @param {number} peer_id
297
+ */
298
+ disconnect_peer(peer_id) {
299
+ this.peer.disconnect_peer(peer_id);
300
+ }
301
+
302
+ /**
303
+ * Forward to {@link NetworkPeer#send_auth_state}. Typically called from
304
+ * an {@link onTickComplete} subscriber.
305
+ *
306
+ * @param {number} peer_id
307
+ * @param {number} frame_number
308
+ * @param {number} network_id
309
+ * @param {(buf: BinaryBuffer) => void} write_fn
310
+ */
311
+ send_auth_state(peer_id, frame_number, network_id, write_fn) {
312
+ return this.peer.send_auth_state(peer_id, frame_number, network_id, write_fn);
313
+ }
314
+
315
+ /**
316
+ * Channel accessor for the user's manual packet plumbing (e.g. sending
317
+ * empty ACK packets in the prototype). Most callers won't need this.
318
+ * @param {number} peer_id
319
+ */
320
+ channel_for(peer_id) {
321
+ return this.peer.channel_for(peer_id);
322
+ }
323
+
324
+ /**
325
+ * Send the current buffer-depth observation for one peer to that peer.
326
+ * Convenience wrapper around {@link NetworkPeer#send_time_dilation_feedback}
327
+ * that pulls the depth from {@link buffer_depth_for_peer}. Typically
328
+ * invoked once per tick (or every few ticks) from an
329
+ * {@link onTickComplete} subscriber.
330
+ *
331
+ * @param {number} peer_id
332
+ */
333
+ send_time_dilation_feedback(peer_id) {
334
+ this.peer.send_time_dilation_feedback(peer_id, this.buffer_depth_for_peer(peer_id));
335
+ }
336
+
337
+ /**
338
+ * Drive the rollback flow for one tick.
339
+ *
340
+ * With `simulation_delay_ticks = 0` (default), simulates the caller's
341
+ * `wall_frame` and drains pending. With `> 0`, simulates
342
+ * `sim_frame = wall_frame - simulation_delay_ticks` and holds
343
+ * `frame > sim_frame` pending until the sim catches up. Warmup
344
+ * (`sim_frame < 0`) is a no-op; `onTickComplete` does not fire.
345
+ *
346
+ * `onTickComplete` fires with `sim_frame` (not `wall_frame`).
347
+ *
348
+ * @param {number} current_frame the caller's wall frame
349
+ */
350
+ tick(current_frame) {
351
+ assert.isNonNegativeInteger(current_frame, 'current_frame');
352
+
353
+ const sim_frame = current_frame - this.simulation_delay_ticks;
354
+
355
+ if (sim_frame < 0) return; // warmup
356
+
357
+ // 1. Drop pending entries outside the action_log's rewindable window.
358
+ const window_oldest = Math.max(0, sim_frame - this.action_log.frame_capacity + 1);
359
+ if (this.#pending_frames.length > 0 && this.#pending_referenced_frames[0] < window_oldest) {
360
+ this.#pending_trim_to_window(window_oldest);
361
+ }
362
+
363
+ // 2. Pick the replay window. `__pending_referenced_frames` is
364
+ // sorted ascending; entries `> sim_frame` stay buffered.
365
+ let replay_start = sim_frame;
366
+ const refs = this.#pending_referenced_frames;
367
+ if (refs.length > 0 && refs[0] <= sim_frame) {
368
+ replay_start = refs[0];
369
+ }
370
+
371
+ // 3. Rewind only if the replay window covers committed frames.
372
+ const committed_top = sim_frame - 1;
373
+ if (replay_start <= committed_top) {
374
+ this.rewind_engine.rewind_to(committed_top, replay_start - 1);
375
+ this.onRewind.send3(committed_top, replay_start - 1, committed_top - (replay_start - 1));
376
+ }
377
+
378
+ // 4. Replay [replay_start, sim_frame].
379
+ for (let f = replay_start; f <= sim_frame; f++) {
380
+ this.#replay_frame(f);
381
+ }
382
+
383
+ // 5. Keep only `frame > sim_frame` pending (future buffer).
384
+ this.#pending_filter_to_future(sim_frame);
385
+
386
+ // 6. Publish sim_frame before flushing, so onTickComplete handlers
387
+ // reading current_sim_frame see the just-advanced value.
388
+ this.current_sim_frame = sim_frame;
389
+ this.peer.flush_outbound(sim_frame);
390
+ this.onTickComplete.send1(sim_frame);
391
+ }
392
+
393
+ /**
394
+ * Current input-buffer depth for a peer: `max_received_frame - current_sim_frame`.
395
+ * Positive ⇒ peer is sending ahead of sim (good); zero/negative ⇒
396
+ * peer is falling behind. Returns 0 if no inputs from this peer.
397
+ * During warmup returns the count of received frames.
398
+ *
399
+ * @param {number} peer_id
400
+ * @returns {number}
401
+ */
402
+ buffer_depth_for_peer(peer_id) {
403
+ const max = this.#peer_max_received_frame.get(peer_id);
404
+ if (max === undefined) return 0;
405
+ if (this.current_sim_frame < 0) return max + 1;
406
+ return max - this.current_sim_frame;
407
+ }
408
+
409
+ /** @private */
410
+ #replay_frame(f) {
411
+ this.#sort_scratch.length = 0;
412
+
413
+ // Read historical actions out of action_log[f] BEFORE begin_frame(f)
414
+ // recycles the buffer. The sender_id is recorded per-record (see
415
+ // SimActionExecutor), so the stable sort below produces deterministic
416
+ // order regardless of how history was originally interleaved.
417
+ this.#read_historical(f, this.#historical_scratch);
418
+ for (let i = 0; i < this.#historical_scratch.length; i++) {
419
+ const h = this.#historical_scratch[i];
420
+ this.#sort_scratch.push({ sender_id: h.sender_id, type_id: h.type_id, payload: h.payload });
421
+ }
422
+
423
+ // Append newly-arrived pending actions for this frame, deduplicating
424
+ // against historical entries. Retransmissions are routine on the
425
+ // wire `Replicator.pack_for_peer` packs every frame in
426
+ // [last_acked + 1, current_frame] each tick, so an action lives in
427
+ // every outgoing packet for the round-trip duration of its ack.
428
+ // The server receives each retransmission as a fresh pending entry;
429
+ // without dedup, the rollback flow merges it with the historical
430
+ // record left over from the previous apply and executes the action
431
+ // twice (and three times, four times… until the ack arrives).
432
+ //
433
+ // Dedup key: (sender_id, type_id, payload bytes). Two actions are
434
+ // "the same arrival" if all three match. (Same sender_id and
435
+ // type_id but different payload = legitimately distinct actions
436
+ // for the same frame, e.g. fire + move in the same tick.)
437
+ for (let i = 0; i < this.#pending_frames.length; i++) {
438
+ if (this.#pending_frames[i] !== f) continue;
439
+ const p_sender = this.#pending_senders[i];
440
+ const p_type = this.#pending_type_ids[i];
441
+ const p_payload = this.#pending_payloads[i];
442
+ let is_dup = false;
443
+ for (let j = 0; j < this.#historical_scratch.length; j++) {
444
+ const h = this.#historical_scratch[j];
445
+ if (h.sender_id !== p_sender) continue;
446
+ if (h.type_id !== p_type) continue;
447
+ if (fastArrayEquals(h.payload, p_payload)) { is_dup = true; break; }
448
+ }
449
+ if (is_dup) continue;
450
+ this.#sort_scratch.push({ sender_id: p_sender, type_id: p_type, payload: p_payload });
451
+ }
452
+
453
+ // Stable sort by sender. Array.prototype.sort is stable since ES2019;
454
+ // equal sender_ids preserve insertion order, with historical entries
455
+ // appearing before newly-arrived pending entries for the same sender.
456
+ this.#sort_scratch.sort((a, b) => a.sender_id - b.sender_id);
457
+
458
+ // Open the frame, execute all, close.
459
+ this.action_log.begin_frame(f);
460
+ for (let i = 0; i < this.#sort_scratch.length; i++) {
461
+ const s = this.#sort_scratch[i];
462
+ this.#apply_payload(s.type_id, s.sender_id, s.payload);
463
+ }
464
+ // Notify user code so server-side local sim runs at the right point
465
+ // in the frame (after inputs applied, before frame closed). Idempotent
466
+ // under repeated application across rollback replays.
467
+ this.onLocalSim.send1(f);
468
+ this.action_log.end_frame();
469
+ }
470
+
471
+ /** @private */
472
+ #apply_payload(type_id, sender_id, payload) {
473
+ const klass = this.action_registry.klass_for(type_id);
474
+ if (klass === undefined) return;
475
+ const action = this.action_registry.acquire(klass);
476
+ try {
477
+ if (this.#payload_buf.raw_bytes.length < payload.length) {
478
+ this.#payload_buf.setCapacity(payload.length);
479
+ }
480
+ this.#payload_buf.position = 0;
481
+ this.#payload_buf.writeBytes(payload, 0, payload.length);
482
+ this.#payload_buf.position = 0;
483
+ action.deserialize(this.#payload_buf);
484
+ this.executor.execute(action, sender_id);
485
+ } finally {
486
+ this.action_registry.release(action);
487
+ }
488
+ }
489
+
490
+ /** @private */
491
+ #read_historical(frame_number, out_array) {
492
+ out_array.length = 0;
493
+ if (!this.action_log.has_frame(frame_number)) return;
494
+ const buf = this.action_log.buffer_for(frame_number); // sets position = 0
495
+ const end = this.action_log.write_end_for(frame_number);
496
+ while (buf.position < end) {
497
+ const prior_count = buf.readUintVar();
498
+ for (let i = 0; i < prior_count; i++) {
499
+ buf.readUintVar(); // entity_id
500
+ buf.readUint8(); // component_type_id
501
+ const plen = buf.readUint32();
502
+ buf.position += plen;
503
+ }
504
+ const type_id = buf.readUint8();
505
+ const sender_id = buf.readUint8();
506
+ const payload_len = buf.readUint32();
507
+ const payload = new Uint8Array(payload_len);
508
+ payload.set(buf.raw_bytes.subarray(buf.position, buf.position + payload_len));
509
+ buf.position += payload_len;
510
+ out_array.push({ type_id, sender_id, payload });
511
+ }
512
+ }
513
+
514
+ /**
515
+ * Number of inbound pending actions dropped by the future-lead / total
516
+ * bounds so far. See {@link onPendingActionDropped}.
517
+ * @returns {number}
518
+ */
519
+ pending_dropped_count() {
520
+ return this.#pending_dropped;
521
+ }
522
+
523
+ /** @private */
524
+ #pending_add(frame_number, sender_id, type_id, payload) {
525
+ // Reject far-future frame numbers. `frame_number` is an attacker-
526
+ // controlled varint; tick() only trims the PAST side of the pending
527
+ // log, so without this ceiling a peer can pin unbounded memory (and
528
+ // O(n) per-insert cost) by tagging actions near 2^32. A well-behaved
529
+ // client tags at most ~simulation_delay_ticks ahead plus jitter lead.
530
+ // Real runtime check — asserts strip in prod.
531
+ const future_horizon = this.current_sim_frame + this.simulation_delay_ticks + this.max_pending_future_lead;
532
+ if (frame_number > future_horizon) {
533
+ this.#pending_dropped++;
534
+ this.onPendingActionDropped.send3(sender_id, frame_number, 'future');
535
+ return;
536
+ }
537
+ // Absolute backstop: even within the future window a peer can vary the
538
+ // payload to defeat the dedup below and pile up distinct entries.
539
+ if (this.#pending_frames.length >= this.max_pending_total) {
540
+ this.#pending_dropped++;
541
+ this.onPendingActionDropped.send3(sender_id, frame_number, 'capacity');
542
+ return;
543
+ }
544
+
545
+ // Dedup against other pending entries for the same frame. Multiple
546
+ // retransmission packets routinely arrive in the same c2s.tick
547
+ // window when ack RTT exceeds tick period; each carries the same
548
+ // action records for the same frames. The __replay_frame dedup
549
+ // catches retransmissions across server ticks (where historical
550
+ // already has the record), but the SAME server tick can collect
551
+ // multiple identical pending entries before historical exists. So
552
+ // also dedup here, against everything already in pending for this
553
+ // frame. Match on (sender_id, type_id, payload bytes) — distinct
554
+ // payloads from the same sender at the same frame are legitimately
555
+ // different actions (move + fire) and both flow through.
556
+ for (let i = 0; i < this.#pending_frames.length; i++) {
557
+ if (this.#pending_frames[i] !== frame_number) continue;
558
+ if (this.#pending_senders[i] !== sender_id) continue;
559
+ if (this.#pending_type_ids[i] !== type_id) continue;
560
+ if (fastArrayEquals(this.#pending_payloads[i], payload)) return; // duplicate already in pending; drop
561
+ }
562
+
563
+ this.#pending_frames.push(frame_number);
564
+ this.#pending_senders.push(sender_id);
565
+ this.#pending_type_ids.push(type_id);
566
+ this.#pending_payloads.push(payload);
567
+ this.#track_referenced_frame(frame_number);
568
+ }
569
+
570
+ /**
571
+ * Insert `frame_number` into the monotonically-sorted referenced-frames
572
+ * index, leaving it untouched if already present. Single source of truth
573
+ * for the three sites (per-add, post-trim, post-filter) that maintain
574
+ * this index, so the binary-search invariant and uniqueness check live
575
+ * in one place.
576
+ * @param {number} frame_number
577
+ * @private
578
+ */
579
+ #track_referenced_frame(frame_number) {
580
+ const arr = this.#pending_referenced_frames;
581
+ const i = binarySearchHighIndex(arr, frame_number, number_compare_ascending);
582
+ if (arr[i] !== frame_number) arr.splice(i, 0, frame_number);
583
+ }
584
+
585
+ /** @private */
586
+ #pending_trim_to_window(window_oldest) {
587
+ let kept = 0;
588
+ for (let i = 0; i < this.#pending_frames.length; i++) {
589
+ if (this.#pending_frames[i] >= window_oldest) {
590
+ this.#pending_frames[kept] = this.#pending_frames[i];
591
+ this.#pending_senders[kept] = this.#pending_senders[i];
592
+ this.#pending_type_ids[kept] = this.#pending_type_ids[i];
593
+ this.#pending_payloads[kept] = this.#pending_payloads[i];
594
+ kept++;
595
+ }
596
+ }
597
+ this.#pending_frames.length = kept;
598
+ this.#pending_senders.length = kept;
599
+ this.#pending_type_ids.length = kept;
600
+ this.#pending_payloads.length = kept;
601
+ this.#pending_referenced_frames.length = 0;
602
+ for (const f of this.#pending_frames) {
603
+ this.#track_referenced_frame(f);
604
+ }
605
+ }
606
+
607
+ /** @private */
608
+ #pending_clear() {
609
+ this.#pending_frames.length = 0;
610
+ this.#pending_senders.length = 0;
611
+ this.#pending_type_ids.length = 0;
612
+ this.#pending_payloads.length = 0;
613
+ this.#pending_referenced_frames.length = 0;
614
+ }
615
+
616
+ /**
617
+ * Drop pending entries with `frame <= keep_threshold`, keeping the
618
+ * rest. Same structural pattern as {@link __pending_trim_to_window}
619
+ * but with the inequality flipped — used at the end of {@link tick}
620
+ * to retain future-tagged inputs under `simulation_delay_ticks > 0`.
621
+ * @private
622
+ */
623
+ #pending_filter_to_future(keep_threshold) {
624
+ let kept = 0;
625
+ for (let i = 0; i < this.#pending_frames.length; i++) {
626
+ if (this.#pending_frames[i] > keep_threshold) {
627
+ this.#pending_frames[kept] = this.#pending_frames[i];
628
+ this.#pending_senders[kept] = this.#pending_senders[i];
629
+ this.#pending_type_ids[kept] = this.#pending_type_ids[i];
630
+ this.#pending_payloads[kept] = this.#pending_payloads[i];
631
+ kept++;
632
+ }
633
+ }
634
+ this.#pending_frames.length = kept;
635
+ this.#pending_senders.length = kept;
636
+ this.#pending_type_ids.length = kept;
637
+ this.#pending_payloads.length = kept;
638
+ this.#pending_referenced_frames.length = 0;
639
+ for (const f of this.#pending_frames) {
640
+ this.#track_referenced_frame(f);
641
+ }
642
+ }
643
+ }