2025-01-30 23:38:06 +01:00

68 lines
2.0 KiB
C#

using UnityEngine;
using TMPro;
namespace Michsky.MUIP
{
public class RangeSlider : MonoBehaviour
{
[Header("Settings")]
[Range(0,2)] public int decimalPlaces = 0;
public float minValue = 0;
public float maxValue = 1;
public bool showLabels = true;
public bool useWholeNumbers = true;
[Header("Min Slider")]
public RangeMinSlider minSlider;
public TextMeshProUGUI minSliderLabel;
[Header("Max Slider")]
public RangeMaxSlider maxSlider;
public TextMeshProUGUI maxSliderLabel;
public float CurrentLowerValue { get { return minSlider.value; } }
public float CurrentUpperValue { get { return maxSlider.realValue; } }
void Awake()
{
if (minSlider == null || maxSlider == null)
return;
if (showLabels == true)
{
minSlider.label = minSliderLabel;
minSlider.numberFormat = "n" + decimalPlaces;
maxSlider.label = maxSliderLabel;
maxSlider.numberFormat = "n" + decimalPlaces;
}
else
{
minSliderLabel.gameObject.SetActive(false);
maxSliderLabel.gameObject.SetActive(false);
}
if (useWholeNumbers == true)
{
minSlider.wholeNumbers = true;
maxSlider.wholeNumbers = true;
}
minSlider.minValue = minValue;
minSlider.maxValue = maxValue;
minSlider.onValueChanged.AddListener(CheckForMinState);
maxSlider.minValue = minValue;
maxSlider.maxValue = maxValue;
}
public void CheckForMinState(float value)
{
if (minSlider.value >= maxSlider.realValue)
{
maxSlider.realValue = minSlider.value;
minSlider.value = maxSlider.realValue - 1;
}
}
}
}