@@ -11,6 +11,10 @@ public class FloatControlWidget : StringControlWidget
1111 public string Icon { get ; set ; }
1212 public string Label { get ; set ; }
1313 public Action < Rect , float > SliderPaint { get ; set ; }
14+ public float SliderCurve {
15+ get => SliderWidget ? . Curve ?? 1f ;
16+ set => SliderWidget ? . Curve = value;
17+ }
1418
1519 /// <summary>
1620 /// If true we can draw a slider
@@ -277,6 +281,7 @@ public class FloatSlider : Widget
277281{
278282 public float Minimum { get ; set ; }
279283 public float Maximum { get ; set ; }
284+ public float Curve { get ; set ; } = 1f ;
280285 public Action OnValueEdited { get ; set ; }
281286 public Color HighlightColor { get ; set ; } = Theme . TextLight ;
282287 public Action < Rect , float > SliderPaint { get ; set ; }
@@ -304,12 +309,23 @@ public float DeltaValue
304309 {
305310 get
306311 {
307- return MathX . LerpInverse ( Value , Minimum , Maximum , true ) ;
312+ var v = Value ;
313+ if ( Curve != 1 )
314+ {
315+ var range = Maximum - Minimum ;
316+ v = MathF . Pow ( v / range , 1f / Curve ) * range ;
317+ }
318+ return MathX . LerpInverse ( v , Minimum , Maximum , true ) ;
308319 }
309320
310321 set
311322 {
312323 var v = MathX . LerpTo ( Minimum , Maximum , value , true ) ;
324+ if ( Curve != 1 )
325+ {
326+ var range = Maximum - Minimum ;
327+ v = MathF . Pow ( v / range , Curve ) * range ;
328+ }
313329 Value = v ;
314330 }
315331
0 commit comments