@woosh/meep-engine 3.14.5 → 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/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/replication/Replicator.d.ts +18 -0
- package/src/engine/network/replication/Replicator.d.ts.map +1 -1
- package/src/engine/network/replication/Replicator.js +98 -0
- 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 +126 -9
- 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/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 +66 -15
- 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_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/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/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/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
|
@@ -7,6 +7,8 @@ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourc
|
|
|
7
7
|
import {
|
|
8
8
|
PARTICLE_RECORD_HEADER_EMITTER,
|
|
9
9
|
PARTICLE_RECORD_WORD_COUNT,
|
|
10
|
+
PARTICLE_SIMULATE_WORKGROUP_SIZE,
|
|
11
|
+
PARTICLE_SIM_PAD_SLOT,
|
|
10
12
|
PARTICLE_VM_INSTRUCTION_WORDS,
|
|
11
13
|
} from "../ParticleConstants.js";
|
|
12
14
|
import { PARTICLE_COUNTER } from "../data/PARTICLE_COUNTERS.js";
|
|
@@ -15,18 +17,37 @@ import { chunk_particle_context, chunk_particle_curve_disabled } from "./chunk_p
|
|
|
15
17
|
/**
|
|
16
18
|
* The particle simulate pass — Destiny-style single execution shader.
|
|
17
19
|
*
|
|
18
|
-
* One dispatch processes
|
|
20
|
+
* One dispatch processes every live particle across every emitter. Per particle: read its owning
|
|
19
21
|
* emitter, set up the VM context + RNG, run that emitter's compiled UPDATE program over the record,
|
|
20
22
|
* then compact — killed particles are pushed back to the dead (free) list, survivors are appended to
|
|
21
23
|
* the new alive list. There is exactly one pipeline regardless of how many distinct effects exist,
|
|
22
24
|
* because behaviour is data (the bytecode program), not code.
|
|
23
25
|
*
|
|
24
|
-
* The input
|
|
25
|
-
*
|
|
26
|
-
* is
|
|
27
|
-
* the
|
|
28
|
-
*
|
|
29
|
-
*
|
|
26
|
+
* ## The input list
|
|
27
|
+
*
|
|
28
|
+
* `sim_list` is NOT the raw alive list. It is the program-coherent indirection list the coherence
|
|
29
|
+
* pass (`../coherence/`) built at the end of last frame: the same pool slots, reordered so that
|
|
30
|
+
* particles running one VM program sit together, each run padded out to a whole workgroup. That is
|
|
31
|
+
* what keeps a wave from spanning two programs, which would make the interpreter's opcode `switch`
|
|
32
|
+
* diverge and multiply the register file's `v_movrels` waterfall by the number of distinct register
|
|
33
|
+
* indices in the wave.
|
|
34
|
+
*
|
|
35
|
+
* Padding entries carry {@link PARTICLE_SIM_PAD_SLOT} and are dropped BEFORE the compaction
|
|
36
|
+
* atomics, so a padding lane never appends to the alive list and never pushes a slot onto the free
|
|
37
|
+
* list — pushing the sentinel would put `0xffffffff` on the free list for a later emit to hand out
|
|
38
|
+
* as a record base. Returning early is safe for the lanes that remain: padding only ever appears in
|
|
39
|
+
* the tail of a bucket, and every real lane in that wave belongs to that one bucket, so the `switch`
|
|
40
|
+
* the survivors execute is uniform regardless.
|
|
41
|
+
*
|
|
42
|
+
* ## Sizing
|
|
43
|
+
*
|
|
44
|
+
* The input length is read from `counters[ALIVE_IN]` — the padded length of that list, snapshotted
|
|
45
|
+
* on the GPU by the build-indirect pass — NOT from a CPU uniform. A CPU-provided count is inevitably
|
|
46
|
+
* stale (readback latency) and corrupts the pool: under-counting orphans the tail of the list (slots
|
|
47
|
+
* leak into limbo), over-counting re-simulates stale entries and double-frees their slots. Dispatch
|
|
48
|
+
* this shader with `dispatchWorkgroupsIndirect` using the args the build-indirect pass wrote last
|
|
49
|
+
* frame from that same value, so thread count and bound agree by construction — and, because the
|
|
50
|
+
* padded length is a whole number of workgroups, agree exactly.
|
|
30
51
|
*
|
|
31
52
|
* All structured reads go through `array<u32>` for emulator-testability. Curve sampling uses the
|
|
32
53
|
* pluggable `particle_vm_sample_curve` — here the no-op provider; the feature swaps in the
|
|
@@ -35,7 +56,7 @@ import { chunk_particle_context, chunk_particle_curve_disabled } from "./chunk_p
|
|
|
35
56
|
* @type {ComputeShader}
|
|
36
57
|
*/
|
|
37
58
|
|
|
38
|
-
export
|
|
59
|
+
export { PARTICLE_SIMULATE_WORKGROUP_SIZE };
|
|
39
60
|
|
|
40
61
|
/**
|
|
41
62
|
* Per-dispatch, 12 bytes, read-only — see shader_particle_emit for why the three travel
|
|
@@ -58,7 +79,7 @@ resources.createGroup()
|
|
|
58
79
|
.addStorageBuffer("program", WebGPUArray.u32, false)
|
|
59
80
|
.addStorageBuffer("vm_constants", WebGPUArray.u32, false)
|
|
60
81
|
.addStorageBuffer("pool", WebGPUArray.u32, true)
|
|
61
|
-
.addStorageBuffer("
|
|
82
|
+
.addStorageBuffer("sim_list", WebGPUArray.u32, false)
|
|
62
83
|
.addStorageBuffer("alive_out", WebGPUArray.u32, true)
|
|
63
84
|
.addStorageBuffer("dead", WebGPUArray.u32, true)
|
|
64
85
|
.addStorageBuffer("counters", WebGPUArray.from(atomic_u32), true);
|
|
@@ -71,14 +92,22 @@ const PARTICLE_INSTRUCTION_WORDS : u32 = ${PARTICLE_VM_INSTRUCTION_WORDS}u;
|
|
|
71
92
|
const COUNTER_ALIVE : u32 = ${PARTICLE_COUNTER.ALIVE}u;
|
|
72
93
|
const COUNTER_DEAD : u32 = ${PARTICLE_COUNTER.DEAD}u;
|
|
73
94
|
const COUNTER_ALIVE_IN : u32 = ${PARTICLE_COUNTER.ALIVE_IN}u;
|
|
95
|
+
const PARTICLE_SIM_PAD_SLOT : u32 = ${PARTICLE_SIM_PAD_SLOT}u;
|
|
74
96
|
|
|
75
97
|
@compute @workgroup_size(${PARTICLE_SIMULATE_WORKGROUP_SIZE}, 1, 1)
|
|
76
98
|
fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
77
99
|
let i = gid.x;
|
|
78
|
-
// The exact
|
|
100
|
+
// The exact input length, snapshotted on-GPU last frame — never a stale CPU value.
|
|
79
101
|
if (i >= atomicLoad(&counters[COUNTER_ALIVE_IN])) { return; }
|
|
80
102
|
|
|
81
|
-
let slot =
|
|
103
|
+
let slot = sim_list[i];
|
|
104
|
+
|
|
105
|
+
// A lane the coherence pass padded the bucket out with. Leave BEFORE the compaction atomics
|
|
106
|
+
// below: appending here would put the sentinel on the alive or the free list, and the free list
|
|
107
|
+
// would then hand 0xffffffff to an emit as a record base. The lanes that stay all belong to the
|
|
108
|
+
// one bucket this wave covers, so their program — and the interpreter's switch — is uniform.
|
|
109
|
+
if (slot == PARTICLE_SIM_PAD_SLOT) { return; }
|
|
110
|
+
|
|
82
111
|
let record_base = slot * PARTICLE_RECORD_WORDS;
|
|
83
112
|
let emitter_index = pool[record_base + PARTICLE_HEADER_EMITTER];
|
|
84
113
|
|
|
@@ -1,23 +1,12 @@
|
|
|
1
|
+
export const PARTICLE_SORT_WORKGROUP_SIZE: 64;
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* the scatter cursor. Without this the scan consumes garbage counts and the scatter compounds
|
|
7
|
-
* last frame's ranks — the buffers are only zeroed by WebGPU on CREATION, not per frame.
|
|
8
|
-
* 1. {@link shader_particle_sort_histogram} — per alive particle, project its render position into
|
|
9
|
-
* view space, quantise the depth into a back-to-front bucket (far first), store the bucket in
|
|
10
|
-
* `keys`, and atomically bump the per-bucket `histogram`.
|
|
11
|
-
* 2. graph_prefix_scan_csdldf turns the histogram into inclusive prefix sums.
|
|
12
|
-
* 3. {@link shader_particle_sort_scatter} — per particle, read its bucket, take the exclusive
|
|
13
|
-
* offset from the scanned histogram and an atomic per-bucket rank, and write the particle's slot
|
|
14
|
-
* into `sorted` at that position.
|
|
3
|
+
* Dispatch this over `PREFIX_SCAN_CSDLDF_HEADER_WORDS + round_up_4(bucket_count)` threads, not over
|
|
4
|
+
* `bucket_count`: its widest loop is the scan header plus the bins rounded up to the whole vec4 the
|
|
5
|
+
* last bin lands in. Under-dispatching leaves the tail of that vec4 holding last frame's counts,
|
|
6
|
+
* and the scan adds them in.
|
|
15
7
|
*
|
|
16
|
-
*
|
|
17
|
-
* and scatter passes are, and the CPU reference {@link ./particle_counting_sort.js} pins the
|
|
18
|
-
* algorithm.
|
|
8
|
+
* @type {ComputeShader}
|
|
19
9
|
*/
|
|
20
|
-
export const PARTICLE_SORT_WORKGROUP_SIZE: 64;
|
|
21
10
|
export const shader_particle_sort_reset: ComputeShader;
|
|
22
11
|
export const shader_particle_sort_histogram: ComputeShader;
|
|
23
12
|
export const shader_particle_sort_scatter: ComputeShader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_particle_sort.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/sort/shader_particle_sort.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_particle_sort.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/sort/shader_particle_sort.js"],"names":[],"mappings":"AAsDA,8CAA+C;AAgD/C;;;;;;;GAOG;AACH,yCAFU,aAAa,CAMpB;AA0EH,2DAIG;AAyCH,yDAIG;8BA1O2B,+BAA+B"}
|
|
@@ -4,6 +4,7 @@ import { WebGPUStruct } from "../../shader/type/WebGPUStruct.js";
|
|
|
4
4
|
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
5
5
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
6
6
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
7
|
+
import { PREFIX_SCAN_CSDLDF_HEADER_WORDS } from "../../gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js";
|
|
7
8
|
import { PARTICLE_RECORD_HEADER_EMITTER, PARTICLE_RECORD_WORD_COUNT } from "../ParticleConstants.js";
|
|
8
9
|
import { EMITTER_ATTRIBUTE_ABSENT } from "../data/PARTICLE_EMITTER_LAYOUT.js";
|
|
9
10
|
import { chunk_particle_emitter } from "../data/chunk_particle_emitter.js";
|
|
@@ -11,10 +12,11 @@ import { chunk_particle_emitter } from "../data/chunk_particle_emitter.js";
|
|
|
11
12
|
/**
|
|
12
13
|
* Depth-sort shaders. Three passes bracket a `csdldf` prefix scan:
|
|
13
14
|
*
|
|
14
|
-
* 0. {@link shader_particle_sort_reset} — every frame, write the histogram's `{count}`
|
|
15
|
-
* (
|
|
16
|
-
* the scatter cursor. Without this the scan consumes garbage counts and the
|
|
17
|
-
* last frame's ranks — the buffers are only zeroed by WebGPU on CREATION, not
|
|
15
|
+
* 0. {@link shader_particle_sort_reset} — every frame, write the histogram's `{count, elements}`
|
|
16
|
+
* header (the bucket count the csdldf scan sizes itself from), clear the header padding and the
|
|
17
|
+
* bins, and zero the scatter cursor. Without this the scan consumes garbage counts and the
|
|
18
|
+
* scatter compounds last frame's ranks — the buffers are only zeroed by WebGPU on CREATION, not
|
|
19
|
+
* per frame.
|
|
18
20
|
* 1. {@link shader_particle_sort_histogram} — per alive particle, project its render position into
|
|
19
21
|
* view space, quantise the depth into a back-to-front bucket (far first), store the bucket in
|
|
20
22
|
* `keys`, and atomically bump the per-bucket `histogram`.
|
|
@@ -23,11 +25,33 @@ import { chunk_particle_emitter } from "../data/chunk_particle_emitter.js";
|
|
|
23
25
|
* offset from the scanned histogram and an atomic per-bucket rank, and write the particle's slot
|
|
24
26
|
* into `sorted` at that position.
|
|
25
27
|
*
|
|
28
|
+
* ## The buffer the four passes share
|
|
29
|
+
*
|
|
30
|
+
* The histogram IS the scan's `{count: u32, elements: array<vec4u>}`, bound flat here as
|
|
31
|
+
* `array<atomic<u32>>` because these passes need atomics on it. `elements` is `@align(16)`, so bin
|
|
32
|
+
* `b` is word {@link PREFIX_SCAN_CSDLDF_HEADER_WORDS}` + b` and words 1..3 are padding the scan
|
|
33
|
+
* never reads. Every pass below steps over that header by hand; the reset clears whole vec4s of
|
|
34
|
+
* bins, because whole vec4s is what the scan loads.
|
|
35
|
+
*
|
|
36
|
+
* ## This is the render order
|
|
37
|
+
*
|
|
38
|
+
* The camera-dependent back-to-front list the billboard draw consumes. `../coherence/` produces the
|
|
39
|
+
* simulation order from the same three-phase shape — different buffers, different passes, different
|
|
40
|
+
* counter slots (`PARTICLE_COUNTER.SORTED` against `PARTICLE_COUNTER.SIM_PADDED`), on purpose.
|
|
41
|
+
*
|
|
26
42
|
* The `csdldf` scan uses subgroup ops and isn't runnable under the emulator; the reset, histogram
|
|
27
43
|
* and scatter passes are, and the CPU reference {@link ./particle_counting_sort.js} pins the
|
|
28
44
|
* algorithm.
|
|
29
45
|
*/
|
|
30
46
|
|
|
47
|
+
/** @type {number} words of `{count, elements}` header in front of the scan's bins */
|
|
48
|
+
const HEADER = PREFIX_SCAN_CSDLDF_HEADER_WORDS;
|
|
49
|
+
|
|
50
|
+
/** The header stride every pass in this file interpolates. */
|
|
51
|
+
const COMMON = /* wgsl */ `
|
|
52
|
+
const SORT_HEADER_WORDS : u32 = ${HEADER}u;
|
|
53
|
+
`;
|
|
54
|
+
|
|
31
55
|
export const PARTICLE_SORT_WORKGROUP_SIZE = 64;
|
|
32
56
|
|
|
33
57
|
// --- reset pass ---
|
|
@@ -48,20 +72,42 @@ reset_resources.createGroup()
|
|
|
48
72
|
.addStorageBuffer("histogram", WebGPUArray.from(atomic_u32), true)
|
|
49
73
|
.addStorageBuffer("cursor", WebGPUArray.from(atomic_u32), true);
|
|
50
74
|
const reset_body = CodeChunk.from(/* wgsl */ `
|
|
75
|
+
${COMMON}
|
|
76
|
+
|
|
51
77
|
@compute @workgroup_size(${PARTICLE_SORT_WORKGROUP_SIZE}, 1, 1)
|
|
52
78
|
fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
53
79
|
let i = gid.x;
|
|
80
|
+
|
|
54
81
|
if (i == 0u) {
|
|
55
82
|
// The {count, elements} header the csdldf scan sizes itself from.
|
|
56
83
|
atomicStore(&histogram[0], settings.u_bucket_count);
|
|
57
84
|
}
|
|
85
|
+
|
|
86
|
+
// Header padding: never read by the scan, but it shares the buffer and the pool may have left
|
|
87
|
+
// something in it.
|
|
88
|
+
if (i > 0u && i < SORT_HEADER_WORDS) {
|
|
89
|
+
atomicStore(&histogram[i], 0u);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// The scan reads whole vec4s, so the bins are cleared up to the vec4 the last one lands in.
|
|
93
|
+
if (i < ((settings.u_bucket_count + 3u) & 0xfffffffcu)) {
|
|
94
|
+
atomicStore(&histogram[SORT_HEADER_WORDS + i], 0u);
|
|
95
|
+
}
|
|
96
|
+
|
|
58
97
|
if (i < settings.u_bucket_count) {
|
|
59
|
-
atomicStore(&histogram[1u + i], 0u);
|
|
60
98
|
atomicStore(&cursor[i], 0u);
|
|
61
99
|
}
|
|
62
100
|
}
|
|
63
101
|
`);
|
|
64
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Dispatch this over `PREFIX_SCAN_CSDLDF_HEADER_WORDS + round_up_4(bucket_count)` threads, not over
|
|
105
|
+
* `bucket_count`: its widest loop is the scan header plus the bins rounded up to the whole vec4 the
|
|
106
|
+
* last bin lands in. Under-dispatching leaves the tail of that vec4 holding last frame's counts,
|
|
107
|
+
* and the scan adds them in.
|
|
108
|
+
*
|
|
109
|
+
* @type {ComputeShader}
|
|
110
|
+
*/
|
|
65
111
|
export const shader_particle_sort_reset = ComputeShader.from({
|
|
66
112
|
label: "Particle Sort Reset",
|
|
67
113
|
resources: reset_resources,
|
|
@@ -105,6 +151,7 @@ histogram_resources.createGroup()
|
|
|
105
151
|
.addStorageBuffer("keys", WebGPUArray.u32, true)
|
|
106
152
|
.addStorageBuffer("histogram", WebGPUArray.from(atomic_u32), true);
|
|
107
153
|
const histogram_body = CodeChunk.from(/* wgsl */ `
|
|
154
|
+
${COMMON}
|
|
108
155
|
const PARTICLE_RECORD_WORDS : u32 = ${PARTICLE_RECORD_WORD_COUNT}u;
|
|
109
156
|
const PARTICLE_HEADER_EMITTER : u32 = ${PARTICLE_RECORD_HEADER_EMITTER}u;
|
|
110
157
|
const PARTICLE_ATTRIBUTE_ABSENT : u32 = ${EMITTER_ATTRIBUTE_ABSENT}u;
|
|
@@ -135,7 +182,7 @@ fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
135
182
|
let bucket = min(u32(clamped * f32(settings.u_bucket_count)), settings.u_bucket_count - 1u);
|
|
136
183
|
|
|
137
184
|
keys[i] = bucket;
|
|
138
|
-
atomicAdd(&histogram[
|
|
185
|
+
atomicAdd(&histogram[SORT_HEADER_WORDS + bucket], 1u);
|
|
139
186
|
}
|
|
140
187
|
`, [chunk_particle_emitter]);
|
|
141
188
|
|
|
@@ -166,15 +213,19 @@ scatter_resources.createGroup()
|
|
|
166
213
|
.addStorageBuffer("cursor", WebGPUArray.from(atomic_u32), true)
|
|
167
214
|
.addStorageBuffer("sorted", WebGPUArray.u32, true);
|
|
168
215
|
const scatter_body = CodeChunk.from(/* wgsl */ `
|
|
216
|
+
${COMMON}
|
|
217
|
+
|
|
169
218
|
@compute @workgroup_size(${PARTICLE_SORT_WORKGROUP_SIZE}, 1, 1)
|
|
170
219
|
fn main(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
171
220
|
let i = gid.x;
|
|
172
221
|
if (i >= settings.u_count) { return; }
|
|
173
222
|
|
|
174
223
|
let bucket = keys[i];
|
|
175
|
-
|
|
176
|
-
//
|
|
177
|
-
|
|
224
|
+
|
|
225
|
+
// The scan is inclusive, so bucket b's exclusive offset is bucket b-1's inclusive value, one
|
|
226
|
+
// word earlier. For bucket 0 the index lands on the last header word — in bounds, and unused,
|
|
227
|
+
// because select() takes the 0 branch there.
|
|
228
|
+
let exclusive = select(0u, scanned[SORT_HEADER_WORDS + bucket - 1u], bucket > 0u);
|
|
178
229
|
let rank = atomicAdd(&cursor[bucket], 1u);
|
|
179
230
|
sorted[exclusive + rank] = alive[i];
|
|
180
231
|
}
|
|
@@ -139,7 +139,7 @@ export class CPUBitmapData {
|
|
|
139
139
|
* to decide what `textureDimensions` should return.
|
|
140
140
|
* @returns {1 | 2 | 3}
|
|
141
141
|
*/
|
|
142
|
-
get dimensionality():
|
|
142
|
+
get dimensionality(): 1 | 2 | 3;
|
|
143
143
|
/**
|
|
144
144
|
* Linear element index of the first channel of pixel `(x, y, z)`.
|
|
145
145
|
* Caller is responsible for bounds checking.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export default domify;
|
|
2
|
+
export function DOM(argument: any, namespace: any): this;
|
|
3
|
+
export class DOM {
|
|
4
|
+
constructor(argument: any, namespace: any);
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @type {Element}
|
|
8
|
+
*/
|
|
9
|
+
el: Element;
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {string} [elName=div]
|
|
13
|
+
* @returns {DOM}
|
|
14
|
+
*/
|
|
15
|
+
createChild(elName?: string): DOM;
|
|
16
|
+
append(child: any): this;
|
|
17
|
+
remove(child: any): this;
|
|
18
|
+
text(text: any): this;
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param {string} querySelector
|
|
22
|
+
* @returns {DOM|null}
|
|
23
|
+
*/
|
|
24
|
+
select(querySelector: string): DOM | null;
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @param {string} name
|
|
28
|
+
* @returns {DOM}
|
|
29
|
+
*/
|
|
30
|
+
addClass(name: string): DOM;
|
|
31
|
+
removeClass(name: any): this;
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param {string} name
|
|
35
|
+
* @param {boolean} flag
|
|
36
|
+
* @returns {DOM}
|
|
37
|
+
*/
|
|
38
|
+
setClass(name: string, flag: boolean): DOM;
|
|
39
|
+
css(hash: any): this;
|
|
40
|
+
attr(hash: any): this;
|
|
41
|
+
clone(): DOM;
|
|
42
|
+
/**
|
|
43
|
+
* removes all children
|
|
44
|
+
* @returns {DOM}
|
|
45
|
+
*/
|
|
46
|
+
clear(): DOM;
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* @param eventName
|
|
50
|
+
* @param handler
|
|
51
|
+
* @returns {DOM}
|
|
52
|
+
*/
|
|
53
|
+
on(eventName: any, handler: any): DOM;
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
* @param eventName
|
|
57
|
+
* @param handler
|
|
58
|
+
* @returns {DOM}
|
|
59
|
+
*/
|
|
60
|
+
off(eventName: any, handler: any): DOM;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
* @param {String|Element} [x=div]
|
|
65
|
+
* @param {String} [namespace]
|
|
66
|
+
* @returns {DOM}
|
|
67
|
+
*/
|
|
68
|
+
declare function domify(x?: string | Element, namespace?: string): DOM;
|
|
69
|
+
//# sourceMappingURL=DOM.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../../../src/view/DOM.js"],"names":[],"mappings":";AACA,yDAoBC;;IApBD,2CAoBC;IANG;;;OAGG;IACH,IAFU,OAAO,CAEL;IAIhB;;;;OAIG;IACH,qBAHW,MAAM,GACJ,GAAG,CAMf;IAaD,yBAIC;IACD,yBAIC;IAED,sBAGC;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACJ,GAAG,GAAC,IAAI,CAUpB;IAED;;;;OAIG;IACH,eAHW,MAAM,GACJ,GAAG,CAKf;IAED,6BAGC;IAED;;;;;OAKG;IACH,eAJW,MAAM,QACN,OAAO,GACL,GAAG,CAMf;IAED,qBAOC;IAED,sBAQC;IAED,aAEC;IAED;;;OAGG;IACH,SAFa,GAAG,CAQf;IAED;;;;;OAKG;IACH,kCAFa,GAAG,CAMf;IACD;;;;;OAKG;IACH,mCAFa,GAAG,CAMf;;AAED;;;;;GAKG;AACH,4BAJW,SAAO,OAAO,uBAEZ,GAAG,CAIf"}
|
package/src/view/DOM.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
function DOM(argument, namespace) {
|
|
3
3
|
let el;
|
|
4
4
|
if (typeof argument === "string") {
|
|
5
5
|
if (namespace === undefined) {
|
|
@@ -169,4 +169,5 @@ function domify(x, namespace) {
|
|
|
169
169
|
return new DOM(x, namespace);
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
export { DOM };
|
|
172
173
|
export default domify;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @extends View
|
|
3
|
+
*/
|
|
4
|
+
export class LocalizedLabelView extends View {
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param {string} id
|
|
8
|
+
* @param {object} [seed]
|
|
9
|
+
* @param {Localization} [localization]
|
|
10
|
+
* @param {string[]} [classList]
|
|
11
|
+
* @param {GMLEngine} [gml] if supplied, string will be compiled first
|
|
12
|
+
* @param {string} [tag=div] HTML element tag
|
|
13
|
+
*/
|
|
14
|
+
constructor({ id, seed, localization, classList, gml, tag }: string);
|
|
15
|
+
/**
|
|
16
|
+
* @private
|
|
17
|
+
* @type {Localization}
|
|
18
|
+
*/
|
|
19
|
+
private localization;
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @type {GMLEngine}
|
|
23
|
+
*/
|
|
24
|
+
gml: GMLEngine;
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @type {Object}
|
|
28
|
+
*/
|
|
29
|
+
seed: any;
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
* @type {string}
|
|
33
|
+
*/
|
|
34
|
+
key: string;
|
|
35
|
+
$el: import("../DOM.js").DOM;
|
|
36
|
+
el: Element;
|
|
37
|
+
needsUpdate: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Cached locale key
|
|
40
|
+
* @type {String}
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
private __localeKey;
|
|
44
|
+
updateLocale(): void;
|
|
45
|
+
setLocalization(localization: any): void;
|
|
46
|
+
setKey(key: any): void;
|
|
47
|
+
update(): void;
|
|
48
|
+
}
|
|
49
|
+
import View from "../View.js";
|
|
50
|
+
//# sourceMappingURL=LocalizedLabelView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocalizedLabelView.d.ts","sourceRoot":"","sources":["../../../../src/view/common/LocalizedLabelView.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IACI;;;;;;;;OAQG;IACH,6DAPW,MAAM,EAoEhB;IAxDG;;;OAGG;IACH,qBAAwB;IAExB;;;OAGG;IACH,eAAc;IAEd;;;OAGG;IACH,UAAgB;IAEhB;;;OAGG;IACH,KAFU,MAAM,CAEH;IAKb,6BAAc;IAEd,YAAgB;IAKhB,qBAAuB;IAavB;;;;OAIG;IACH,oBAAuB;IAM3B,qBAOC;IAED,yCAeC;IAED,uBAaC;IAED,eAgCC;CACJ;iBAxJgB,YAAY"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default GuiControl;
|
|
2
|
+
declare class GuiControl extends View {
|
|
3
|
+
dRoot: import("../../DOM.js").DOM;
|
|
4
|
+
el: Element;
|
|
5
|
+
model: ObservedValue;
|
|
6
|
+
/**
|
|
7
|
+
* @template {T}
|
|
8
|
+
* @param {string} text
|
|
9
|
+
* @param {T} control
|
|
10
|
+
* @returns {T}
|
|
11
|
+
*/
|
|
12
|
+
addLabeledControlVertical(text: string, control: T): T;
|
|
13
|
+
}
|
|
14
|
+
declare namespace GuiControl {
|
|
15
|
+
let CSS_CLASS_NAME: string;
|
|
16
|
+
}
|
|
17
|
+
import View from '../../View.js';
|
|
18
|
+
import ObservedValue from '../../../core/model/ObservedValue.js';
|
|
19
|
+
//# sourceMappingURL=GuiControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuiControl.d.ts","sourceRoot":"","sources":["../../../../../src/view/controller/controls/GuiControl.js"],"names":[],"mappings":";AAKA;IAOQ,kCAAkB;IAClB,YAAkB;IAElB,qBAAoC;IAGxC;;;;;OAKG;IACH,gCAJW,MAAM,iBAahB;CACJ;;;;iBA/BgB,eAAe;0BAHN,sCAAsC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A frame-rate readout: one number, updated twice a second.
|
|
3
|
+
*
|
|
4
|
+
* This replaces `stats.js`, which the engine used to pull in for the same job.
|
|
5
|
+
* That package was declared `optional` in `peerDependenciesMeta` and imported
|
|
6
|
+
* unconditionally at the top of {@link EngineHarness}, so *evaluating* the
|
|
7
|
+
* module that is in practice this engine's entry point required an optional
|
|
8
|
+
* dependency whether or not a counter was ever asked for. Under Vite — where a
|
|
9
|
+
* consumer must exclude a ~6000-module package from dependency pre-bundling,
|
|
10
|
+
* which also stops the scanner discovering that package's own CommonJS
|
|
11
|
+
* dependencies — the result was a module-evaluation failure naming a package
|
|
12
|
+
* the application had never referenced, and a blank page. Reported from a port
|
|
13
|
+
* as GAP-003.
|
|
14
|
+
*
|
|
15
|
+
* A graph was never the point. The number is.
|
|
16
|
+
*
|
|
17
|
+
* The counter binds itself: pass the signal that fires once per rendered frame
|
|
18
|
+
* and the binding is linked and unlinked with the view, so removing it from the
|
|
19
|
+
* view stack stops the work.
|
|
20
|
+
*
|
|
21
|
+
* @author Alex Goldring
|
|
22
|
+
* @copyright Company Named Limited (c) 2026
|
|
23
|
+
*/
|
|
24
|
+
export class FrameRateView extends EmptyView {
|
|
25
|
+
/**
|
|
26
|
+
* @param {Object} [options]
|
|
27
|
+
* @param {Signal} [options.frame_signal] fires once per rendered frame;
|
|
28
|
+
* typically `engine.graphics.on.postRender`. Bound for the lifetime of the
|
|
29
|
+
* view's link, so it stops counting when the view leaves the stack.
|
|
30
|
+
*/
|
|
31
|
+
constructor({ frame_signal }?: {
|
|
32
|
+
frame_signal?: Signal;
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Count one frame, and refresh the readout if the window has closed.
|
|
36
|
+
*
|
|
37
|
+
* Safe to call directly — a caller driving its own loop can use this
|
|
38
|
+
* instead of handing a signal to the constructor.
|
|
39
|
+
*/
|
|
40
|
+
sample(): void;
|
|
41
|
+
#private;
|
|
42
|
+
}
|
|
43
|
+
export type Signal = import("../../core/events/signal/Signal.js").default;
|
|
44
|
+
import EmptyView from "./EmptyView.js";
|
|
45
|
+
//# sourceMappingURL=FrameRateView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrameRateView.d.ts","sourceRoot":"","sources":["../../../../src/view/elements/FrameRateView.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IAiCI;;;;;OAKG;IACH;QAJ4B,YAAY,GAA7B,MAAM;OAuBhB;IAED;;;;;OAKG;IACH,eA0BC;;CACJ;qBA/HY,OAAO,oCAAoC,EAAE,OAAO;sBAH3C,gBAAgB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import EmptyView from "./EmptyView.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @typedef {import("../../core/events/signal/Signal.js").default} Signal
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* How long a sample window is. Short enough to react to a stall, long enough
|
|
9
|
+
* that the number is readable rather than a blur — a per-frame readout is a
|
|
10
|
+
* counter nobody can actually read.
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
const WINDOW_MILLISECONDS = 500;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* A frame-rate readout: one number, updated twice a second.
|
|
17
|
+
*
|
|
18
|
+
* This replaces `stats.js`, which the engine used to pull in for the same job.
|
|
19
|
+
* That package was declared `optional` in `peerDependenciesMeta` and imported
|
|
20
|
+
* unconditionally at the top of {@link EngineHarness}, so *evaluating* the
|
|
21
|
+
* module that is in practice this engine's entry point required an optional
|
|
22
|
+
* dependency whether or not a counter was ever asked for. Under Vite — where a
|
|
23
|
+
* consumer must exclude a ~6000-module package from dependency pre-bundling,
|
|
24
|
+
* which also stops the scanner discovering that package's own CommonJS
|
|
25
|
+
* dependencies — the result was a module-evaluation failure naming a package
|
|
26
|
+
* the application had never referenced, and a blank page. Reported from a port
|
|
27
|
+
* as GAP-003.
|
|
28
|
+
*
|
|
29
|
+
* A graph was never the point. The number is.
|
|
30
|
+
*
|
|
31
|
+
* The counter binds itself: pass the signal that fires once per rendered frame
|
|
32
|
+
* and the binding is linked and unlinked with the view, so removing it from the
|
|
33
|
+
* view stack stops the work.
|
|
34
|
+
*
|
|
35
|
+
* @author Alex Goldring
|
|
36
|
+
* @copyright Company Named Limited (c) 2026
|
|
37
|
+
*/
|
|
38
|
+
export class FrameRateView extends EmptyView {
|
|
39
|
+
/**
|
|
40
|
+
* Frames counted since the window opened.
|
|
41
|
+
* @private
|
|
42
|
+
* @type {number}
|
|
43
|
+
*/
|
|
44
|
+
#frames = 0;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* When the current window opened, on the same clock the samples are taken
|
|
48
|
+
* against.
|
|
49
|
+
* @private
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
52
|
+
#window_opened = 0;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Whether a window is open at all. A separate flag rather than a sentinel
|
|
56
|
+
* value in {@link #window_opened}, because `performance.now()` legitimately
|
|
57
|
+
* returns 0 on the first call in a fresh context and a zero sentinel would
|
|
58
|
+
* then re-open the window instead of counting the frame.
|
|
59
|
+
* @private
|
|
60
|
+
* @type {boolean}
|
|
61
|
+
*/
|
|
62
|
+
#counting = false;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Last value written to the DOM, so an unchanged rate costs no write.
|
|
66
|
+
* @private
|
|
67
|
+
* @type {number}
|
|
68
|
+
*/
|
|
69
|
+
#displayed = -1;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @param {Object} [options]
|
|
73
|
+
* @param {Signal} [options.frame_signal] fires once per rendered frame;
|
|
74
|
+
* typically `engine.graphics.on.postRender`. Bound for the lifetime of the
|
|
75
|
+
* view's link, so it stops counting when the view leaves the stack.
|
|
76
|
+
*/
|
|
77
|
+
constructor({ frame_signal } = {}) {
|
|
78
|
+
super({ classList: ["frame-rate-view"] });
|
|
79
|
+
|
|
80
|
+
this.css({
|
|
81
|
+
position: "absolute",
|
|
82
|
+
left: 0,
|
|
83
|
+
top: 0,
|
|
84
|
+
padding: "2px 6px",
|
|
85
|
+
font: "12px monospace",
|
|
86
|
+
color: "#fff",
|
|
87
|
+
background: "rgba(0,0,0,0.5)",
|
|
88
|
+
pointerEvents: "none"
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
this.el.textContent = "--";
|
|
92
|
+
|
|
93
|
+
if (frame_signal !== undefined) {
|
|
94
|
+
this.bindSignal(frame_signal, this.sample, this);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Count one frame, and refresh the readout if the window has closed.
|
|
100
|
+
*
|
|
101
|
+
* Safe to call directly — a caller driving its own loop can use this
|
|
102
|
+
* instead of handing a signal to the constructor.
|
|
103
|
+
*/
|
|
104
|
+
sample() {
|
|
105
|
+
const now = performance.now();
|
|
106
|
+
|
|
107
|
+
if (!this.#counting) {
|
|
108
|
+
this.#counting = true;
|
|
109
|
+
this.#window_opened = now;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
this.#frames++;
|
|
114
|
+
|
|
115
|
+
const elapsed = now - this.#window_opened;
|
|
116
|
+
|
|
117
|
+
if (elapsed < WINDOW_MILLISECONDS) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const rate = Math.round((this.#frames * 1000) / elapsed);
|
|
122
|
+
|
|
123
|
+
if (rate !== this.#displayed) {
|
|
124
|
+
this.el.textContent = `${rate} FPS`;
|
|
125
|
+
this.#displayed = rate;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
this.#frames = 0;
|
|
129
|
+
this.#window_opened = now;
|
|
130
|
+
}
|
|
131
|
+
}
|