Split project
This commit is contained in:
94
Manual/ModuleRealValueParameterSetter.cs
Normal file
94
Manual/ModuleRealValueParameterSetter.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user