94 lines
2.0 KiB
C#
94 lines
2.0 KiB
C#
using Godot;
|
|
using Nocturnis.DataStructures.ConfigurableParameters;
|
|
|
|
namespace Enigmos.Manual;
|
|
|
|
public partial class ModuleRealValueParameterSetter : ModuleParameterSetter
|
|
{
|
|
public void Init(IDoubleParameter parameter)
|
|
{
|
|
UnderlyingParameter = parameter;
|
|
InitFlag = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Underlying Parameter must be set before ready
|
|
/// </summary>
|
|
public new IDoubleParameter UnderlyingParameter
|
|
{
|
|
get => (base.UnderlyingParameter as IDoubleParameter)!;
|
|
set => base.UnderlyingParameter = value;
|
|
}
|
|
private HSlider SliderSetter { get; set; }
|
|
private SpinBox SpinSetter { get; set; }
|
|
private double MinValue
|
|
{
|
|
get => SliderSetter.MinValue;
|
|
set
|
|
{
|
|
SliderSetter.MinValue = value;
|
|
SpinSetter.MinValue = value;
|
|
}
|
|
}
|
|
private double MaxValue
|
|
{
|
|
get => SliderSetter.MaxValue;
|
|
set
|
|
{
|
|
SliderSetter.MaxValue = value;
|
|
SpinSetter.MaxValue = value;
|
|
}
|
|
}
|
|
private double Step
|
|
{
|
|
get => SliderSetter.Step;
|
|
set
|
|
{
|
|
SliderSetter.Step = value;
|
|
SpinSetter.Step = value;
|
|
}
|
|
}
|
|
private Label MaxLabel { get; set; }
|
|
private Label MinLabel { get; set; }
|
|
private double Value
|
|
{
|
|
get => SliderSetter.Value;
|
|
set
|
|
{
|
|
SliderSetter.Value = value;
|
|
SpinSetter.Value = value;
|
|
}
|
|
}
|
|
|
|
public override void _Ready()
|
|
{
|
|
if (!InitFlag)
|
|
throw new Exception("TODO - NEED INIT");
|
|
|
|
SliderSetter = GetNode<HSlider>("SliderSetter");
|
|
SpinSetter = GetNode<SpinBox>("SpinSetter");
|
|
MaxLabel = GetNode<Label>("MaxLabel");
|
|
MinLabel = GetNode<Label>("MinLabel");
|
|
MinValue = UnderlyingParameter.MinValue;
|
|
MaxValue = UnderlyingParameter.MaxValue;
|
|
Step = UnderlyingParameter.Step;
|
|
Value = UnderlyingParameter.ParameterValue;
|
|
MaxLabel.Text = $"{MaxValue:F3}";
|
|
MinLabel.Text = $"{MinValue:F3}";
|
|
base._Ready();
|
|
}
|
|
|
|
private void SpinValueUpdateHandler(double val)
|
|
{
|
|
if (!SliderSetter.Value.Equals(val))
|
|
SliderSetter.Value = val;
|
|
UnderlyingParameter.ParameterValue = val;
|
|
}
|
|
|
|
private void SliderValueUpdateHandler(double val)
|
|
{
|
|
if (!SpinSetter.Value.Equals(val))
|
|
SpinSetter.Value = val;
|
|
UnderlyingParameter.ParameterValue = val;
|
|
}
|
|
} |