using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
using MuHua;
///
/// SliderInputH - Panel
///
public class UISliderInputH : ModuleUIPanel {
public float value;
public Vector2 range = new Vector2(1, 1);
public UISliderH slider;
public event Action ValueChanged;
public VisualElement Slider => Q("Slider");
public UIFloatField FloatField => Q("UIFloatField");
public UISliderInputH(VisualElement element, VisualElement canvas) : base(element) {
slider = new UISliderH(element, canvas);
slider.ValueChanged += Slider_ValueChanged;
FloatField.RegisterCallback>(FloatField_ValueChanged);
}
private void Slider_ValueChanged(float obj) {
value = Mathf.Lerp(range.x, range.y, obj);
FloatField.SetValueWithoutNotify(value);
ValueChanged?.Invoke(value);
}
private void FloatField_ValueChanged(ChangeEvent obj) {
value = Mathf.Clamp(obj.newValue, range.x, range.y);
float scale = Mathf.InverseLerp(range.x, range.y, value);
slider.UpdateValue(scale, false);
ValueChanged?.Invoke(value);
}
public void Update() {
slider.Update();
}
/// 更新值
public void UpdateValue(float value) {
this.value = Mathf.Clamp(range.x, range.y, value);
float scale = Mathf.InverseLerp(range.x, range.y, value);
slider.UpdateValue(scale, false);
FloatField.SetValueWithoutNotify(value);
}
}