Browse Source

Stabilization setting wip

Krzysztof Krysiński 1 month ago
parent
commit
97ac2f1b38

+ 2 - 2
src/PixiEditor/Models/DocumentModels/UpdateableChangeExecutors/BrushBasedExecutor.cs

@@ -109,7 +109,7 @@ internal class BrushBasedExecutor : UpdateableChangeExecutor
 
     protected VecD GetStabilizedPoint()
     {
-        float timeConstant = 0.1f;
+        float timeConstant = (float)BrushToolbar.Stabilization / 100f;
         float elapsed = (float)stopwatch.Elapsed.TotalSeconds;
         float alpha = elapsed / Math.Max(timeConstant + elapsed, 0.0001f);
         VecD smoothed = lastSmoothed + (controller.LastPrecisePosition - lastSmoothed) * alpha;
@@ -120,7 +120,7 @@ internal class BrushBasedExecutor : UpdateableChangeExecutor
         }
 
         lastSmoothed = smoothed;
-        //firstApply = false;
+        firstApply = false;
         return smoothed;
     }
 

+ 1 - 0
src/PixiEditor/Models/Handlers/Toolbars/IBrushToolbar.cs

@@ -10,4 +10,5 @@ internal interface IBrushToolbar : IToolbar, IToolSizeToolbar
     public Brush Brush { get; set; }
     public BrushData CreateBrushData();
     public BrushData LastBrushData { get; }
+    public float Stabilization { get; set; }
 }

+ 7 - 0
src/PixiEditor/ViewModels/Tools/ToolSettings/Toolbars/BrushToolbar.cs

@@ -28,6 +28,12 @@ internal class BrushToolbar : Toolbar, IBrushToolbar
         set => GetSetting<BrushSettingViewModel>(nameof(Brush)).Value = value;
     }
 
+    public float Stabilization
+    {
+        get => GetSetting<FloatSettingViewModel>(nameof(Stabilization)).Value;
+        set => GetSetting<FloatSettingViewModel>(nameof(Stabilization)).Value = value;
+    }
+
     public BrushData CreateBrushData()
     {
         Brush? brush = Brush;
@@ -57,6 +63,7 @@ internal class BrushToolbar : Toolbar, IBrushToolbar
         setting.ValueChanged += (_, _) => OnPropertyChanged(nameof(ToolSize));
         AddSetting(setting);
         AddSetting(new BrushSettingViewModel(nameof(Brush), "BRUSH_SETTING") { IsExposed = true });
+        AddSetting(new FloatSettingViewModel(nameof(Stabilization), 0, "STABILIZATION_SETTING", min: 0, max: 15) { IsExposed = true });
 
         foreach (var aSetting in Settings)
         {