@woosh/meep-engine 3.14.4 → 3.14.6
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.
- package/README.md +6 -0
- package/editor/Editor.d.ts +162 -0
- package/editor/Editor.d.ts.map +1 -0
- package/editor/EditorCameraNavigation.d.ts +22 -0
- package/editor/EditorCameraNavigation.d.ts.map +1 -0
- package/editor/EditorKeyMap.d.ts +28 -0
- package/editor/EditorKeyMap.d.ts.map +1 -0
- package/editor/SelectionVisualizer.d.ts +37 -0
- package/editor/SelectionVisualizer.d.ts.map +1 -0
- package/editor/actions/concrete/ActionInvalidateSampler.d.ts +18 -0
- package/editor/actions/concrete/ActionInvalidateSampler.d.ts.map +1 -0
- package/editor/actions/concrete/ActionUpdateTexture.d.ts +12 -0
- package/editor/actions/concrete/ActionUpdateTexture.d.ts.map +1 -0
- package/editor/actions/concrete/ActionUpdateTexture.js +1 -1
- package/editor/actions/concrete/ArrayCopyAction.d.ts +20 -0
- package/editor/actions/concrete/ArrayCopyAction.d.ts.map +1 -0
- package/editor/actions/concrete/ComponentAddAction.d.ts +15 -0
- package/editor/actions/concrete/ComponentAddAction.d.ts.map +1 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts +11 -0
- package/editor/actions/concrete/ComponentRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts +18 -0
- package/editor/actions/concrete/EntityCreateAction.d.ts.map +1 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts +11 -0
- package/editor/actions/concrete/EntityRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts +47 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.d.ts.map +1 -0
- package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts +38 -0
- package/editor/actions/concrete/ModifyPatchTextureArray2DAction.d.ts.map +1 -0
- package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts +23 -0
- package/editor/actions/concrete/PaintTerrainOverlayAction.d.ts.map +1 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts +32 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.d.ts.map +1 -0
- package/editor/actions/concrete/SelectionAddAction.d.ts +19 -0
- package/editor/actions/concrete/SelectionAddAction.d.ts.map +1 -0
- package/editor/actions/concrete/SelectionClearAction.d.ts +9 -0
- package/editor/actions/concrete/SelectionClearAction.d.ts.map +1 -0
- package/editor/actions/concrete/SelectionRemoveAction.d.ts +10 -0
- package/editor/actions/concrete/SelectionRemoveAction.d.ts.map +1 -0
- package/editor/actions/concrete/TransformModifyAction.d.ts +17 -0
- package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -0
- package/editor/actions/concrete/WriteGridValueAction.d.ts +14 -0
- package/editor/actions/concrete/WriteGridValueAction.d.ts.map +1 -0
- package/editor/camera/camera_framing.d.ts +33 -0
- package/editor/camera/camera_framing.d.ts.map +1 -0
- package/editor/clipboard.d.ts +19 -0
- package/editor/clipboard.d.ts.map +1 -0
- package/editor/ecs/EditorEntity.d.ts +16 -0
- package/editor/ecs/EditorEntity.d.ts.map +1 -0
- package/editor/ecs/EditorEntitySystem.d.ts +8 -0
- package/editor/ecs/EditorEntitySystem.d.ts.map +1 -0
- package/editor/ecs/component/TypeEditor.d.ts +7 -1
- package/editor/ecs/component/TypeEditor.d.ts.map +1 -1
- package/editor/ecs/component/TypeEditor.js +5 -0
- package/editor/ecs/component/editors/ColorEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ColorEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/HTMLElementEditor.d.ts +7 -0
- package/editor/ecs/component/editors/HTMLElementEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ImagePathEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ImagePathEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/LargeStringEditor.d.ts +16 -0
- package/editor/ecs/component/editors/LargeStringEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/NumericIntervalEditor.d.ts +7 -0
- package/editor/ecs/component/editors/NumericIntervalEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedBooleanEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedBooleanEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedEnumEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedEnumEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedIntegerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ObservedStringEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ObservedStringEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/Sampler2DEditor.d.ts +7 -0
- package/editor/ecs/component/editors/Sampler2DEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/collection/ListEditor.d.ts +8 -0
- package/editor/ecs/component/editors/collection/ListEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/BitFlagsEditor.d.ts +12 -0
- package/editor/ecs/component/editors/common/BitFlagsEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/EnumEditor.d.ts +8 -0
- package/editor/ecs/component/editors/common/EnumEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/makeV3_editor.d.ts +15 -0
- package/editor/ecs/component/editors/common/makeV3_editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/noEditor.d.ts +3 -0
- package/editor/ecs/component/editors/common/noEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/common/two_way_sync.d.ts +22 -0
- package/editor/ecs/component/editors/common/two_way_sync.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/GridObstacleEditor.d.ts +7 -0
- package/editor/ecs/component/editors/ecs/GridObstacleEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts +14 -0
- package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +20 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +12 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +14 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +52 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +47 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/SGMeshEditor.d.ts +21 -0
- package/editor/ecs/component/editors/ecs/SGMeshEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/ShadedGeometryEditor.d.ts +26 -0
- package/editor/ecs/component/editors/ecs/ShadedGeometryEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +16 -0
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/Trail2DEditor.d.ts +15 -0
- package/editor/ecs/component/editors/ecs/Trail2DEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +42 -0
- package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/TransformEditor.d.ts +20 -0
- package/editor/ecs/component/editors/ecs/TransformEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts +8 -0
- package/editor/ecs/component/editors/ecs/buildGridObstaclePreview.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.d.ts +19 -0
- package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.d.ts +27 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.d.ts +16 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.d.ts +19 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.d.ts +18 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector1Editor.d.ts +7 -0
- package/editor/ecs/component/editors/geom/Vector1Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector2Editor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/Vector2Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector3Editor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/Vector3Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/geom/Vector4Editor.d.ts +6 -0
- package/editor/ecs/component/editors/geom/Vector4Editor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/ArrayEditor.d.ts +8 -0
- package/editor/ecs/component/editors/primitive/ArrayEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/BooleanEditor.d.ts +7 -0
- package/editor/ecs/component/editors/primitive/BooleanEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/FunctionEditor.d.ts +7 -0
- package/editor/ecs/component/editors/primitive/FunctionEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/NumberEditor.d.ts +8 -0
- package/editor/ecs/component/editors/primitive/NumberEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/primitive/StringEditor.d.ts +7 -0
- package/editor/ecs/component/editors/primitive/StringEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/MeshletGeometryEditor.d.ts +28 -0
- package/editor/ecs/component/editors/shade/MeshletGeometryEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/ShadeImageEditor.d.ts +29 -0
- package/editor/ecs/component/editors/shade/ShadeImageEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/ShadeMaterialEditor.d.ts +28 -0
- package/editor/ecs/component/editors/shade/ShadeMaterialEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/ShadeTextureEditor.d.ts +41 -0
- package/editor/ecs/component/editors/shade/ShadeTextureEditor.d.ts.map +1 -0
- package/editor/ecs/component/editors/shade/StandardShadeMaterialEditor.d.ts +31 -0
- package/editor/ecs/component/editors/shade/StandardShadeMaterialEditor.d.ts.map +1 -0
- package/editor/ecs/component/prototypeObjectEditor.d.ts +2 -0
- package/editor/ecs/component/prototypeObjectEditor.d.ts.map +1 -0
- package/editor/ecs/component/registerBasicTypeEditors.d.ts +11 -0
- package/editor/ecs/component/registerBasicTypeEditors.d.ts.map +1 -0
- package/editor/ecs/component/registerEngineComponentEditors.d.ts +8 -0
- package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -0
- package/editor/enableEditor.d.ts +14 -0
- package/editor/enableEditor.d.ts.map +1 -0
- package/editor/entity_world_bounds.d.ts +17 -0
- package/editor/entity_world_bounds.d.ts.map +1 -0
- package/editor/library/MeshLibrary.d.ts +13 -0
- package/editor/library/MeshLibrary.d.ts.map +1 -0
- package/editor/particles/lut_ops.d.ts +34 -0
- package/editor/particles/lut_ops.d.ts.map +1 -0
- package/editor/particles/particleEditEvents.d.ts +11 -0
- package/editor/particles/particleEditEvents.d.ts.map +1 -0
- package/editor/particles/rebuildParticleEmitter.d.ts +11 -0
- package/editor/particles/rebuildParticleEmitter.d.ts.map +1 -0
- package/editor/persistence/EditorLayoutStore.d.ts +30 -0
- package/editor/persistence/EditorLayoutStore.d.ts.map +1 -0
- package/editor/persistence/SceneMetadata.d.ts +38 -0
- package/editor/persistence/SceneMetadata.d.ts.map +1 -0
- package/editor/persistence/SceneSlotManager.d.ts +40 -0
- package/editor/persistence/SceneSlotManager.d.ts.map +1 -0
- package/editor/persistence/buildNewSceneDataset.d.ts +10 -0
- package/editor/persistence/buildNewSceneDataset.d.ts.map +1 -0
- package/editor/persistence/files.d.ts +24 -0
- package/editor/persistence/files.d.ts.map +1 -0
- package/editor/persistence/scene_import.d.ts +45 -0
- package/editor/persistence/scene_import.d.ts.map +1 -0
- package/editor/persistence/scene_serialization.d.ts +36 -0
- package/editor/persistence/scene_serialization.d.ts.map +1 -0
- package/editor/persistence/string_buffer_codec.d.ts +20 -0
- package/editor/persistence/string_buffer_codec.d.ts.map +1 -0
- package/editor/process/DisableGameUIProcess.d.ts +8 -0
- package/editor/process/DisableGameUIProcess.d.ts.map +1 -0
- package/editor/process/EditorProcess.d.ts +19 -0
- package/editor/process/EditorProcess.d.ts.map +1 -0
- package/editor/process/GridDisplayProcess.d.ts +35 -0
- package/editor/process/GridDisplayProcess.d.ts.map +1 -0
- package/editor/process/ObstacleGridDisplayProcess.d.ts +13 -0
- package/editor/process/ObstacleGridDisplayProcess.d.ts.map +1 -0
- package/editor/process/ParticleEmitterRebuildProcess.d.ts +66 -0
- package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +1 -0
- package/editor/process/ProcessEngine.d.ts +30 -0
- package/editor/process/ProcessEngine.d.ts.map +1 -0
- package/editor/process/SymbolicDisplayProcess.d.ts +23 -0
- package/editor/process/SymbolicDisplayProcess.d.ts.map +1 -0
- package/editor/process/symbolic/AudioEmitterSymbolicDisplay.d.ts +17 -0
- package/editor/process/symbolic/AudioEmitterSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/CameraSymbolicDisplay.d.ts +25 -0
- package/editor/process/symbolic/CameraSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/GridPositionSymbolicDisplay.d.ts +19 -0
- package/editor/process/symbolic/GridPositionSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/LightSymbolicDisplay.d.ts +19 -0
- package/editor/process/symbolic/LightSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +18 -0
- package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/PathSymbolicDisplay.d.ts +20 -0
- package/editor/process/symbolic/PathSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.d.ts +25 -0
- package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/SymbolicDisplay.d.ts +48 -0
- package/editor/process/symbolic/SymbolicDisplay.d.ts.map +1 -0
- package/editor/process/symbolic/gizmo_draw_wire_box_oriented.d.ts +13 -0
- package/editor/process/symbolic/gizmo_draw_wire_box_oriented.d.ts.map +1 -0
- package/editor/process/symbolic/gizmo_draw_wire_circle.d.ts +18 -0
- package/editor/process/symbolic/gizmo_draw_wire_circle.d.ts.map +1 -0
- package/editor/prototypeEditorShell.d.ts +13 -0
- package/editor/prototypeEditorShell.d.ts.map +1 -0
- package/editor/selection/editor_pick.d.ts +43 -0
- package/editor/selection/editor_pick.d.ts.map +1 -0
- package/editor/selection/screen_rect_frustum.d.ts +32 -0
- package/editor/selection/screen_rect_frustum.d.ts.map +1 -0
- package/editor/templates/entity_templates.d.ts +19 -0
- package/editor/templates/entity_templates.d.ts.map +1 -0
- package/editor/tools/GridPaintTool.d.ts +18 -0
- package/editor/tools/GridPaintTool.d.ts.map +1 -0
- package/editor/tools/SelectionTool.d.ts +38 -0
- package/editor/tools/SelectionTool.d.ts.map +1 -0
- package/editor/tools/SelectionTool.js +2 -2
- package/editor/tools/TransformToolV2.d.ts +70 -0
- package/editor/tools/TransformToolV2.d.ts.map +1 -0
- package/editor/tools/engine/Tool.d.ts +88 -0
- package/editor/tools/engine/Tool.d.ts.map +1 -0
- package/editor/tools/engine/ToolEngine.d.ts +22 -0
- package/editor/tools/engine/ToolEngine.d.ts.map +1 -0
- package/editor/tools/engine/ToolState.d.ts +7 -0
- package/editor/tools/engine/ToolState.d.ts.map +1 -0
- package/editor/tools/paint/TerrainHeightPaintTool.d.ts +18 -0
- package/editor/tools/paint/TerrainHeightPaintTool.d.ts.map +1 -0
- package/editor/tools/paint/TerrainPaintTool.d.ts +82 -0
- package/editor/tools/paint/TerrainPaintTool.d.ts.map +1 -0
- package/editor/tools/paint/TerrainTexturePaintTool.d.ts +19 -0
- package/editor/tools/paint/TerrainTexturePaintTool.d.ts.map +1 -0
- package/editor/tools/v2/BlenderCameraOrientationGizmo.d.ts +139 -0
- package/editor/tools/v2/BlenderCameraOrientationGizmo.d.ts.map +1 -0
- package/editor/tools/v2/GizmoNode.d.ts +21 -0
- package/editor/tools/v2/GizmoNode.d.ts.map +1 -0
- package/editor/tools/v2/TransformControls.d.ts +219 -0
- package/editor/tools/v2/TransformControls.d.ts.map +1 -0
- package/editor/tools/v2/TransformMode.d.ts +7 -0
- package/editor/tools/v2/TransformMode.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_drag_plane.d.ts +37 -0
- package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_draw.d.ts +14 -0
- package/editor/tools/v2/handle/gizmo_draw.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_handles.d.ts +160 -0
- package/editor/tools/v2/handle/gizmo_handles.d.ts.map +1 -0
- package/editor/tools/v2/handle/gizmo_ray_shapes.d.ts +103 -0
- package/editor/tools/v2/handle/gizmo_ray_shapes.d.ts.map +1 -0
- package/editor/view/GridPickCoordinateView.d.ts +22 -0
- package/editor/view/GridPickCoordinateView.d.ts.map +1 -0
- package/editor/view/ecs/ComponentControlView.d.ts +24 -0
- package/editor/view/ecs/ComponentControlView.d.ts.map +1 -0
- package/editor/view/ecs/EntityEditor.d.ts +25 -0
- package/editor/view/ecs/EntityEditor.d.ts.map +1 -0
- package/editor/view/ecs/EntityList.d.ts +22 -0
- package/editor/view/ecs/EntityList.d.ts.map +1 -0
- package/editor/view/ecs/HierarchicalEntityListView.d.ts +25 -0
- package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -0
- package/editor/view/ecs/components/DatGuiController.d.ts +2 -0
- package/editor/view/ecs/components/DatGuiController.d.ts.map +1 -0
- package/editor/view/ecs/components/color/GaugeView.d.ts +9 -5
- package/editor/view/ecs/components/color/GaugeView.d.ts.map +1 -1
- package/editor/view/ecs/components/color/GaugeView.js +4 -4
- package/editor/view/ecs/components/common/NumberController.d.ts +9 -5
- package/editor/view/ecs/components/common/NumberController.d.ts.map +1 -1
- package/editor/view/ecs/components/common/NumberController.js +4 -4
- package/editor/view/ecs/components/common/NumericIntervalController.d.ts +10 -0
- package/editor/view/ecs/components/common/NumericIntervalController.d.ts.map +1 -0
- package/editor/view/ecs/components/common/TextController.d.ts.map +1 -1
- package/editor/view/library/MeshLibraryView.d.ts +16 -0
- package/editor/view/library/MeshLibraryView.d.ts.map +1 -0
- package/editor/view/library/mesh_library_drag.d.ts +21 -0
- package/editor/view/library/mesh_library_drag.d.ts.map +1 -0
- package/editor/view/library/model_thumbnail_source.d.ts +12 -0
- package/editor/view/library/model_thumbnail_source.d.ts.map +1 -0
- package/editor/view/makeEntityDecorators.d.ts +6 -0
- package/editor/view/makeEntityDecorators.d.ts.map +1 -0
- package/editor/view/node-graph/NodeGraphCamera.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphSelection.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeView.d.ts.map +1 -1
- package/editor/view/node-graph/PortView.d.ts.map +1 -1
- package/editor/view/node-graph/actions/ConnectionCreateAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/NodeDeleteAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/NodeParameterSetAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/NodesMoveAction.d.ts.map +1 -1
- package/editor/view/node-graph/actions/SelectionSetAction.d.ts.map +1 -1
- package/editor/view/node-graph/connection_wire_geometry.d.ts.map +1 -1
- package/editor/view/particles/ColorLutGradientView.d.ts +19 -0
- package/editor/view/particles/ColorLutGradientView.d.ts.map +1 -0
- package/editor/view/particles/ScalarLutCurveView.d.ts +19 -0
- package/editor/view/particles/ScalarLutCurveView.d.ts.map +1 -0
- package/editor/view/prepareMeshLibrary.d.ts +7 -0
- package/editor/view/prepareMeshLibrary.d.ts.map +1 -0
- package/editor/view/process/ProcessView.d.ts +14 -0
- package/editor/view/process/ProcessView.d.ts.map +1 -0
- package/editor/view/shell/EditorShellView.d.ts +18 -0
- package/editor/view/shell/EditorShellView.d.ts.map +1 -0
- package/editor/view/shell/SceneTreePanelView.d.ts +17 -0
- package/editor/view/shell/SceneTreePanelView.d.ts.map +1 -0
- package/editor/view/shell/ViewportPanelView.d.ts +18 -0
- package/editor/view/shell/ViewportPanelView.d.ts.map +1 -0
- package/editor/view/tools/ToolSettingsView.d.ts +22 -0
- package/editor/view/tools/ToolSettingsView.d.ts.map +1 -0
- package/editor/view/tools/ToolView.d.ts +13 -0
- package/editor/view/tools/ToolView.d.ts.map +1 -0
- package/editor/view/v2/SplitView.d.ts +2 -0
- package/editor/view/v2/SplitView.d.ts.map +1 -0
- package/package.json +9 -11
- package/samples/engine/README.md +113 -0
- package/samples/engine/first-scene/index.html +32 -0
- package/samples/engine/first-scene/main.js +152 -0
- package/src/core/assert.d.ts +2 -2
- package/src/core/binary/BitSet.d.ts +2 -2
- package/src/core/binary/BitSet.d.ts.map +1 -1
- package/src/core/binary/BitSet.js +1 -1
- package/src/core/bvh2/bvh3/BVH.d.ts +4 -0
- package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BVH.js +4 -0
- package/src/core/bvh2/bvh3/BvhClient.d.ts +4 -0
- package/src/core/bvh2/bvh3/BvhClient.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/BvhClient.js +4 -0
- package/src/core/collection/array/array_sort_quick.d.ts +1 -1
- package/src/core/collection/list/List.d.ts +7 -3
- package/src/core/collection/list/List.d.ts.map +1 -1
- package/src/core/collection/list/List.js +6 -2
- package/src/core/collection/table/RowFirstTableSpec.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTableSpec.js +0 -4
- package/src/core/color/Color.d.ts +1 -0
- package/src/core/color/Color.d.ts.map +1 -1
- package/src/core/color/Color.js +4 -0
- package/src/core/events/signal/SignalBinding.d.ts +4 -0
- package/src/core/events/signal/SignalBinding.d.ts.map +1 -1
- package/src/core/events/signal/SignalBinding.js +4 -0
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts +5 -1
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.d.ts.map +1 -1
- package/src/core/geom/2d/quad-tree/QuadTreeDatum.js +4 -0
- package/src/core/geom/3d/SurfacePoint3.d.ts +2 -2
- package/src/core/geom/3d/SurfacePoint3.d.ts.map +1 -1
- package/src/core/geom/3d/SurfacePoint3.js +1 -1
- package/src/core/geom/3d/aabb/AABB3.d.ts +63 -7
- package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
- package/src/core/geom/3d/aabb/AABB3.js +17 -3
- package/src/core/geom/3d/mat4/m4_rigidity_defect.d.ts +30 -0
- package/src/core/geom/3d/mat4/m4_rigidity_defect.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_rigidity_defect.js +71 -0
- package/src/core/geom/3d/plane/plane3_compute_intersection_objects.js +2 -2
- package/src/core/geom/3d/ray/Ray3.d.ts +4 -4
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts +10 -3
- package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/AbstractShape3D.js +9 -2
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts +2 -2
- package/src/core/geom/3d/sphere/harmonics/sh3_rotate.d.ts +1 -1
- package/src/core/geom/Vector1.d.ts +4 -0
- package/src/core/geom/Vector1.d.ts.map +1 -1
- package/src/core/geom/Vector1.js +4 -0
- package/src/core/geom/Vector2.d.ts +4 -0
- package/src/core/geom/Vector2.d.ts.map +1 -1
- package/src/core/geom/Vector2.js +4 -0
- package/src/core/geom/Vector3.d.ts +4 -0
- package/src/core/geom/Vector3.d.ts.map +1 -1
- package/src/core/geom/Vector3.js +4 -0
- package/src/core/geom/Vector4.d.ts +4 -0
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +4 -0
- package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts +6 -2
- package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts.map +1 -1
- package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +4 -0
- package/src/core/geom/packing/miniball/Subspan.d.ts +4 -4
- package/src/core/geom/packing/miniball/Subspan.d.ts.map +1 -1
- package/src/core/geom/packing/miniball/Subspan.js +2 -2
- package/src/core/math/interval/NumericInterval.d.ts +4 -0
- package/src/core/math/interval/NumericInterval.d.ts.map +1 -1
- package/src/core/math/interval/NumericInterval.js +4 -0
- package/src/core/math/random/roundFair.d.ts +2 -2
- package/src/core/math/random/roundFair.d.ts.map +1 -1
- package/src/core/math/random/roundFair.js +1 -1
- package/src/core/model/BoundedValue.d.ts +4 -0
- package/src/core/model/BoundedValue.d.ts.map +1 -1
- package/src/core/model/BoundedValue.js +4 -0
- package/src/core/model/ObservedBoolean.d.ts +4 -0
- package/src/core/model/ObservedBoolean.d.ts.map +1 -1
- package/src/core/model/ObservedBoolean.js +4 -0
- package/src/core/model/ObservedInteger.d.ts +4 -0
- package/src/core/model/ObservedInteger.d.ts.map +1 -1
- package/src/core/model/ObservedInteger.js +4 -0
- package/src/core/model/ObservedString.d.ts +4 -0
- package/src/core/model/ObservedString.d.ts.map +1 -1
- package/src/core/model/ObservedString.js +4 -0
- package/src/core/model/stat/Stat.d.ts +7 -3
- package/src/core/model/stat/Stat.d.ts.map +1 -1
- package/src/core/model/stat/Stat.js +4 -0
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +65 -0
- package/src/engine/EngineHarness.d.ts +8 -1
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +10 -14
- package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts +2 -2
- package/src/engine/animation/clip/ecd_bind_animation_curve.d.ts.map +1 -1
- package/src/engine/animation/clip/ecd_bind_animation_curve.js +4 -4
- package/src/engine/asset/loaders/async_traverse_three_object.d.ts +2 -2
- package/src/engine/asset/loaders/async_traverse_three_object.d.ts.map +1 -1
- package/src/engine/asset/loaders/async_traverse_three_object.js +1 -1
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts +7 -3
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.d.ts.map +1 -1
- package/src/engine/asset/loaders/image/codec/ThreadedImageDecoder.js +33 -3
- package/src/engine/control/first-person/DESIGN.md +20 -2
- package/src/engine/control/first-person/DESIGN_COLLISION.md +17 -0
- package/src/engine/control/first-person/collision/KinematicMover.d.ts +58 -11
- package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
- package/src/engine/control/first-person/collision/KinematicMover.js +97 -20
- package/src/engine/ecs/Entity.js +1 -1
- package/src/engine/ecs/EntityComponentDataset.d.ts +2 -2
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +1 -1
- package/src/engine/ecs/EntityManager.d.ts.map +1 -1
- package/src/engine/ecs/EntityManager.js +27 -3
- package/src/engine/ecs/animation/Animation.d.ts +17 -3
- package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
- package/src/engine/ecs/animation/Animation.js +26 -6
- package/src/engine/ecs/terrain/TerrainPreview.d.ts +4 -0
- package/src/engine/ecs/terrain/TerrainPreview.d.ts.map +1 -1
- package/src/engine/ecs/terrain/TerrainPreview.js +4 -0
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts +4 -4
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +2 -2
- package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts +3 -2
- package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/makeTerrainWorkerProxy.js +25 -2
- package/src/engine/ecs/transform/Transform64.d.ts +4 -4
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +2 -2
- package/src/engine/graphics/ecs/decal/v2/Decal.d.ts +26 -0
- package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
- package/src/engine/graphics/ecs/decal/v2/Decal.js +26 -0
- package/src/engine/graphics/ecs/light/Light.d.ts +38 -1
- package/src/engine/graphics/ecs/light/Light.d.ts.map +1 -1
- package/src/engine/graphics/ecs/light/Light.js +51 -1
- package/src/engine/graphics/ecs/mesh/copyToVector3.d.ts +3 -3
- package/src/engine/graphics/ecs/mesh/copyToVector3.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh/copyToVector3.js +2 -2
- package/src/engine/graphics/ecs/mesh/setMesh.d.ts +2 -2
- package/src/engine/graphics/ecs/mesh/setMesh.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh/setMesh.js +1 -1
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts +2 -2
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +1 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts +3 -3
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryEquality.js +2 -2
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts +2 -2
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/computeGeometryHash.js +1 -1
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts +2 -2
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.d.ts.map +1 -1
- package/src/engine/graphics/geometry/buffered/compute_buffer_geometry_byte_size.js +1 -1
- package/src/engine/graphics/geometry/compute_geometry_polycount.d.ts +2 -2
- package/src/engine/graphics/geometry/compute_geometry_polycount.d.ts.map +1 -1
- package/src/engine/graphics/geometry/compute_geometry_polycount.js +1 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts +3 -3
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeV3.js +2 -2
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts +4 -4
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/copyAttributeValue.js +3 -3
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts +3 -3
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeV3.js +2 -2
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts +4 -4
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.d.ts.map +1 -1
- package/src/engine/graphics/geometry/ribbon/equalAttributeValue.js +3 -3
- package/src/engine/graphics/geometry/scaleGeometryToBox.d.ts +2 -2
- package/src/engine/graphics/geometry/scaleGeometryToBox.d.ts.map +1 -1
- package/src/engine/graphics/geometry/scaleGeometryToBox.js +1 -1
- package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.d.ts +2 -2
- package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.d.ts.map +1 -1
- package/src/engine/graphics/impostors/card_cluster/FacePlaneAssignment.js +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorDescription.d.ts +2 -2
- package/src/engine/graphics/impostors/octahedral/ImpostorDescription.d.ts.map +1 -1
- package/src/engine/graphics/impostors/octahedral/ImpostorDescription.js +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +4 -12
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +2 -2
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +5 -20
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +24 -24
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +16 -16
- package/src/engine/graphics/render/layers/RenderLayer.d.ts +4 -4
- package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
- package/src/engine/graphics/render/layers/RenderLayer.js +2 -2
- package/src/engine/graphics/render/make_bvh_visibility_builder.js +1 -1
- package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +1 -1
- package/src/engine/graphics/render/visibility/VisibilityComputer.js +1 -1
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts +2 -2
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.d.ts.map +1 -1
- package/src/engine/graphics/texture/computeThreeTextureInternalFormatFromDataType.js +1 -1
- package/src/engine/graphics3/DecalSystem.d.ts +8 -0
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem.js +8 -0
- package/src/engine/graphics3/GraphicsEngine.d.ts +19 -8
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +22 -11
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +11 -1
- package/src/engine/input/devices/gamepad/GamepadStickCalibration.d.ts +4 -0
- package/src/engine/input/devices/gamepad/GamepadStickCalibration.d.ts.map +1 -1
- package/src/engine/input/devices/gamepad/GamepadStickCalibration.js +4 -0
- package/src/engine/navigation/mesh/NavigationMesh.d.ts +90 -9
- package/src/engine/navigation/mesh/NavigationMesh.d.ts.map +1 -1
- package/src/engine/navigation/mesh/NavigationMesh.js +80 -8
- package/src/engine/network/NetworkSession.d.ts +60 -0
- package/src/engine/network/NetworkSession.d.ts.map +1 -1
- package/src/engine/network/NetworkSession.js +141 -1
- package/src/engine/network/orchestrator/NetworkPeer.d.ts +56 -8
- package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/NetworkPeer.js +263 -67
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +6 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +6 -0
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts +13 -7
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
- package/src/engine/network/orchestrator/ServerAuthoritativeServer.js +103 -138
- package/src/engine/network/replication/Replicator.d.ts +47 -6
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +362 -107
- package/src/engine/network/sim/ActionLog.d.ts +2 -0
- package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
- package/src/engine/network/sim/ActionLog.js +2 -0
- package/src/engine/network/sim/ActionRecordCursor.d.ts +82 -0
- package/src/engine/network/sim/ActionRecordCursor.d.ts.map +1 -0
- package/src/engine/network/sim/ActionRecordCursor.js +120 -0
- package/src/engine/network/sim/RewindEngine.d.ts.map +1 -1
- package/src/engine/network/sim/RewindEngine.js +13 -29
- package/src/engine/network/sim/SimActionExecutor.d.ts +2 -3
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +10 -11
- package/src/engine/physics/ecs/PhysicsSystem.d.ts +27 -0
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +27 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/sound/SoundEngine.d.ts +24 -0
- package/src/engine/sound/SoundEngine.d.ts.map +1 -1
- package/src/engine/sound/SoundEngine.js +29 -11
- package/src/engine/sound/simulation/configureAcousticSimulation.d.ts +12 -4
- package/src/engine/sound/simulation/configureAcousticSimulation.d.ts.map +1 -1
- package/src/engine/sound/simulation/configureAcousticSimulation.js +10 -4
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts +3 -1
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.d.ts.map +1 -1
- package/src/engine/sound/simulation/ecs/AcousticProbeFieldSystem.js +27 -1
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +34 -0
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/ProbeReverbRenderer.js +61 -2
- package/src/engine/sound/simulation/render/reverbImpulseResponse.d.ts.map +1 -1
- package/src/engine/sound/simulation/render/reverbImpulseResponse.js +9 -0
- package/src/shade/playground/particle_system/README.md +14 -3
- package/src/shade/playground/particle_system/index.html +1 -0
- package/src/shade/playground/particle_system/main.js +15 -2
- package/src/shade/playground/particle_system/particle_scene.d.ts +11 -2
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +164 -46
- package/src/shade/playground/skinned_mesh_soup/README.md +39 -18
- package/src/shade/playground/skinned_mesh_soup/index.html +9 -6
- package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/main.js +16 -13
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +8 -2
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +23 -4
- package/src/shade/renderer/GraphicsContext.d.ts +1 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +4 -0
- package/src/shade/renderer/Renderer.d.ts +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +1958 -1796
- package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +357 -0
- package/src/shade/renderer/animation/skin_bind_transform.d.ts +25 -0
- package/src/shade/renderer/animation/skin_bind_transform.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_bind_transform.js +33 -0
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts +67 -0
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.js +199 -0
- package/src/shade/renderer/animation/skin_frame_defect.d.ts +34 -0
- package/src/shade/renderer/animation/skin_frame_defect.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_frame_defect.js +132 -0
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts +24 -0
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_joint_matrix.js +46 -0
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts +70 -0
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +216 -0
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts +86 -0
- package/src/shade/renderer/animation/skin_test_fixtures.d.ts.map +1 -0
- package/src/shade/renderer/animation/skin_test_fixtures.js +250 -0
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts +18 -4
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.js +18 -4
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts +13 -0
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts.map +1 -1
- package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.js +13 -0
- package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.d.ts +18 -0
- package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet_geometry_build_from_geometry.js +18 -0
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +4 -0
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.js +4 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.d.ts +12 -0
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js +13 -0
- package/src/shade/renderer/light/environment/rgbe/parse_rgbe.d.ts +1 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/DESIGN.md +71 -20
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +29 -5
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +61 -6
- package/src/shade/renderer/particles/ParticleConstants.d.ts +31 -0
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +33 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +61 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -0
- package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +179 -0
- package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts +63 -0
- package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts.map +1 -0
- package/src/shade/renderer/particles/coherence/particle_program_buckets.js +116 -0
- package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts +59 -0
- package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts.map +1 -0
- package/src/shade/renderer/particles/coherence/shader_particle_bucket.js +344 -0
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +27 -5
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +27 -5
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +13 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.js +15 -1
- package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/chunk_particle_emitter.js +3 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +43 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +44 -0
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +33 -59
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +185 -118
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +15 -10
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/compile_particle_graph.js +205 -170
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +44 -0
- package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_graph_authoring.js +108 -0
- package/src/shade/renderer/particles/graph_particles.d.ts +39 -11
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +60 -20
- package/src/shade/renderer/particles/particle_prototype.d.ts.map +1 -1
- package/src/shade/renderer/particles/particle_prototype.js +181 -180
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +8 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +8 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +22 -2
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.js +54 -3
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +4 -4
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/create_particle_effect.js +19 -19
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +32 -14
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +2 -23
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +40 -11
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts +6 -17
- package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
- package/src/shade/renderer/particles/sort/shader_particle_sort.js +60 -9
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +1 -1
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +11 -0
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/SkinnedMesh.js +11 -0
- package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.d.ts +33 -3
- package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/quaternion/dual/chunk_dual_quat_from_m4.js +58 -37
- package/src/shade/wgsl/emulator/CPUBitmapData.d.ts +1 -1
- package/src/view/DOM.d.ts +69 -0
- package/src/view/DOM.d.ts.map +1 -0
- package/src/view/DOM.js +2 -1
- package/src/view/common/LocalizedLabelView.d.ts +50 -0
- package/src/view/common/LocalizedLabelView.d.ts.map +1 -0
- package/src/view/controller/controls/GuiControl.d.ts +19 -0
- package/src/view/controller/controls/GuiControl.d.ts.map +1 -0
- package/src/view/elements/FrameRateView.d.ts +45 -0
- package/src/view/elements/FrameRateView.d.ts.map +1 -0
- package/src/view/elements/FrameRateView.js +131 -0
- package/src/view/elements/SliderView.d.ts +37 -0
- package/src/view/elements/SliderView.d.ts.map +1 -0
- package/src/view/elements/SliderView.js +71 -0
- package/src/view/elements/navigation/ViewStack.d.ts +1 -1
- package/src/view/elements/navigation/ViewStack.js +1 -1
- package/src/view/elements/notify/NotificationView.d.ts +22 -0
- package/src/view/elements/notify/NotificationView.d.ts.map +1 -0
- package/src/view/tooltip/TooltipView.d.ts +5 -1
- package/src/view/tooltip/TooltipView.d.ts.map +1 -1
- package/src/view/tooltip/TooltipView.js +4 -0
- package/src/shade/renderer/particles/graph/ParticleGraph.d.ts +0 -54
- package/src/shade/renderer/particles/graph/ParticleGraph.d.ts.map +0 -1
- package/src/shade/renderer/particles/graph/ParticleGraph.js +0 -99
|
@@ -27,6 +27,19 @@ import { ReliableCommandPipeline } from "../transport/ReliableCommandPipeline.js
|
|
|
27
27
|
const DISCONNECT_TEXT_ENCODER = new TextEncoder();
|
|
28
28
|
const DISCONNECT_TEXT_DECODER = new TextDecoder();
|
|
29
29
|
|
|
30
|
+
// ACTION_STREAM slice header, after the packet-type byte: uint32 frame_start,
|
|
31
|
+
// uint32 frame_end, uint8 head. See NetworkPacketType.ACTION_STREAM.
|
|
32
|
+
const ACTION_STREAM_SLICE_HEADER_BYTES = 9;
|
|
33
|
+
|
|
34
|
+
// Widest slice a header may claim. A slice covers frames from the pack start
|
|
35
|
+
// to the last frame packed, so it never spans more than the sender's action
|
|
36
|
+
// log holds — a ring of tens or hundreds of frames. The receiver raises its
|
|
37
|
+
// apply watermark to a head's frame_end, so a header claiming 2^32 frames
|
|
38
|
+
// would have it skip every frame the sender ever sends after; that is a
|
|
39
|
+
// sender bug or a sender lying about its own stream, and either is dropped as
|
|
40
|
+
// malformed rather than obeyed.
|
|
41
|
+
const MAX_ACTION_STREAM_SLICE_FRAMES = 65536;
|
|
42
|
+
|
|
30
43
|
/**
|
|
31
44
|
* Wire packet types. The first byte of every NetworkPeer-routed payload picks
|
|
32
45
|
* the dispatch path. New types can be added without breaking the action stream
|
|
@@ -36,6 +49,20 @@ const DISCONNECT_TEXT_DECODER = new TextDecoder();
|
|
|
36
49
|
* @enum {number}
|
|
37
50
|
*/
|
|
38
51
|
export const NetworkPacketType = {
|
|
52
|
+
/**
|
|
53
|
+
* A slice of the action stream. Wire layout (after this type byte):
|
|
54
|
+
*
|
|
55
|
+
* uint32 frame_start first frame the slice covers
|
|
56
|
+
* uint32 frame_end last frame the slice covers
|
|
57
|
+
* uint8 head 1 if this is the first slice of the sender's tick
|
|
58
|
+
* bytes groups {@link Replicator} wire format
|
|
59
|
+
*
|
|
60
|
+
* A tick may send several slices, and the receiver applies them in frame
|
|
61
|
+
* order: a slice that is not a head and starts past what the receiver has
|
|
62
|
+
* applied is held until the slices before it land. A head's start is the
|
|
63
|
+
* earliest frame the sender will send again, so it is applied at once.
|
|
64
|
+
* A packet of just the type byte carries nothing and is ignored.
|
|
65
|
+
*/
|
|
39
66
|
ACTION_STREAM: 0,
|
|
40
67
|
RECOVERY_REQUEST: 1,
|
|
41
68
|
STATE_BURST: 2,
|
|
@@ -177,10 +204,20 @@ export const ResumeRejectReason = Object.freeze({
|
|
|
177
204
|
* range is confirmed only when `unacked` reaches zero without `abandoned`
|
|
178
205
|
* having been set by a loss along the way.
|
|
179
206
|
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
207
|
+
* A tick may make several sends to one peer, each carrying the next slice of
|
|
208
|
+
* the owed range (see {@link NetworkPeer#flush_outbound}). They confirm
|
|
209
|
+
* independently, and the baseline advances only through slices confirmed in
|
|
210
|
+
* order — a later slice landing says nothing about an earlier one still in
|
|
211
|
+
* flight. `head` marks the first slice of a tick, whose start is the pack
|
|
212
|
+
* start itself; see {@link NetworkPeer#__credit_confirmed}.
|
|
213
|
+
*
|
|
214
|
+
* @typedef {{frame_start: number, frame_end: number, head: boolean, unacked: number, abandoned: boolean}} PendingAck
|
|
215
|
+
* @property {number} frame_start first frame in the packed range
|
|
216
|
+
* @property {number} frame_end last frame in the packed range
|
|
217
|
+
* @property {boolean} head this send began at the pack start, so nothing
|
|
218
|
+
* sendable lies before it and its confirmation credits outright
|
|
219
|
+
* @property {number} unacked seqs of this send not yet acked or declared lost
|
|
220
|
+
* @property {boolean} abandoned at least one seq was declared lost, so the
|
|
184
221
|
* message is forfeit and must never advance the baseline
|
|
185
222
|
*/
|
|
186
223
|
|
|
@@ -248,6 +285,15 @@ export class NetworkPeer {
|
|
|
248
285
|
*/
|
|
249
286
|
#sent_seqs = [];
|
|
250
287
|
|
|
288
|
+
/**
|
|
289
|
+
* Scratch for the slice header of the ACTION_STREAM packet being
|
|
290
|
+
* dispatched, handed to `Replicator.unpack_from_peer`, which copies what
|
|
291
|
+
* it keeps. Only valid for the duration of that call.
|
|
292
|
+
* @type {{frame_start: number, frame_end: number, head: boolean}}
|
|
293
|
+
* @private
|
|
294
|
+
*/
|
|
295
|
+
#slice = { frame_start: 0, frame_end: 0, head: false };
|
|
296
|
+
|
|
251
297
|
/**
|
|
252
298
|
* @param {{
|
|
253
299
|
* world: EntityComponentDataset,
|
|
@@ -259,6 +305,7 @@ export class NetworkPeer {
|
|
|
259
305
|
* initial_buffer_size?: number,
|
|
260
306
|
* mutation_ledger?: MutationLedger|null,
|
|
261
307
|
* changed_set_capacity?: number,
|
|
308
|
+
* max_packets_per_tick?: number,
|
|
262
309
|
* }} options
|
|
263
310
|
*/
|
|
264
311
|
constructor({
|
|
@@ -271,11 +318,13 @@ export class NetworkPeer {
|
|
|
271
318
|
initial_buffer_size = 1024,
|
|
272
319
|
mutation_ledger = null,
|
|
273
320
|
changed_set_capacity = 256,
|
|
321
|
+
max_packets_per_tick = 8,
|
|
274
322
|
}) {
|
|
275
323
|
assert.ok(world && typeof world.createEntity === 'function', 'world must be an EntityComponentDataset');
|
|
276
324
|
assert.ok(binary_registry, 'binary_registry required');
|
|
277
325
|
assert.isFunction(replicated_components.forEach, 'replicated_components must be iterable');
|
|
278
326
|
assert.isFunction(action_classes.forEach, 'action_classes must be iterable');
|
|
327
|
+
assert.isPositiveInteger(max_packets_per_tick, 'max_packets_per_tick');
|
|
279
328
|
|
|
280
329
|
/** @type {EntityComponentDataset} */
|
|
281
330
|
this.world = world;
|
|
@@ -298,6 +347,33 @@ export class NetworkPeer {
|
|
|
298
347
|
/** @type {ActionLog} */
|
|
299
348
|
this.action_log = new ActionLog({ frame_capacity, initial_buffer_size });
|
|
300
349
|
|
|
350
|
+
/**
|
|
351
|
+
* Most action-stream packets {@link flush_outbound} may send one peer
|
|
352
|
+
* in a tick. Each carries the next slice of what the peer is owed and
|
|
353
|
+
* is confirmed on its own, so this caps how fast a peer that has
|
|
354
|
+
* fallen behind catches up: a slice is re-sent every tick until its ack
|
|
355
|
+
* returns, so a peer is confirmed at most this many packets of frames
|
|
356
|
+
* per round trip, against the one frame per tick the simulation
|
|
357
|
+
* produces. One packet a tick keeps up only while a round trip's frames
|
|
358
|
+
* fit one packet; past that the owed range grows until it meets the
|
|
359
|
+
* ring floor and frames are lost.
|
|
360
|
+
*
|
|
361
|
+
* It is also the bandwidth ceiling under catch-up — this many MTUs per
|
|
362
|
+
* tick per peer — and it has to stay inside the channel's ack window.
|
|
363
|
+
* A peer's ack header covers its latest 33 seqs, so with a peer that
|
|
364
|
+
* replies once a tick, `33 / max_packets_per_tick` consecutive lost
|
|
365
|
+
* replies leave a delivered packet outside the window and it is
|
|
366
|
+
* declared lost: a wasted re-send rather than a defect, since the
|
|
367
|
+
* receiver skips frames it has already applied. Eight tolerates three
|
|
368
|
+
* such losses in a row (one tick in sixteen at 50% loss, one in ten
|
|
369
|
+
* thousand at 10%), and lets a 60 Hz stream at 100 ms RTT carry a full
|
|
370
|
+
* packet of actions per frame. Lower it for peers that reply less often
|
|
371
|
+
* than every tick.
|
|
372
|
+
*
|
|
373
|
+
* @type {number}
|
|
374
|
+
*/
|
|
375
|
+
this.max_packets_per_tick = max_packets_per_tick;
|
|
376
|
+
|
|
301
377
|
/**
|
|
302
378
|
* Optional per-tick mutation tracker. When a `MutationLedger` is supplied,
|
|
303
379
|
* this peer records each tick's affected network IDs into a fresh
|
|
@@ -343,8 +419,8 @@ export class NetworkPeer {
|
|
|
343
419
|
this.baseline = new Baseline();
|
|
344
420
|
|
|
345
421
|
/**
|
|
346
|
-
* peer_id → { channel, transport, seq_to_pending, on_payload, on_acked }
|
|
347
|
-
* @type {Map<number, { channel: Channel, transport: Object, seq_to_pending: Map<number, PendingAck>, on_payload: Function, on_acked: Function }>}
|
|
422
|
+
* peer_id → { channel, transport, seq_to_pending, confirmed, on_payload, on_acked }
|
|
423
|
+
* @type {Map<number, { channel: Channel, transport: Object, seq_to_pending: Map<number, PendingAck>, confirmed: Int32Array, on_payload: Function, on_acked: Function }>}
|
|
348
424
|
* @private
|
|
349
425
|
*/
|
|
350
426
|
this.#peers = new Map();
|
|
@@ -504,7 +580,23 @@ export class NetworkPeer {
|
|
|
504
580
|
|
|
505
581
|
const channel = new Channel({ transport });
|
|
506
582
|
const seq_to_pending = new Map();
|
|
507
|
-
|
|
583
|
+
// Frames this peer has confirmed that the baseline has not reached yet,
|
|
584
|
+
// because a slice before them is still in flight. A ring indexed by
|
|
585
|
+
// frame modulo capacity holding the frame number — see
|
|
586
|
+
// __credit_confirmed.
|
|
587
|
+
const confirmed = new Int32Array(this.action_log.frame_capacity).fill(-1);
|
|
588
|
+
// The reassembly window is sized from the burst. A frame too big for
|
|
589
|
+
// one packet goes out as a fragmented slice, and a tick may send
|
|
590
|
+
// `max_packets_per_tick` of them; jitter that holds a message's later
|
|
591
|
+
// fragments behind the next ticks' first fragments leaves that many
|
|
592
|
+
// partial messages per tick in flight at once. The assembler evicts
|
|
593
|
+
// the oldest partial when its window is full, both fragments of the
|
|
594
|
+
// evicted message are still acked, and the sender credits the slice —
|
|
595
|
+
// a silent loss. Four ticks of burst keeps the window ahead of any
|
|
596
|
+
// jitter the NACK timer would not already have caught.
|
|
597
|
+
const fragment_assembler = new FragmentAssembler({
|
|
598
|
+
max_pending_messages: Math.max(8, 4 * this.max_packets_per_tick),
|
|
599
|
+
});
|
|
508
600
|
const fragment_retention = new FragmentRetention();
|
|
509
601
|
const reliable_pipeline = new ReliableCommandPipeline({
|
|
510
602
|
channel,
|
|
@@ -548,11 +640,25 @@ export class NetworkPeer {
|
|
|
548
640
|
const packet_type = this.#recv_buffer.readUint8();
|
|
549
641
|
|
|
550
642
|
switch (packet_type) {
|
|
551
|
-
case NetworkPacketType.ACTION_STREAM:
|
|
552
|
-
//
|
|
553
|
-
|
|
554
|
-
|
|
643
|
+
case NetworkPacketType.ACTION_STREAM: {
|
|
644
|
+
// Just the type byte: an empty stream, nothing to apply.
|
|
645
|
+
if (length === 1) break;
|
|
646
|
+
if (length < 1 + ACTION_STREAM_SLICE_HEADER_BYTES) {
|
|
647
|
+
throw new MalformedPacketError(`NetworkPeer.dispatch: ACTION_STREAM truncated before its slice header`);
|
|
648
|
+
}
|
|
649
|
+
const slice = this.#slice;
|
|
650
|
+
slice.frame_start = this.#recv_buffer.readUint32();
|
|
651
|
+
slice.frame_end = this.#recv_buffer.readUint32();
|
|
652
|
+
slice.head = this.#recv_buffer.readUint8() !== 0;
|
|
653
|
+
if (slice.frame_end < slice.frame_start
|
|
654
|
+
|| slice.frame_end - slice.frame_start >= MAX_ACTION_STREAM_SLICE_FRAMES) {
|
|
655
|
+
throw new MalformedPacketError(`NetworkPeer.dispatch: ACTION_STREAM slice [${slice.frame_start}, ${slice.frame_end}] is inverted or wider than any action log`);
|
|
656
|
+
}
|
|
657
|
+
// The Replicator opens a frame on the action log per group
|
|
658
|
+
// (one per sender frame), applying slices in frame order.
|
|
659
|
+
this.replicator.unpack_from_peer(peer_id, this.#recv_buffer, length, slice);
|
|
555
660
|
break;
|
|
661
|
+
}
|
|
556
662
|
case NetworkPacketType.RECOVERY_REQUEST: {
|
|
557
663
|
const start_tick = this.#recv_buffer.readUintVar();
|
|
558
664
|
const end_tick = this.#recv_buffer.readUintVar();
|
|
@@ -674,20 +780,21 @@ export class NetworkPeer {
|
|
|
674
780
|
}
|
|
675
781
|
};
|
|
676
782
|
|
|
677
|
-
// Ack:
|
|
678
|
-
//
|
|
679
|
-
//
|
|
680
|
-
//
|
|
681
|
-
//
|
|
682
|
-
//
|
|
683
|
-
//
|
|
783
|
+
// Ack: a send is confirmed once every seq it went out under has been
|
|
784
|
+
// acked. For a single-packet send that is the one seq. For a
|
|
785
|
+
// fragmented send it is all N fragments, because the receiver applies
|
|
786
|
+
// nothing until it has reassembled the whole message; advancing on the
|
|
787
|
+
// first fragment's ack would retire a frame range the receiver never
|
|
788
|
+
// saw, from the only mechanism that could still re-send it. What a
|
|
789
|
+
// confirmed send credits to the baseline is decided in order, by
|
|
790
|
+
// __credit_confirmed.
|
|
684
791
|
const on_acked = (seq) => {
|
|
685
792
|
const pending = seq_to_pending.get(seq);
|
|
686
793
|
if (pending === undefined) return;
|
|
687
794
|
seq_to_pending.delete(seq);
|
|
688
795
|
pending.unacked--;
|
|
689
796
|
if (pending.unacked === 0 && !pending.abandoned) {
|
|
690
|
-
this
|
|
797
|
+
this.#credit_confirmed(peer_id, confirmed, pending);
|
|
691
798
|
}
|
|
692
799
|
};
|
|
693
800
|
|
|
@@ -743,7 +850,7 @@ export class NetworkPeer {
|
|
|
743
850
|
channel.onPacketLost.add(on_lost);
|
|
744
851
|
|
|
745
852
|
this.#peers.set(peer_id, {
|
|
746
|
-
channel, transport, seq_to_pending,
|
|
853
|
+
channel, transport, seq_to_pending, confirmed,
|
|
747
854
|
on_payload: payload_handler, on_acked, on_lost, on_nack,
|
|
748
855
|
fragment_assembler, fragment_retention,
|
|
749
856
|
reliable_pipeline,
|
|
@@ -905,9 +1012,10 @@ export class NetworkPeer {
|
|
|
905
1012
|
* by the caller. Records the tick's accumulated mutations into the
|
|
906
1013
|
* MutationLedger (if configured), then packs frames
|
|
907
1014
|
* `[last_acked+1, current_frame]` for each peer via
|
|
908
|
-
* `Replicator.pack_for_peer
|
|
909
|
-
*
|
|
910
|
-
*
|
|
1015
|
+
* `Replicator.pack_for_peer` into up to {@link max_packets_per_tick}
|
|
1016
|
+
* channel packets, each the next slice of that range. Empty packs (no
|
|
1017
|
+
* in-scope actions) are not sent. Clears the per-tick changed-entity set
|
|
1018
|
+
* after recording.
|
|
911
1019
|
*
|
|
912
1020
|
* @param {number} current_frame
|
|
913
1021
|
*/
|
|
@@ -973,54 +1081,93 @@ export class NetworkPeer {
|
|
|
973
1081
|
);
|
|
974
1082
|
if (start > current_frame) continue;
|
|
975
1083
|
|
|
976
|
-
|
|
977
|
-
//
|
|
978
|
-
this.#send_buffer.writeUint8(NetworkPacketType.ACTION_STREAM);
|
|
979
|
-
// Bound the pack to a single channel packet.
|
|
1084
|
+
// Up to `max_packets_per_tick` sends, each bounded to one channel
|
|
1085
|
+
// packet and each taking the next slice of the owed range.
|
|
980
1086
|
//
|
|
981
|
-
//
|
|
982
|
-
//
|
|
983
|
-
//
|
|
984
|
-
//
|
|
985
|
-
// which
|
|
986
|
-
//
|
|
1087
|
+
// Bounding a send to one packet is load-bearing. A fragmented
|
|
1088
|
+
// action stream is confirmed only if EVERY fragment survives, so a
|
|
1089
|
+
// send that grows with the owed range is self-defeating under
|
|
1090
|
+
// loss: one lost fragment pins the baseline, which widens the next
|
|
1091
|
+
// pack, which raises the fragment count N, which drops
|
|
1092
|
+
// P(all arrive) = (1-p)^N geometrically — the range then widens
|
|
1093
|
+
// faster than it drains and delivery collapses. Split into whole
|
|
1094
|
+
// packets instead, each slice is confirmed on its own and a loss
|
|
1095
|
+
// forfeits one slice, not the tick.
|
|
987
1096
|
//
|
|
988
|
-
//
|
|
989
|
-
//
|
|
990
|
-
//
|
|
991
|
-
//
|
|
992
|
-
//
|
|
1097
|
+
// Sending more than one is what keeps the stream up with the
|
|
1098
|
+
// simulation. A slice is re-sent every tick until its ack returns,
|
|
1099
|
+
// so the baseline moves by at most a tick's worth of slices per
|
|
1100
|
+
// round trip, while the sim produces a frame per tick. One packet
|
|
1101
|
+
// a tick therefore keeps up only while a round trip's frames fit
|
|
1102
|
+
// one packet; past that the owed range grows until it meets the
|
|
1103
|
+
// ring floor, a ring of frames is lost crossing it, and everything
|
|
1104
|
+
// after arrives a ring late — on a link that loses nothing. The
|
|
1105
|
+
// pack is oldest-owed-first, which is what the range order already
|
|
1106
|
+
// gives.
|
|
993
1107
|
//
|
|
994
|
-
// The budget is what is left of one payload after the prefix
|
|
995
|
-
//
|
|
996
|
-
// `pack_for_peer` measures its budget from the current
|
|
997
|
-
// so a hard-coded allowance would have to be edited in
|
|
998
|
-
// every byte added here, and getting that wrong puts
|
|
999
|
-
// pack one byte over the limit and quietly fragments it
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1108
|
+
// The budget is what is left of one payload after the prefix and
|
|
1109
|
+
// the slice header, read from the buffer rather than written as a
|
|
1110
|
+
// constant: `pack_for_peer` measures its budget from the current
|
|
1111
|
+
// position, so a hard-coded allowance would have to be edited in
|
|
1112
|
+
// step with every byte added here, and getting that wrong puts
|
|
1113
|
+
// each full pack one byte over the limit and quietly fragments it
|
|
1114
|
+
// again.
|
|
1115
|
+
let from = start;
|
|
1116
|
+
for (let n = 0; n < this.max_packets_per_tick && from <= current_frame; n++) {
|
|
1117
|
+
this.#send_buffer.position = 0;
|
|
1118
|
+
// Packet-type prefix, then the slice header: the range this
|
|
1119
|
+
// packet covers and whether it is the tick's first, which is
|
|
1120
|
+
// what lets the receiver apply slices in frame order (see
|
|
1121
|
+
// Replicator.unpack_from_peer). frame_end is back-patched once
|
|
1122
|
+
// the pack has decided how far it got.
|
|
1123
|
+
this.#send_buffer.writeUint8(NetworkPacketType.ACTION_STREAM);
|
|
1124
|
+
this.#send_buffer.writeUint32(from);
|
|
1125
|
+
const frame_end_position = this.#send_buffer.position;
|
|
1126
|
+
this.#send_buffer.writeUint32(0);
|
|
1127
|
+
this.#send_buffer.writeUint8(n === 0 ? 1 : 0);
|
|
1128
|
+
const packed_through = this.replicator.pack_for_peer(
|
|
1129
|
+
peer_id, from, current_frame, this.#send_buffer,
|
|
1130
|
+
MAX_CHANNEL_PAYLOAD_BYTES - this.#send_buffer.position,
|
|
1131
|
+
);
|
|
1132
|
+
const length = this.#send_buffer.position;
|
|
1133
|
+
// Just the prefix and header → nothing in scope left to send
|
|
1134
|
+
// this peer.
|
|
1135
|
+
if (length === 1 + ACTION_STREAM_SLICE_HEADER_BYTES) break;
|
|
1136
|
+
this.#send_buffer.position = frame_end_position;
|
|
1137
|
+
this.#send_buffer.writeUint32(packed_through);
|
|
1138
|
+
this.#send_buffer.position = length;
|
|
1139
|
+
|
|
1140
|
+
this.#send_to_peer(conn, this.#send_buffer.raw_bytes, length, this.#sent_seqs);
|
|
1141
|
+
|
|
1142
|
+
// One record shared by every seq the send produced. Frames
|
|
1143
|
+
// [from, packed_through] are confirmed only when all of those
|
|
1144
|
+
// seqs ack; a loss on any of them abandons the record and
|
|
1145
|
+
// leaves the range owed, so a later tick's pack picks it up
|
|
1146
|
+
// again.
|
|
1147
|
+
//
|
|
1148
|
+
// frame_end is what the pack actually held, NOT current_frame:
|
|
1149
|
+
// the budget may have stopped it short, and crediting frames
|
|
1150
|
+
// that were left out of the packet would retire them from the
|
|
1151
|
+
// back-fill unsent — the same defect as crediting a whole
|
|
1152
|
+
// message to its first fragment, one layer up.
|
|
1153
|
+
//
|
|
1154
|
+
// Only the first slice starts at the pack start. The rest start
|
|
1155
|
+
// where the previous slice stopped, and their confirmation is
|
|
1156
|
+
// held until everything before them is confirmed too — see
|
|
1157
|
+
// __credit_confirmed.
|
|
1158
|
+
const seq_count = this.#sent_seqs.length;
|
|
1159
|
+
const pending = {
|
|
1160
|
+
frame_start: from,
|
|
1161
|
+
frame_end: packed_through,
|
|
1162
|
+
head: n === 0,
|
|
1163
|
+
unacked: seq_count,
|
|
1164
|
+
abandoned: false,
|
|
1165
|
+
};
|
|
1166
|
+
for (let i = 0; i < seq_count; i++) {
|
|
1167
|
+
conn.seq_to_pending.set(this.#sent_seqs[i], pending);
|
|
1168
|
+
}
|
|
1009
1169
|
|
|
1010
|
-
|
|
1011
|
-
// [start, packed_through] are confirmed only when all of those seqs
|
|
1012
|
-
// ack; a loss on any of them abandons the record and leaves the
|
|
1013
|
-
// range owed, so the next tick's pack picks it up again.
|
|
1014
|
-
//
|
|
1015
|
-
// frame_end is what the pack actually held, NOT current_frame: the
|
|
1016
|
-
// budget may have stopped it short, and crediting frames that were
|
|
1017
|
-
// left out of the packet would retire them from the back-fill
|
|
1018
|
-
// unsent — the same defect as crediting a whole message to its
|
|
1019
|
-
// first fragment, one layer up.
|
|
1020
|
-
const seq_count = this.#sent_seqs.length;
|
|
1021
|
-
const pending = { frame_end: packed_through, unacked: seq_count, abandoned: false };
|
|
1022
|
-
for (let i = 0; i < seq_count; i++) {
|
|
1023
|
-
conn.seq_to_pending.set(this.#sent_seqs[i], pending);
|
|
1170
|
+
from = packed_through + 1;
|
|
1024
1171
|
}
|
|
1025
1172
|
}
|
|
1026
1173
|
|
|
@@ -1029,6 +1176,55 @@ export class NetworkPeer {
|
|
|
1029
1176
|
if (this.#changed_entities !== null) this.#changed_entities.clear();
|
|
1030
1177
|
}
|
|
1031
1178
|
|
|
1179
|
+
/**
|
|
1180
|
+
* A send has been confirmed in full — every seq it went out under acked,
|
|
1181
|
+
* none lost — so the receiver has applied every frame it carried. Record
|
|
1182
|
+
* those frames, then advance the peer's baseline as far as the frames
|
|
1183
|
+
* confirmed so far run contiguously.
|
|
1184
|
+
*
|
|
1185
|
+
* The order matters because a tick may send several slices and they
|
|
1186
|
+
* confirm independently. A later slice landing while an earlier one is
|
|
1187
|
+
* still in flight must not credit the earlier one's frames: they are
|
|
1188
|
+
* still owed, and crediting them would retire them from the back-fill
|
|
1189
|
+
* unsent. So a slice is credited only once the baseline has reached the
|
|
1190
|
+
* frame before it. The exception is the head of a tick's burst. Its start
|
|
1191
|
+
* IS the pack start — `last_acked + 1` or the ring floor, whichever is
|
|
1192
|
+
* newer — so nothing sendable lies before it and its confirmation credits
|
|
1193
|
+
* outright. That is also how the baseline gets past frames the ring has
|
|
1194
|
+
* already retired, which no ack could ever confirm.
|
|
1195
|
+
*
|
|
1196
|
+
* `confirmed` is a ring indexed by frame modulo capacity that stores the
|
|
1197
|
+
* frame number, so a slot whose frame has since been overwritten reads as
|
|
1198
|
+
* unconfirmed rather than as its successor (the {@link FrameBufferRing}
|
|
1199
|
+
* trick). A mark can only be overwritten by a frame a full ring later,
|
|
1200
|
+
* and a frame that far behind is below the ring floor — no longer owed,
|
|
1201
|
+
* and no longer needed to advance the baseline, which a head crosses it
|
|
1202
|
+
* with.
|
|
1203
|
+
*
|
|
1204
|
+
* @param {number} peer_id
|
|
1205
|
+
* @param {Int32Array} confirmed the peer's confirmed-frame ring
|
|
1206
|
+
* @param {PendingAck} pending the record that just drained
|
|
1207
|
+
* @private
|
|
1208
|
+
*/
|
|
1209
|
+
#credit_confirmed(peer_id, confirmed, pending) {
|
|
1210
|
+
const capacity = confirmed.length;
|
|
1211
|
+
for (let f = pending.frame_start; f <= pending.frame_end; f++) {
|
|
1212
|
+
confirmed[f % capacity] = f;
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
const before = this.baseline.last_acked(peer_id);
|
|
1216
|
+
let last_acked = before;
|
|
1217
|
+
if (pending.head && pending.frame_end > last_acked) {
|
|
1218
|
+
last_acked = pending.frame_end;
|
|
1219
|
+
}
|
|
1220
|
+
while (confirmed[(last_acked + 1) % capacity] === last_acked + 1) {
|
|
1221
|
+
last_acked++;
|
|
1222
|
+
}
|
|
1223
|
+
if (last_acked > before) {
|
|
1224
|
+
this.baseline.set_acked(peer_id, last_acked);
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1032
1228
|
/**
|
|
1033
1229
|
* Send a logical payload to a connected peer, fragmenting transparently
|
|
1034
1230
|
* if it exceeds the channel's single-packet capacity.
|
|
@@ -45,6 +45,7 @@ export class ServerAuthoritativeClient {
|
|
|
45
45
|
* input_byte_size?: number,
|
|
46
46
|
* reconcile_epsilon?: number,
|
|
47
47
|
* time_dilation?: TimeDilation,
|
|
48
|
+
* max_packets_per_tick?: number,
|
|
48
49
|
* }} options
|
|
49
50
|
*
|
|
50
51
|
* `time_dilation`: optional pre-configured {@link TimeDilation}.
|
|
@@ -52,8 +53,11 @@ export class ServerAuthoritativeClient {
|
|
|
52
53
|
* {@link dilation_factor} for the caller to scale its tick cadence.
|
|
53
54
|
* Defaults to a stock instance; `dilation_factor` is 1.0 until the
|
|
54
55
|
* first feedback arrives.
|
|
56
|
+
*
|
|
57
|
+
* `max_packets_per_tick`: forwarded to {@link NetworkPeer}; how many
|
|
58
|
+
* action-stream packets a tick may send the server.
|
|
55
59
|
*/
|
|
56
|
-
constructor({ world, binary_registry, replicated_components, action_classes, scope_filter, frame_capacity, initial_buffer_size, input_ring_capacity, input_byte_size, reconcile_epsilon, time_dilation, }: {
|
|
60
|
+
constructor({ world, binary_registry, replicated_components, action_classes, scope_filter, frame_capacity, initial_buffer_size, input_ring_capacity, input_byte_size, reconcile_epsilon, time_dilation, max_packets_per_tick, }: {
|
|
57
61
|
world: EntityComponentDataset;
|
|
58
62
|
binary_registry: BinarySerializationRegistry;
|
|
59
63
|
replicated_components: Function[];
|
|
@@ -65,6 +69,7 @@ export class ServerAuthoritativeClient {
|
|
|
65
69
|
input_byte_size?: number;
|
|
66
70
|
reconcile_epsilon?: number;
|
|
67
71
|
time_dilation?: TimeDilation;
|
|
72
|
+
max_packets_per_tick?: number;
|
|
68
73
|
});
|
|
69
74
|
/** @type {number} */
|
|
70
75
|
reconcile_count: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerAuthoritativeClient.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/orchestrator/ServerAuthoritativeClient.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;IAsBI
|
|
1
|
+
{"version":3,"file":"ServerAuthoritativeClient.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/orchestrator/ServerAuthoritativeClient.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;IAsBI;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,iOAxBW;QACV,KAAS,yBAAyB;QAClC,eAAmB,8BAA8B;QACjD,qBAAyB,EAAE,UAAU,CAAC;QACtC,cAAkB,EAAE,UAAU,CAAC;QAC/B,YAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,mBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,mBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,eAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,iBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,aAAiB,CAAC,EAAE,YAAY,CAAC;QACjC,oBAAwB,CAAC,EAAE,MAAM,CAAC;KAC/B,EA6LH;IAjND,qBAAqB;IACrB,iBADW,MAAM,CACG;IAEpB,qBAAqB;IACrB,oBADW,MAAM,CACM;IAyCnB,0BAA0B;IAC1B,MADW,WAAW,CAUpB;IAEF,qCAAqC;IACrC,8BAAkB;IAClB,gCAAgC;IAChC,4BAAkC;IAClC,mCAAmC;IACnC,iCAAsC;IACtC,wBAAwB;IACxB,sBAAsC;IACtC,gCAAgC;IAChC,mCAAgD;IAEhD;;;;OAIG;IACH,YAFU,SAAS,CAKjB;IAEF,2BAA2B;IAC3B,eADW,YAAY,CAKrB;IAEF;;;;;OAKG;IACH,mBAFU,MAAM,CAE0B;IAE1C;;;;;OAKG;IACH,eAFU,YAAY,CAEY;IAElC;;;;OAIG;IACH,mBAFU,MAAM,CAEW;IAE3B;;;;;;;;OAQG;IACH,iBAFU,MAAM,CAEU;IAO1B;;;;;;;;;OASG;IACH,WAFU,MAAM,CAEa;IAE7B;;;;;;;;;OASG;IACH,UAFU,MAAM,CAEY;IAE5B;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAFU,MAAM,CAEqB;IAErC;;;;;OAKG;IACH,kBAFU,MAAM,CAEoB;IAEpC;;;;;;;OAOG;IACH,mBAFU,MAAM,CAEqB;IAErC;;;;;;;;OAQG;IACH,kBAFU,MAAM,CAEoB;IAEpC;;;;OAIG;IACH,qBAFU,MAAM,CAEuB;IAQ3C;;;;OAIG;IACH,2BAHW,MAAM,aACN,MAAM,QAIhB;IAED;;;OAGG;IACH,gCAFW,MAAM,QAIhB;IAED;iCAC6B;IAC7B,qBADW,MAAM,6CAGhB;IAED;;;;;;;;;;OAUG;IACH,oBAFW,MAAM,QAahB;IAED;;;;;;;OAOG;IACH,qBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;OAMG;IACH,iBAHW,MAAM,gBAKhB;IAiFD;;;;;OAKG;IACH,oBAFW,MAAM,QAIhB;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAIhB;;CACJ;4BA7a2B,kBAAkB;0BAFpB,uBAAuB;6BADpB,wBAAwB;6BAExB,yBAAyB;mBAJnC,uCAAuC"}
|
|
@@ -75,6 +75,7 @@ export class ServerAuthoritativeClient {
|
|
|
75
75
|
* input_byte_size?: number,
|
|
76
76
|
* reconcile_epsilon?: number,
|
|
77
77
|
* time_dilation?: TimeDilation,
|
|
78
|
+
* max_packets_per_tick?: number,
|
|
78
79
|
* }} options
|
|
79
80
|
*
|
|
80
81
|
* `time_dilation`: optional pre-configured {@link TimeDilation}.
|
|
@@ -82,6 +83,9 @@ export class ServerAuthoritativeClient {
|
|
|
82
83
|
* {@link dilation_factor} for the caller to scale its tick cadence.
|
|
83
84
|
* Defaults to a stock instance; `dilation_factor` is 1.0 until the
|
|
84
85
|
* first feedback arrives.
|
|
86
|
+
*
|
|
87
|
+
* `max_packets_per_tick`: forwarded to {@link NetworkPeer}; how many
|
|
88
|
+
* action-stream packets a tick may send the server.
|
|
85
89
|
*/
|
|
86
90
|
constructor({
|
|
87
91
|
world,
|
|
@@ -95,6 +99,7 @@ export class ServerAuthoritativeClient {
|
|
|
95
99
|
input_byte_size = 4,
|
|
96
100
|
reconcile_epsilon = 1e-4,
|
|
97
101
|
time_dilation = new TimeDilation(),
|
|
102
|
+
max_packets_per_tick,
|
|
98
103
|
}) {
|
|
99
104
|
/** @type {NetworkPeer} */
|
|
100
105
|
this.peer = new NetworkPeer({
|
|
@@ -105,6 +110,7 @@ export class ServerAuthoritativeClient {
|
|
|
105
110
|
scope_filter,
|
|
106
111
|
frame_capacity,
|
|
107
112
|
initial_buffer_size,
|
|
113
|
+
max_packets_per_tick,
|
|
108
114
|
});
|
|
109
115
|
|
|
110
116
|
/** @type {EntityComponentDataset} */
|
|
@@ -6,14 +6,15 @@
|
|
|
6
6
|
*
|
|
7
7
|
* 1. Inbound action packets do NOT execute on arrival. Instead, a deferral
|
|
8
8
|
* hook on the {@link Replicator} drops them into a per-tick pending log
|
|
9
|
-
* tagged with `(client_frame, sender_id, type_id, payload_bytes)
|
|
9
|
+
* tagged with `(client_frame, sender_id, type_id, payload_bytes)` —
|
|
10
|
+
* unless the action log already holds that record. The action stream
|
|
11
|
+
* re-sends every unconfirmed frame each tick, so most arrivals at any
|
|
12
|
+
* real latency are copies of applied records; those are dropped where
|
|
13
|
+
* they arrive, and pending holds only input the log does not.
|
|
10
14
|
* 2. Once per server tick, `tick(current_frame)` consumes the pending log:
|
|
11
15
|
* - Rejects entries older than the action_log's rewindable window.
|
|
12
|
-
* - Determines `replay_start`: the oldest pending frame
|
|
13
|
-
*
|
|
14
|
-
* every unacked frame each tick, so most of pending is copies of
|
|
15
|
-
* already-applied records; rewinding for those would replay the
|
|
16
|
-
* world into the state it was already in.
|
|
16
|
+
* - Determines `replay_start`: the oldest pending frame, which by the
|
|
17
|
+
* above is the oldest frame whose outcome can change.
|
|
17
18
|
* - Rewinds the server world back to end-of-(replay_start - 1) via the
|
|
18
19
|
* action_log's prior-state captures (see {@link RewindEngine}).
|
|
19
20
|
* - Replays forward `[replay_start, current_frame]`. For each frame `f`:
|
|
@@ -75,8 +76,12 @@ export class ServerAuthoritativeServer {
|
|
|
75
76
|
* frame_capacity?: number,
|
|
76
77
|
* initial_buffer_size?: number,
|
|
77
78
|
* simulation_delay_ticks?: number,
|
|
79
|
+
* max_packets_per_tick?: number,
|
|
78
80
|
* }} options
|
|
79
81
|
*
|
|
82
|
+
* `max_packets_per_tick`: forwarded to {@link NetworkPeer}; how many
|
|
83
|
+
* action-stream packets a tick may send one peer.
|
|
84
|
+
*
|
|
80
85
|
* `simulation_delay_ticks`: server-side input buffer (Overwatch-style).
|
|
81
86
|
* When > 0, {@link tick}(wall_frame) simulates
|
|
82
87
|
* `sim_frame = wall_frame - simulation_delay_ticks`. Pending actions
|
|
@@ -86,7 +91,7 @@ export class ServerAuthoritativeServer {
|
|
|
86
91
|
* input-to-feedback latency (client prediction hides it). Default 0
|
|
87
92
|
* reproduces pre-feature behavior.
|
|
88
93
|
*/
|
|
89
|
-
constructor({ world, binary_registry, replicated_components, action_classes, scope_filter, frame_capacity, initial_buffer_size, simulation_delay_ticks, max_pending_future_lead, max_pending_total, identity_class, server_peer_id, }: {
|
|
94
|
+
constructor({ world, binary_registry, replicated_components, action_classes, scope_filter, frame_capacity, initial_buffer_size, simulation_delay_ticks, max_pending_future_lead, max_pending_total, identity_class, server_peer_id, max_packets_per_tick, }: {
|
|
90
95
|
world: EntityComponentDataset;
|
|
91
96
|
binary_registry: BinarySerializationRegistry;
|
|
92
97
|
replicated_components: Function[];
|
|
@@ -95,6 +100,7 @@ export class ServerAuthoritativeServer {
|
|
|
95
100
|
frame_capacity?: number;
|
|
96
101
|
initial_buffer_size?: number;
|
|
97
102
|
simulation_delay_ticks?: number;
|
|
103
|
+
max_packets_per_tick?: number;
|
|
98
104
|
});
|
|
99
105
|
/**
|
|
100
106
|
* Most recently simulated frame. `-1` during warmup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerAuthoritativeServer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/orchestrator/ServerAuthoritativeServer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ServerAuthoritativeServer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/orchestrator/ServerAuthoritativeServer.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH;IAsCI;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,6PAxBW;QACV,KAAS,yBAAyB;QAClC,eAAmB,8BAA8B;QACjD,qBAAyB,EAAE,UAAU,CAAC;QACtC,cAAkB,EAAE,UAAU,CAAC;QAC/B,YAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,mBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,oBAAwB,CAAC,EAAE,MAAM,CAAC;KAC/B,EAiOH;IApPD;;;;;OAKG;IACH,mBAFU,MAAM,CAEO;IA6CnB,0BAA0B;IAC1B,MADW,WAAW,CAUpB;IAEF,qCAAqC;IACrC,8BAAkB;IAClB,gCAAgC;IAChC,4BAAkC;IAclC,mCAAmC;IACnC,iCAAsC;IACtC,wBAAwB;IACxB,sBAAsC;IACtC,gCAAgC;IAChC,mCAAgD;IAChD,0CAA0C;IAC1C,gDAAsD;IAEtD,2BAA2B;IAC3B,eADW,YAAY,CAKrB;IAEF;;;;;;OAMG;IACH,6BAFU,MAAM,CAEqB;IAErC;;;;OAIG;IACH,wBAFU,MAAM,CAEoC;IAEpD;;;;;;;OAOG;IACH,gBAFU,MAAM,CAEoB;IAEpC;;;;;;;;;OASG;IACH,yBAFU,MAAM,CAEsC;IAEtD;;;;;;;;;OASG;IACH,mBAFU,MAAM,CAE0B;IA+B1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,YAFU,MAAM,CAEc;IAE9B;;;;;;;OAOG;IACH,gBAFU,MAAM,CAEkB;IAElC;;;;;;;;;;;OAWG;IACH,UAFU,MAAM,CAEY;IAE5B;;;;;;;OAOG;IACH,wBAFU,MAAM,CAE0B;IAG9C;;;;;;;OAOG;IACH,sBAHW,MAAM,aACN,MAAM,QAIhB;IAED;;;OAGG;IACH,yBAFW,MAAM,QAIhB;IAED;;;;;;;;OAQG;IACH,yBALW,MAAM,gBACN,MAAM,cACN,MAAM,kBACA,YAAY,KAAK,IAAI,QAIrC;IAED;;;;OAIG;IACH,qBAFW,MAAM,6CAIhB;IAED;;;;;;;;OAQG;IACH,qCAFW,MAAM,QAIhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,wCA8BC;IAED;;;OAGG;IACH,6BAFa,MAAM,CAIlB;IAED;;;;;;;;;;;;OAYG;IACH,oBAFW,MAAM,QAkDhB;IAED;;;;;;;;OAQG;IACH,+BAHW,MAAM,GACJ,MAAM,CAOlB;IAyLD;;;;OAIG;IACH,yBAFa,MAAM,CAIlB;;CA8IJ;4BA52B2B,kBAAkB;6BAFjB,wBAAwB;mBAPlC,uCAAuC;6BAH7B,sCAAsC"}
|