using Sand.Core; namespace Sand.App; internal interface ISimulationBackend { string BackendName { get; } SimulationSettings Settings { get; } AppSimulationFrameStats FrameStats { get; } int Frame { get; } int ParticleCount { get; } ReadOnlySpan BuildRgbaFrame(); void Step(float dt); void Clear(); void RefreshSettingsState(); void ClearParticleCircle(int centerX, int centerY, int brushRadius); void ClearParticlePourAtPixel(int centerX, int centerY, int brushRadius, int maxParticles, int seed); void CreateParticleCircle(int centerX, int centerY, int brushRadius, string particleId); void CreateParticlePourAtPixel(int centerX, int centerY, int brushRadius, string particleId, int maxParticles, int seed); void ApplyWindBrushAtPixel(int centerX, int centerY, int brushRadius, float forceX, float forceY); void ApplyAirBrushAtPixel(int centerX, int centerY, int brushRadius, float forceX, float forceY); void ApplyGravityBrushAtPixel(int centerX, int centerY, int brushRadius, float strength); void ApplyRepulsorBrushAtPixel(int centerX, int centerY, int brushRadius, float strength); }