@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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Forward cursor over the records of one closed {@link ActionLog} frame.
|
|
3
|
+
*
|
|
4
|
+
* The record layout is self-describing (see {@link ActionLog}), so any reader
|
|
5
|
+
* can walk it — and five did, each with its own copy of the header parse: the
|
|
6
|
+
* replicator's scope scan and action copy, the rewind engine's boundary pass,
|
|
7
|
+
* and the rollback server's history read and retransmission check. This is
|
|
8
|
+
* that parse in one place. {@link next} reads one record's header and exposes
|
|
9
|
+
* the layout as positions into the frame's buffer; what a reader does with the
|
|
10
|
+
* prior-state entries or the action payload is its own business.
|
|
11
|
+
*
|
|
12
|
+
* Allocation-free after construction: a reader owns one cursor and re-opens
|
|
13
|
+
* it per frame. After `next` returns true the buffer's `position` is at the
|
|
14
|
+
* END of the record, so a reader that wants the prior-state entries sets
|
|
15
|
+
* `position = prior_start` and reads `prior_count` of them; `next` seeks from
|
|
16
|
+
* `record_end` regardless of where the reader left the position.
|
|
17
|
+
*
|
|
18
|
+
* ```
|
|
19
|
+
* cursor.open(action_log, frame);
|
|
20
|
+
* while (cursor.next()) {
|
|
21
|
+
* // cursor.action_type_id, cursor.sender_id,
|
|
22
|
+
* // cursor.buffer.raw_bytes[cursor.payload_start .. + cursor.payload_len]
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @author Alex Goldring
|
|
27
|
+
* @copyright Company Named Limited (c) 2026
|
|
28
|
+
*/
|
|
29
|
+
export class ActionRecordCursor {
|
|
30
|
+
/**
|
|
31
|
+
* The open frame's buffer, positioned at {@link record_end} after each
|
|
32
|
+
* successful {@link next}.
|
|
33
|
+
* @type {BinaryBuffer|null}
|
|
34
|
+
*/
|
|
35
|
+
buffer: BinaryBuffer | null;
|
|
36
|
+
/** @type {number} first byte of the current record */
|
|
37
|
+
record_start: number;
|
|
38
|
+
/** @type {number} prior-state entries in the current record */
|
|
39
|
+
prior_count: number;
|
|
40
|
+
/**
|
|
41
|
+
* First byte of the first prior-state entry. Each entry is
|
|
42
|
+
* `varint entity_id, uint8 component_type_id, uint32 len, bytes[len]`.
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
prior_start: number;
|
|
46
|
+
/** @type {number} */
|
|
47
|
+
action_type_id: number;
|
|
48
|
+
/**
|
|
49
|
+
* The record's provenance byte: a peer id, `SENDER_LOCAL` or
|
|
50
|
+
* `SENDER_DERIVED` (see {@link SimActionExecutor}).
|
|
51
|
+
* @type {number}
|
|
52
|
+
*/
|
|
53
|
+
sender_id: number;
|
|
54
|
+
/** @type {number} first byte of the action payload */
|
|
55
|
+
payload_start: number;
|
|
56
|
+
/** @type {number} */
|
|
57
|
+
payload_len: number;
|
|
58
|
+
/**
|
|
59
|
+
* One past the last byte of the current record — and so the first byte of
|
|
60
|
+
* the next, which is where {@link next} resumes. `0` before the first
|
|
61
|
+
* record.
|
|
62
|
+
* @type {number}
|
|
63
|
+
*/
|
|
64
|
+
record_end: number;
|
|
65
|
+
/**
|
|
66
|
+
* Position the cursor before the first record of `frame`, which must be
|
|
67
|
+
* closed and present in the log (see {@link ActionLog#buffer_for}).
|
|
68
|
+
*
|
|
69
|
+
* @param {ActionLog} action_log
|
|
70
|
+
* @param {number} frame
|
|
71
|
+
*/
|
|
72
|
+
open(action_log: ActionLog, frame: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* Advance to the next record. Returns false once the frame is exhausted,
|
|
75
|
+
* leaving the fields as they were.
|
|
76
|
+
*
|
|
77
|
+
* @returns {boolean}
|
|
78
|
+
*/
|
|
79
|
+
next(): boolean;
|
|
80
|
+
#private;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=ActionRecordCursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionRecordCursor.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/sim/ActionRecordCursor.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IACI;;;;OAIG;IACH,QAFU,eAAa,IAAI,CAEb;IAEd,sDAAsD;IACtD,cADW,MAAM,CACA;IAEjB,+DAA+D;IAC/D,aADW,MAAM,CACD;IAEhB;;;;OAIG;IACH,aAFU,MAAM,CAEA;IAEhB,qBAAqB;IACrB,gBADW,MAAM,CACE;IAEnB;;;;OAIG;IACH,WAFU,MAAM,CAEF;IAEd,sDAAsD;IACtD,eADW,MAAM,CACC;IAElB,qBAAqB;IACrB,aADW,MAAM,CACD;IAEhB;;;;;OAKG;IACH,YAFU,MAAM,CAED;IAKf;;;;;;OAMG;IACH,mCAFW,MAAM,QAMhB;IAED;;;;;OAKG;IACH,QAFa,OAAO,CAyBnB;;CACJ"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Forward cursor over the records of one closed {@link ActionLog} frame.
|
|
3
|
+
*
|
|
4
|
+
* The record layout is self-describing (see {@link ActionLog}), so any reader
|
|
5
|
+
* can walk it — and five did, each with its own copy of the header parse: the
|
|
6
|
+
* replicator's scope scan and action copy, the rewind engine's boundary pass,
|
|
7
|
+
* and the rollback server's history read and retransmission check. This is
|
|
8
|
+
* that parse in one place. {@link next} reads one record's header and exposes
|
|
9
|
+
* the layout as positions into the frame's buffer; what a reader does with the
|
|
10
|
+
* prior-state entries or the action payload is its own business.
|
|
11
|
+
*
|
|
12
|
+
* Allocation-free after construction: a reader owns one cursor and re-opens
|
|
13
|
+
* it per frame. After `next` returns true the buffer's `position` is at the
|
|
14
|
+
* END of the record, so a reader that wants the prior-state entries sets
|
|
15
|
+
* `position = prior_start` and reads `prior_count` of them; `next` seeks from
|
|
16
|
+
* `record_end` regardless of where the reader left the position.
|
|
17
|
+
*
|
|
18
|
+
* ```
|
|
19
|
+
* cursor.open(action_log, frame);
|
|
20
|
+
* while (cursor.next()) {
|
|
21
|
+
* // cursor.action_type_id, cursor.sender_id,
|
|
22
|
+
* // cursor.buffer.raw_bytes[cursor.payload_start .. + cursor.payload_len]
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @author Alex Goldring
|
|
27
|
+
* @copyright Company Named Limited (c) 2026
|
|
28
|
+
*/
|
|
29
|
+
export class ActionRecordCursor {
|
|
30
|
+
/**
|
|
31
|
+
* The open frame's buffer, positioned at {@link record_end} after each
|
|
32
|
+
* successful {@link next}.
|
|
33
|
+
* @type {BinaryBuffer|null}
|
|
34
|
+
*/
|
|
35
|
+
buffer = null;
|
|
36
|
+
|
|
37
|
+
/** @type {number} first byte of the current record */
|
|
38
|
+
record_start = 0;
|
|
39
|
+
|
|
40
|
+
/** @type {number} prior-state entries in the current record */
|
|
41
|
+
prior_count = 0;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* First byte of the first prior-state entry. Each entry is
|
|
45
|
+
* `varint entity_id, uint8 component_type_id, uint32 len, bytes[len]`.
|
|
46
|
+
* @type {number}
|
|
47
|
+
*/
|
|
48
|
+
prior_start = 0;
|
|
49
|
+
|
|
50
|
+
/** @type {number} */
|
|
51
|
+
action_type_id = 0;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The record's provenance byte: a peer id, `SENDER_LOCAL` or
|
|
55
|
+
* `SENDER_DERIVED` (see {@link SimActionExecutor}).
|
|
56
|
+
* @type {number}
|
|
57
|
+
*/
|
|
58
|
+
sender_id = 0;
|
|
59
|
+
|
|
60
|
+
/** @type {number} first byte of the action payload */
|
|
61
|
+
payload_start = 0;
|
|
62
|
+
|
|
63
|
+
/** @type {number} */
|
|
64
|
+
payload_len = 0;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* One past the last byte of the current record — and so the first byte of
|
|
68
|
+
* the next, which is where {@link next} resumes. `0` before the first
|
|
69
|
+
* record.
|
|
70
|
+
* @type {number}
|
|
71
|
+
*/
|
|
72
|
+
record_end = 0;
|
|
73
|
+
|
|
74
|
+
/** @type {number} one past the last byte of the frame */
|
|
75
|
+
#end = 0;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Position the cursor before the first record of `frame`, which must be
|
|
79
|
+
* closed and present in the log (see {@link ActionLog#buffer_for}).
|
|
80
|
+
*
|
|
81
|
+
* @param {ActionLog} action_log
|
|
82
|
+
* @param {number} frame
|
|
83
|
+
*/
|
|
84
|
+
open(action_log, frame) {
|
|
85
|
+
this.buffer = action_log.buffer_for(frame); // rewinds to 0
|
|
86
|
+
this.#end = action_log.write_end_for(frame);
|
|
87
|
+
this.record_end = 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Advance to the next record. Returns false once the frame is exhausted,
|
|
92
|
+
* leaving the fields as they were.
|
|
93
|
+
*
|
|
94
|
+
* @returns {boolean}
|
|
95
|
+
*/
|
|
96
|
+
next() {
|
|
97
|
+
if (this.record_end >= this.#end) return false;
|
|
98
|
+
|
|
99
|
+
const buffer = this.buffer;
|
|
100
|
+
buffer.position = this.record_end;
|
|
101
|
+
|
|
102
|
+
this.record_start = buffer.position;
|
|
103
|
+
this.prior_count = buffer.readUintVar();
|
|
104
|
+
this.prior_start = buffer.position;
|
|
105
|
+
for (let i = 0; i < this.prior_count; i++) {
|
|
106
|
+
buffer.readUintVar(); // entity_id
|
|
107
|
+
buffer.readUint8(); // component_type_id
|
|
108
|
+
const prior_len = buffer.readUint32();
|
|
109
|
+
buffer.position += prior_len; // prior payload
|
|
110
|
+
}
|
|
111
|
+
this.action_type_id = buffer.readUint8();
|
|
112
|
+
this.sender_id = buffer.readUint8();
|
|
113
|
+
this.payload_len = buffer.readUint32();
|
|
114
|
+
this.payload_start = buffer.position;
|
|
115
|
+
this.record_end = this.payload_start + this.payload_len;
|
|
116
|
+
buffer.position = this.record_end;
|
|
117
|
+
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RewindEngine.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/sim/RewindEngine.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RewindEngine.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/sim/RewindEngine.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAeI;;;;;;OAMG;IACH,uDANW;QACV,UAAc,YAAY;QAC1B,KAAS,yBAAyB;QAClC,kBAAsB,8BAA8B;KACjD,EAiBH;IAdG;;OAEG;IACH,sBAA4B;IAE5B;;OAEG;IACH,8BAAkB;IAElB;;OAEG;IACH,gDAA4C;IAGhD;;;;;OAKG;IACH,kBAFW,MAAM,QA0BhB;IAED;;;;;;;;;OASG;IACH,yBAHW,MAAM,gBACN,MAAM,QAWhB;;CAiDJ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
|
+
import { ActionRecordCursor } from "./ActionRecordCursor.js";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Walks the {@link ActionLog} backwards to restore prior component state.
|
|
@@ -28,6 +29,13 @@ export class RewindEngine {
|
|
|
28
29
|
*/
|
|
29
30
|
#record_starts = new Int32Array(64);
|
|
30
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Walks a frame's records to find where each starts.
|
|
34
|
+
* @type {ActionRecordCursor}
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
37
|
+
#cursor = new ActionRecordCursor();
|
|
38
|
+
|
|
31
39
|
/**
|
|
32
40
|
* @param {{
|
|
33
41
|
* action_log: ActionLog,
|
|
@@ -64,20 +72,19 @@ export class RewindEngine {
|
|
|
64
72
|
throw new Error(`RewindEngine.undo_frame: frame ${frame} is not present in the action log`);
|
|
65
73
|
}
|
|
66
74
|
|
|
67
|
-
const buffer = this.action_log.buffer_for(frame);
|
|
68
|
-
const end = this.action_log.write_end_for(frame);
|
|
69
|
-
|
|
70
75
|
// 1. First pass: walk forward to find record boundaries.
|
|
76
|
+
const cursor = this.#cursor;
|
|
77
|
+
cursor.open(this.action_log, frame);
|
|
71
78
|
let record_count = 0;
|
|
72
|
-
while (
|
|
79
|
+
while (cursor.next()) {
|
|
73
80
|
if (record_count >= this.#record_starts.length) {
|
|
74
81
|
this.#grow_record_starts();
|
|
75
82
|
}
|
|
76
|
-
this.#record_starts[record_count++] =
|
|
77
|
-
this.#skip_record(buffer);
|
|
83
|
+
this.#record_starts[record_count++] = cursor.record_start;
|
|
78
84
|
}
|
|
79
85
|
|
|
80
86
|
// 2. Second pass: iterate records in reverse, restoring prior state.
|
|
87
|
+
const buffer = cursor.buffer;
|
|
81
88
|
for (let i = record_count - 1; i >= 0; i--) {
|
|
82
89
|
buffer.position = this.#record_starts[i];
|
|
83
90
|
this.#restore_prior_state(buffer);
|
|
@@ -106,29 +113,6 @@ export class RewindEngine {
|
|
|
106
113
|
}
|
|
107
114
|
}
|
|
108
115
|
|
|
109
|
-
/**
|
|
110
|
-
* Walk past a single record without restoring anything. Buffer position
|
|
111
|
-
* advances to the start of the next record (or to `end` if this was the last).
|
|
112
|
-
*
|
|
113
|
-
* @param {BinaryBuffer} buffer
|
|
114
|
-
* @private
|
|
115
|
-
*/
|
|
116
|
-
#skip_record(buffer) {
|
|
117
|
-
// Skip prior_state entries.
|
|
118
|
-
const prior_count = buffer.readUintVar();
|
|
119
|
-
for (let i = 0; i < prior_count; i++) {
|
|
120
|
-
buffer.readUintVar(); // entity_id
|
|
121
|
-
buffer.readUint8(); // component_type_id
|
|
122
|
-
const len = buffer.readUint32();
|
|
123
|
-
buffer.position += len; // skip prior payload
|
|
124
|
-
}
|
|
125
|
-
// Skip action.
|
|
126
|
-
buffer.readUint8(); // action_type_id
|
|
127
|
-
buffer.readUint8(); // sender_id
|
|
128
|
-
const action_len = buffer.readUint32();
|
|
129
|
-
buffer.position += action_len; // skip action payload
|
|
130
|
-
}
|
|
131
|
-
|
|
132
116
|
/**
|
|
133
117
|
* Read the prior_state entries of the record at the buffer's current position
|
|
134
118
|
* and write them back into the live components. Buffer position advances past
|
|
@@ -122,8 +122,7 @@ export class SimActionExecutor {
|
|
|
122
122
|
*
|
|
123
123
|
* Set by a rollback orchestrator for the span in which the frame's local
|
|
124
124
|
* sim runs (see `ServerAuthoritativeServer.__replay_frame`) and cleared
|
|
125
|
-
* immediately after
|
|
126
|
-
* action's `apply` during that span. Everything else — arrived input,
|
|
125
|
+
* immediately after. Everything outside that span — arrived input,
|
|
127
126
|
* locally-authored actions — is left with its real sender.
|
|
128
127
|
*
|
|
129
128
|
* Only the RECORDED byte changes. `sender_id` still drives the
|
|
@@ -192,7 +191,7 @@ export class SimActionExecutor {
|
|
|
192
191
|
* @param {SimAction} action
|
|
193
192
|
* @param {number} [sender_id] peer that originated this action.
|
|
194
193
|
* Defaults to {@link SENDER_LOCAL} for locally-originated actions.
|
|
195
|
-
* Must be in `[0,
|
|
194
|
+
* Must be in `[0, MAX_PEER_ID]` for remote-originated actions.
|
|
196
195
|
* @returns {boolean} true if the action was applied; false if it was
|
|
197
196
|
* rejected by the {@link authorize} gate (and therefore not applied or
|
|
198
197
|
* logged).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimActionExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/sim/SimActionExecutor.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,2BAFU,MAAM,CAEiB;AAEjC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,6BAFU,MAAM,CAEmB;AAEnC;;;;;GAKG;AACH,0BAFU,MAAM,CAEgB;AAEhC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;
|
|
1
|
+
{"version":3,"file":"SimActionExecutor.d.ts","sourceRoot":"","sources":["../../../../../src/engine/network/sim/SimActionExecutor.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,2BAFU,MAAM,CAEiB;AAEjC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,6BAFU,MAAM,CAEmB;AAEnC;;;;;GAKG;AACH,0BAFU,MAAM,CAEgB;AAEhC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IA2DI;;;;;;;;;OASG;IACH,sGATW;QACV,KAAS,yBAAyB;QAClC,UAAc,YAAY;QAC1B,eAAmB,oBAAoB;QACvC,kBAAsB,8BAA8B;QACpD,UAAc,uBAAuB;QACrC,gBAAoB,CAAC,mBAAmB;KACrC,EAyFH;IAvJD;;;;;;;;;OASG;IACH,gBAFU,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAEP;IAEtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,uBAFuB,MAAM,aAAa,MAAM,wBAAwB,OAAO,CAE9D;IAEjB;;;;;;;;;;;;;;;OAeG;IACH,UAFU,OAAO,CAEA;IAab;;OAEG;IACH,8BAAkB;IAElB;;OAEG;IACH,sBAA4B;IAE5B;;OAEG;IACH,mCAAsC;IAEtC;;OAEG;IACH,gDAA4C;IAE5C;;;;OAIG;IACH,iCAA4B;IAE5B;;;;;;;;;;;OAWG;IACH,kBAFU,mBAAiB,IAAI,CAES;IA4BxC;;;;;;;OAOG;IACH,mBAFU,MAAM,CAEqB;IAErC;;;;;;;OAOG;IACH,kBAFU,MAAM,CAEoB;IAGxC;;;;;;;;;;OAUG;IACH,uCAPW,MAAM,GAGJ,OAAO,CAgJnB;;CACJ;mBA3XkB,uCAAuC"}
|
|
@@ -116,8 +116,7 @@ export class SimActionExecutor {
|
|
|
116
116
|
*
|
|
117
117
|
* Set by a rollback orchestrator for the span in which the frame's local
|
|
118
118
|
* sim runs (see `ServerAuthoritativeServer.__replay_frame`) and cleared
|
|
119
|
-
* immediately after
|
|
120
|
-
* action's `apply` during that span. Everything else — arrived input,
|
|
119
|
+
* immediately after. Everything outside that span — arrived input,
|
|
121
120
|
* locally-authored actions — is left with its real sender.
|
|
122
121
|
*
|
|
123
122
|
* Only the RECORDED byte changes. `sender_id` still drives the
|
|
@@ -233,7 +232,7 @@ export class SimActionExecutor {
|
|
|
233
232
|
* @param {SimAction} action
|
|
234
233
|
* @param {number} [sender_id] peer that originated this action.
|
|
235
234
|
* Defaults to {@link SENDER_LOCAL} for locally-originated actions.
|
|
236
|
-
* Must be in `[0,
|
|
235
|
+
* Must be in `[0, MAX_PEER_ID]` for remote-originated actions.
|
|
237
236
|
* @returns {boolean} true if the action was applied; false if it was
|
|
238
237
|
* rejected by the {@link authorize} gate (and therefore not applied or
|
|
239
238
|
* logged).
|
|
@@ -250,18 +249,18 @@ export class SimActionExecutor {
|
|
|
250
249
|
`execute: action class '${action.constructor.action_type_name ?? action.constructor.name}' has no wire type_id — register it (NetworkSession.defineAction, or SimActionRegistry.register) before executing it`,
|
|
251
250
|
);
|
|
252
251
|
assert.isNonNegativeInteger(sender_id, 'sender_id');
|
|
253
|
-
// A
|
|
254
|
-
//
|
|
255
|
-
//
|
|
256
|
-
//
|
|
257
|
-
//
|
|
258
|
-
//
|
|
252
|
+
// A sender above the peer range is either the sim-derived sentinel —
|
|
253
|
+
// which a rollback replay reads back as "this record is mine to
|
|
254
|
+
// recompute", so the peer's input would apply once and then disappear
|
|
255
|
+
// on the first replay of its frame, with nothing logged — or a value
|
|
256
|
+
// that does not fit the record's one byte at all. SENDER_LOCAL itself
|
|
257
|
+
// is the caller saying "mine". Real runtime check: asserts strip in
|
|
258
|
+
// prod, and silent input loss is not something to ship behind one.
|
|
259
259
|
if (sender_id > MAX_PEER_ID && sender_id !== SENDER_LOCAL) {
|
|
260
260
|
throw new Error(
|
|
261
|
-
`SimActionExecutor.execute: sender_id ${sender_id} is
|
|
261
|
+
`SimActionExecutor.execute: sender_id ${sender_id} is not a peer id; remote peer ids must be in [0, ${MAX_PEER_ID}] — 254 and 255 are reserved provenance markers`,
|
|
262
262
|
);
|
|
263
263
|
}
|
|
264
|
-
assert.ok(sender_id <= 0xFF, 'sender_id must fit in a uint8');
|
|
265
264
|
|
|
266
265
|
// Expose the originating sender to apply / affected_components / the
|
|
267
266
|
// authorize policy before any of them run.
|
|
@@ -835,6 +835,33 @@ export class PhysicsSystem extends System<any> {
|
|
|
835
835
|
* {@link InterpolationSystem} blends consecutive ticks from these snapshots.
|
|
836
836
|
* Only awake (moving) bodies are recorded, so the log stays sparse. No-op
|
|
837
837
|
* unless {@link interpolationLog} is wired.
|
|
838
|
+
*
|
|
839
|
+
* **A body created after this pass has no snapshot for the step it was born on, and renders
|
|
840
|
+
* from one snapshot for a step.** This pass runs at the end of `fixedUpdate`, and game code
|
|
841
|
+
* runs after it — that ordering is correct, the sim must read the solved poses — so a body
|
|
842
|
+
* spawned by game code is invisible to the tick it was spawned into. Its first record is the
|
|
843
|
+
* NEXT tick, and `InterpolationLog.interpolate` handles the missing half gracefully by falling
|
|
844
|
+
* back to whichever snapshot exists. That is the right primitive behaviour and it produces a
|
|
845
|
+
* bad picture: the entity is drawn at the *newer* tick for a whole frame budget, so it appears
|
|
846
|
+
* to jump a full step's travel and then hold still for one. Measured at 165 Hz by a port
|
|
847
|
+
* (GAP-036) as four frames of a rocket parked at the muzzle, reported by a player as
|
|
848
|
+
* "projectiles move with jerks".
|
|
849
|
+
*
|
|
850
|
+
* **Why this is documented rather than fixed, which is the part worth knowing.** The obvious
|
|
851
|
+
* fix — record a body's pose when it links — does not fit this log. {@link InterpolationLog} is
|
|
852
|
+
* a strictly monotonic tick ring: `begin_tick` throws while a tick is open, pages are
|
|
853
|
+
* contiguous ranges that the next page's bytes follow immediately, and `#ticks` is keyed by
|
|
854
|
+
* tick number — so re-opening the closed tick to append one body would overwrite that tick's
|
|
855
|
+
* metadata for every other body in it. The fix that does work is to move this pass out of
|
|
856
|
+
* `fixedUpdate` into a system registered after every simulation system, which is what a
|
|
857
|
+
* consumer hitting this did; that costs a second mandatory registration, which is a trade this
|
|
858
|
+
* engine has decided against elsewhere. Closing it properly means either a per-body "first
|
|
859
|
+
* tick" the blend can consult, or a log that accepts an out-of-order record.
|
|
860
|
+
*
|
|
861
|
+
* The workaround needs no engine change: put the body on the application's own timeline via a
|
|
862
|
+
* pose recorder registered last, since `__interp_restore` does not filter by `sourceId` and
|
|
863
|
+
* `PhysicsSystem` still restores the authoritative pose before it integrates.
|
|
864
|
+
*
|
|
838
865
|
* @private
|
|
839
866
|
*/
|
|
840
867
|
private __interp_record;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/PhysicsSystem.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PhysicsSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/ecs/PhysicsSystem.js"],"names":[],"mappings":"AAsGA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAiRI,cAqBC;IApSD,sDAAsC;IACtC,kKAIE;IAEF;;;;OAIG;IACH,kBAHU,WAAW,CAGO;IAE5B;;;;OAIG;IACH,WAFU,GAAG,CAES;IAEtB;;;;OAIG;IACH,YAFU,GAAG,CAEU;IAEvB;;;;OAIG;IACH,oBAHU,aAAa,CAGS;IAEhC;;;;;OAKG;IACH,OAFU,QAAQ,CAEK;IAEvB;;;;OAIG;IACH,eAFU,kBAAkB,CAEa;IAEzC;;;;;OAKG;IACH,SAFU,aAAa,CAEO;IAE9B;;;;;;;;;OASG;IACH,gBAFU,eAAe,CAEc;IAEvC;;;;;;OAMG;IACH,2BAFU,MAAM,CAEiB;IAEjC;;;;OAIG;IACH,oBAFU,MAAM,CAES;IAEzB;;;;;;OAMG;IACH,UAFU,MAAM,CAEH;IAEb;;;;;OAKG;IACH,oBAFU,MAAM,CAEO;IAEvB;;;OAGG;IACH,oBAFU,MAAM,CAEO;IAEvB;;;;;;;OAOG;IACH,cAFU,MAAM,CAEE;IAElB;;;;OAIG;IACH,qBAFU,MAAM,CAES;IAEzB;;;;OAIG;IACH,0BAOE;IAEF;;;;OAIG;IACH,kBAFU,OAAO,CAEkB;IAEnC;;;;;OAKG;IACH,yBAAwB;IAExB;;;;;OAKG;IACH,UAFU,SAAS,EAAE,CAEP;IAEd;;;OAGG;IACH,uBAHU,SAAS,EAAE,CAGH;IAElB;;;;;;;;OAQG;IACH,uBAFU,MAAM,MAAM;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC,CAExE;IAE3B;;;;;OAKG;IACH,UAFU,OAAO,CAEH;IAEd;;;;;;OAMG;IACH,qBAAkB;IAElB;;;;;;;;;;;;;OAaG;IACH,wBAAqB;IAErB;;;;;;OAMG;IACH,iBAFU,MAAM,CAEI;IAEpB;;;;;;;;;;;;;;;;OAgBG;IACH,mBAFU,YAAY,CAEkB;IAExC;;;;OAIG;IACH,YAFU,OAAO,CAEC;IAElB;;;;;;;OAOG;IACH,iBAFU,YAAY,CAEgB;IAEtC;;;;;;;OAOG;IACH,kBAFU,mBAAiB,IAAI,CAEP;IAExB,yEAAyE;IACzE,gCAA4B;IAKxB;;;;OAIG;IACH,yBAA0C;IAG1C;;;;;;;;OAQG;IACH,0BAA4C;IAGhD;;;;;;;;;;;;;OAaG;IACH,sBA6BC;IAED;;;;;;;;;;;;;;OAcG;IACH,2BAGC;IAED;;;;;;;;;;OAUG;IACH,gCAOC;IAED;;;OAGG;IACH,cAFW,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAI9C;IAED;;;OAGG;IACH,+BAFqB,MAAM,WAAU,MAAM,aAAY,QAAQ,aAAY,QAAQ,KAAK,OAAO,QAI9F;IAED;;OAEG;IACH,8BAFuB,MAAM,WAAU,MAAM,aAAY,QAAQ,aAAY,QAAQ,KAAK,OAAO,CAIhG;IAED;;;;;;OAMG;IACH,iCA8BC;IAED;;;;OAIG;IACH,iCAIC;IAED;;;;;;;;;;;;;;;OAeG;IACH,yCAmBC;IAED;;;;;;;;;;OAUG;IACH,gBAJW,SAAS,aACT,SAAS,UACT,MAAM,QAkChB;IAED;;;;;;;OAOG;IACH,kBAJW,SAAS,aACT,SAAS,UACT,MAAM,QAyDhB;IAED;;;;;;;;;;;;;OAaG;IACH,6BALW,MAAM,YACN,QAAQ,aACR,SAAS,oBACT,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,6BAHW,MAAM,YACN,QAAQ,QAiClB;IAED;;;;;;;;OAQG;IACH,oCAEC;IAED;;;;;;;;;OASG;IACH,+BAyCC;IAED;;;;OAIG;IACH,iCAUC;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;OAGG;IACH,wBAEC;IAED;;;;;;;;;OASG;IACH,wBAHW,SAAS,WACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAU9C;IAED;;;;;;;;;;;OAWG;IACH,0BALW,SAAS,aACT,SAAS,WACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,cACpC,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAwC9C;IAED;;;;;;;;OAQG;IACH,uBAHW,SAAS,UACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAY9C;IAED;;;;;;;;;;;OAWG;IACH,wBALW,SAAS,aACT,SAAS,SACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,cACpC,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAuB9C;IAED;;;;;;OAMG;IACH,sBAHW,SAAS,SACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAQ9C;IAED;;;;;OAKG;IACH,6BAHW,SAAS,KACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAO9C;IAED;;;;;;;;OAQG;IACH,8BAHW,SAAS,KACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAO9C;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,mBAJW,SAAS,YACT,OAAO,GAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,YACpC,aAAW;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,QAgE1D;IAED;;;OAGG;IACH,gBAFW,SAAS,QAInB;IAED;;;;OAIG;IACH,iBAFW,SAAS,QAkBnB;IAED;;;;;;;;;;;;;;OAcG;IACH,oBAmCC;IAED;;;;;;;;;;;;;;OAcG;IACH,oCAwCC;IAED;;;;;;;;;;;;;;OAcG;IACH,kEAJmB,MAAM,YAAW,QAAQ,KAAG,OAAO,GAEzC,OAAO,CAInB;IAED;;;;;;;;;;;;;;OAcG;IACH,uDALW;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,iDAE7B,MAAM,YAAW,QAAQ,KAAG,OAAO,GACzC,OAAO,CAInB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,0CAVW;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,YAE5B;QAAC,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAC;QAAA,CAAC,EAAC,MAAM,CAAA;KAAC,UAErC,WAAW,GAAC,MAAM,EAAE,iBACpB,MAAM,oBACE,MAAM,YAAW,QAAQ,KAAG,OAAO,GAEzC,MAAM,CAIlB;IAED;;;;;;;;;;;OAWG;IACH,YAFa,IAAI,CAMhB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,qBA8DC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,0BAiCC;IAED;;;;;;;;;;;;OAYG;IACH,sBAoCC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,qBAgEC;IAED;;;;;;;;;;OAUG;IACH,kCA0FC;IAED;;;;;;;;;OASG;IACH,yBA+CC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,wBA6CC;IAmYL;;;OAGG;IACH,0BAFU,OAAO,CAEsB;CANtC;uBAhvEsB,qBAAqB;0BAClB,kCAAkC;0BAmCV,gBAAgB;4CArCtB,oDAAoD;yBAgCrD,eAAe;4BA5Bf,wBAAwB;oBAb/C,gCAAgC;8BAoBtB,6BAA6B;yBAHlC,2BAA2B;mCAIC,iCAAiC;8BAKxD,4BAA4B;gCAZd,4BAA4B;oBAPpD,+BAA+B;yBAiC1B,eAAe;+BAOT,qBAAqB"}
|
|
@@ -1839,6 +1839,33 @@ export class PhysicsSystem extends System {
|
|
|
1839
1839
|
* {@link InterpolationSystem} blends consecutive ticks from these snapshots.
|
|
1840
1840
|
* Only awake (moving) bodies are recorded, so the log stays sparse. No-op
|
|
1841
1841
|
* unless {@link interpolationLog} is wired.
|
|
1842
|
+
*
|
|
1843
|
+
* **A body created after this pass has no snapshot for the step it was born on, and renders
|
|
1844
|
+
* from one snapshot for a step.** This pass runs at the end of `fixedUpdate`, and game code
|
|
1845
|
+
* runs after it — that ordering is correct, the sim must read the solved poses — so a body
|
|
1846
|
+
* spawned by game code is invisible to the tick it was spawned into. Its first record is the
|
|
1847
|
+
* NEXT tick, and `InterpolationLog.interpolate` handles the missing half gracefully by falling
|
|
1848
|
+
* back to whichever snapshot exists. That is the right primitive behaviour and it produces a
|
|
1849
|
+
* bad picture: the entity is drawn at the *newer* tick for a whole frame budget, so it appears
|
|
1850
|
+
* to jump a full step's travel and then hold still for one. Measured at 165 Hz by a port
|
|
1851
|
+
* (GAP-036) as four frames of a rocket parked at the muzzle, reported by a player as
|
|
1852
|
+
* "projectiles move with jerks".
|
|
1853
|
+
*
|
|
1854
|
+
* **Why this is documented rather than fixed, which is the part worth knowing.** The obvious
|
|
1855
|
+
* fix — record a body's pose when it links — does not fit this log. {@link InterpolationLog} is
|
|
1856
|
+
* a strictly monotonic tick ring: `begin_tick` throws while a tick is open, pages are
|
|
1857
|
+
* contiguous ranges that the next page's bytes follow immediately, and `#ticks` is keyed by
|
|
1858
|
+
* tick number — so re-opening the closed tick to append one body would overwrite that tick's
|
|
1859
|
+
* metadata for every other body in it. The fix that does work is to move this pass out of
|
|
1860
|
+
* `fixedUpdate` into a system registered after every simulation system, which is what a
|
|
1861
|
+
* consumer hitting this did; that costs a second mandatory registration, which is a trade this
|
|
1862
|
+
* engine has decided against elsewhere. Closing it properly means either a per-body "first
|
|
1863
|
+
* tick" the blend can consult, or a log that accepts an out-of-order record.
|
|
1864
|
+
*
|
|
1865
|
+
* The workaround needs no engine change: put the body on the application's own timeline via a
|
|
1866
|
+
* pose recorder registered last, since `__interp_restore` does not filter by `sourceId` and
|
|
1867
|
+
* `PhysicsSystem` still restores the authoritative pose before it integrates.
|
|
1868
|
+
*
|
|
1842
1869
|
* @private
|
|
1843
1870
|
*/
|
|
1844
1871
|
__interp_record() {
|
|
@@ -64,11 +64,11 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
64
64
|
/**
|
|
65
65
|
* @param {FluidComponent} fluid
|
|
66
66
|
*/
|
|
67
|
-
static "__#
|
|
67
|
+
static "__#372@#refresh_masks"(fluid: FluidComponent): void;
|
|
68
68
|
/**
|
|
69
69
|
* @param {FluidComponent} fluid
|
|
70
70
|
*/
|
|
71
|
-
static "__#
|
|
71
|
+
static "__#372@#clear_field"(fluid: FluidComponent): void;
|
|
72
72
|
/**
|
|
73
73
|
* Mark every cell of `fluid` whose centre lies within `inflation` of the
|
|
74
74
|
* posed shape as solid. Iteration is clipped to the shape's world AABB
|
|
@@ -80,7 +80,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
80
80
|
* @param {number} inflation world-units SDF threshold
|
|
81
81
|
* @param {Float64Array} point length-3 scratch
|
|
82
82
|
*/
|
|
83
|
-
static "__#
|
|
83
|
+
static "__#372@#voxelize"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array): void;
|
|
84
84
|
/**
|
|
85
85
|
* Write the obstacle's translation velocity onto every face of every cell
|
|
86
86
|
* it voxelized — the moving-wall boundary condition. Runs AFTER the mask
|
|
@@ -100,7 +100,7 @@ export class FluidObstacleSystem extends System<any> {
|
|
|
100
100
|
* @param {number} wvy
|
|
101
101
|
* @param {number} wvz
|
|
102
102
|
*/
|
|
103
|
-
static "__#
|
|
103
|
+
static "__#372@#stamp_wall_velocity"(fluid: FluidComponent, posed: PosedShape3D, aabb: Float64Array, inflation: number, point: Float64Array, wvx: number, wvy: number, wvz: number): void;
|
|
104
104
|
constructor();
|
|
105
105
|
dependencies: (typeof FluidObstacle)[];
|
|
106
106
|
components_used: (ResourceAccessSpecification<typeof Transform> | ResourceAccessSpecification<typeof RigidBody> | ResourceAccessSpecification<typeof Collider> | ResourceAccessSpecification<typeof FluidComponent> | ResourceAccessSpecification<typeof FluidObstacle>)[];
|
|
@@ -13,6 +13,30 @@ declare class SoundEngine {
|
|
|
13
13
|
sopra: SopraEngine | null;
|
|
14
14
|
context: AudioContext;
|
|
15
15
|
destination: GainNode;
|
|
16
|
+
/**
|
|
17
|
+
* @param {number} value
|
|
18
|
+
*/
|
|
19
|
+
set volume(arg: number);
|
|
20
|
+
/**
|
|
21
|
+
* The one master fader in the graph, and the only one worth reaching for.
|
|
22
|
+
*
|
|
23
|
+
* Everything is downstream of {@link destination}: {@link obtainSopra}
|
|
24
|
+
* passes it as the sopra bus tree's output, and a `ProbeReverbRenderer` is
|
|
25
|
+
* constructed against the same node, so the dry mix and the wet return both
|
|
26
|
+
* pass through this gain.
|
|
27
|
+
*
|
|
28
|
+
* The bus named `master` inside sopra is NOT this. The probe reverb's
|
|
29
|
+
* return joins the graph BELOW the bus tree, so `busGraph.setVolume('master', 0)`
|
|
30
|
+
* silences the dry signal and leaves the wet tail of every sound at full
|
|
31
|
+
* level — audible, and audible only in reverberant rooms.
|
|
32
|
+
*
|
|
33
|
+
* This was an `Object.defineProperties` block, which the declaration
|
|
34
|
+
* generator does not read, so `sound.volume = 0.5` was a compile error
|
|
35
|
+
* against a property that exists and works.
|
|
36
|
+
*
|
|
37
|
+
* @returns {number}
|
|
38
|
+
*/
|
|
39
|
+
get volume(): number;
|
|
16
40
|
/**
|
|
17
41
|
* Create and own the sopra engine, built on this SoundEngine's existing AudioContext + master
|
|
18
42
|
* destination (never a second context). Wired in by the sound systems, which supply an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundEngine.d.ts","sourceRoot":"","sources":["../../../../src/engine/sound/SoundEngine.js"],"names":[],"mappings":";AAEA;;;;GAIG;AACH;IACI;;;;OAIG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAkBO,sBAWd;IAUF,sBAA2B;
|
|
1
|
+
{"version":3,"file":"SoundEngine.d.ts","sourceRoot":"","sources":["../../../../src/engine/sound/SoundEngine.js"],"names":[],"mappings":";AAEA;;;;GAIG;AACH;IACI;;;;OAIG;IACH,OAFU,WAAW,GAAC,IAAI,CAEb;IAkBO,sBAWd;IAUF,sBAA2B;IA4B/B;;OAEG;IACH,wBAEC;IA5BD;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBAEC;IASD;;;;;;;;;;OAUG;IACH,6CAFa,WAAW,CAQvB;IAED;;;OAGG;IACH,kBAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,iBAFa,QAAQ,IAAI,CAAC,CAMzB;IAED;;;OAGG;IACH,SAFa,QAAQ,GAAG,CAAC,CAWxB;CACJ;4BA3I2B,wBAAwB"}
|
|
@@ -53,18 +53,36 @@ class SoundEngine {
|
|
|
53
53
|
this.destination = gainNode;
|
|
54
54
|
gainNode.connect(compressor);
|
|
55
55
|
compressor.connect(context.destination);
|
|
56
|
+
}
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
/**
|
|
59
|
+
* The one master fader in the graph, and the only one worth reaching for.
|
|
60
|
+
*
|
|
61
|
+
* Everything is downstream of {@link destination}: {@link obtainSopra}
|
|
62
|
+
* passes it as the sopra bus tree's output, and a `ProbeReverbRenderer` is
|
|
63
|
+
* constructed against the same node, so the dry mix and the wet return both
|
|
64
|
+
* pass through this gain.
|
|
65
|
+
*
|
|
66
|
+
* The bus named `master` inside sopra is NOT this. The probe reverb's
|
|
67
|
+
* return joins the graph BELOW the bus tree, so `busGraph.setVolume('master', 0)`
|
|
68
|
+
* silences the dry signal and leaves the wet tail of every sound at full
|
|
69
|
+
* level — audible, and audible only in reverberant rooms.
|
|
70
|
+
*
|
|
71
|
+
* This was an `Object.defineProperties` block, which the declaration
|
|
72
|
+
* generator does not read, so `sound.volume = 0.5` was a compile error
|
|
73
|
+
* against a property that exists and works.
|
|
74
|
+
*
|
|
75
|
+
* @returns {number}
|
|
76
|
+
*/
|
|
77
|
+
get volume() {
|
|
78
|
+
return this.destination.gain.value;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @param {number} value
|
|
83
|
+
*/
|
|
84
|
+
set volume(value) {
|
|
85
|
+
this.destination.gain.setValueAtTime(value, this.context.currentTime, 0);
|
|
68
86
|
}
|
|
69
87
|
|
|
70
88
|
/**
|
|
@@ -14,18 +14,26 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Returns the simulator so the caller can tune it (`rayCount`, `smoothing`, `random_seed`, `medium`), bake
|
|
16
16
|
* against its `occluderIndex` (reverb / visibility), and enable corner-leakage (`pathing` + `setProbeField`).
|
|
17
|
-
* For probe-baked reverb, pass a configured {@link ProbeReverbRenderer} as `
|
|
18
|
-
*
|
|
17
|
+
* For probe-baked reverb, pass a configured {@link ProbeReverbRenderer} as `probeReverb`. It reaches both
|
|
18
|
+
* halves: the emitter system, which drives it per frame, and {@link AcousticProbeFieldSystem}, which hands
|
|
19
|
+
* it the field on link. Assigning `audioEmitterSystem.probeReverb` yourself instead wires only the first,
|
|
20
|
+
* and a renderer with no field renders silence.
|
|
19
21
|
*
|
|
20
22
|
* Call once during engine configuration, after the `AudioEmitterSystem` is constructed (construct it
|
|
21
23
|
* without an `acousticSim` argument — this injects it).
|
|
22
24
|
*
|
|
23
|
-
* @param {
|
|
25
|
+
* @param {{addManySystems: function(...System):*}} configuration whatever the systems are added to.
|
|
26
|
+
* Structural rather than {@link EngineConfiguration}, because `addManySystems` is the only method
|
|
27
|
+
* this helper calls and an application driving the {@link EntityManager} directly has no
|
|
28
|
+
* `EngineConfiguration` to hand it — `EngineConfiguration.systems` is `@private`, so the only way
|
|
29
|
+
* through was a collector object and an `as unknown as` cast (GAP-033).
|
|
24
30
|
* @param {AudioEmitterSystem} audioEmitterSystem the system whose `update()` drives the simulation
|
|
25
31
|
* @param {AcousticSimulator} [simulator] reuse this simulator instead of creating one (default: a fresh one)
|
|
26
32
|
* @param {ProbeReverbRenderer} [probeReverb] optional probe-reverb renderer to wire (left untouched if omitted)
|
|
27
33
|
* @returns {AcousticSimulator} the shared simulator (tune `random_seed` / `medium` on it directly)
|
|
28
34
|
*/
|
|
29
|
-
export function configureAcousticSimulation(configuration:
|
|
35
|
+
export function configureAcousticSimulation(configuration: {
|
|
36
|
+
addManySystems: (...args: System[]) => any;
|
|
37
|
+
}, audioEmitterSystem: AudioEmitterSystem, simulator?: AcousticSimulator, probeReverb?: ProbeReverbRenderer): AcousticSimulator;
|
|
30
38
|
import { AcousticSimulator } from "./AcousticSimulator.js";
|
|
31
39
|
//# sourceMappingURL=configureAcousticSimulation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureAcousticSimulation.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/simulation/configureAcousticSimulation.js"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"configureAcousticSimulation.d.ts","sourceRoot":"","sources":["../../../../../src/engine/sound/simulation/configureAcousticSimulation.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,2DAVW;IAAC,cAAc,6BAAuB;CAAC,sDAMvC,iBAAiB,sCAEf,iBAAiB,CAgB7B;kCArDiC,wBAAwB"}
|