/// <inheritdoc /> protected override GameObject OnCreateControl(Transform subCategoryList) { var tr = Object.Instantiate(SliderCopy, subCategoryList, true); tr.name = "sldTemp"; var textMesh = tr.Find("textShape").GetComponent <TextMeshProUGUI>(); textMesh.text = _settingName; textMesh.color = TextColor; var slider = tr.Find("Slider").GetComponent <Slider>(); slider.minValue = _minValue; slider.maxValue = _maxValue; slider.onValueChanged.AddListener(SetValue); slider.GetComponent <ObservableScrollTrigger>().OnScrollAsObservable().Subscribe(data => { var scrollDelta = data.scrollDelta.y; var valueChange = Mathf.Pow(10, Mathf.Round(Mathf.Log10(slider.maxValue / 100))); if (scrollDelta < 0f) { slider.value += valueChange; } else if (scrollDelta > 0f) { slider.value -= valueChange; } }); var inputField = tr.Find("InputField").GetComponent <TMP_InputField>(); inputField.onEndEdit.AddListener(txt => { var result = StringToValue?.Invoke(txt) ?? float.Parse(txt) / 100f; slider.value = Mathf.Clamp(result, slider.minValue, slider.maxValue); }); slider.onValueChanged.AddListener(f => { if (ValueToString != null) { inputField.text = ValueToString(f); } else { inputField.text = Mathf.RoundToInt(f * 100).ToString(); } }); var resetButton = tr.Find("Button").GetComponent <Button>(); resetButton.onClick.AddListener(() => slider.value = _defaultValue); BufferedValueChanged.Subscribe(f => slider.value = f); return(tr.gameObject); }
/// <inheritdoc /> protected override GameObject OnCreateControl(Transform subCategoryList) { var tr = Object.Instantiate(SliderCopy, subCategoryList, false); tr.name = "sldTemp"; var textMesh = tr.Find("textShape").GetComponent <TextMeshProUGUI>(); textMesh.text = _settingName; textMesh.color = TextColor; var slider = tr.Find("Slider").GetComponent <Slider>(); slider.minValue = _minValue; slider.maxValue = _maxValue; slider.wholeNumbers = WholeNumbers; slider.onValueChanged.AddListener(SetValue); slider.value = _defaultValue; slider.GetComponent <ObservableScrollTrigger>() .OnScrollAsObservable() .Subscribe( data => { var scrollDelta = data.scrollDelta.y; var valueChange = Mathf.Pow(10, Mathf.Floor(Mathf.Log10(Mathf.Max(Mathf.Abs(slider.minValue), Mathf.Abs(slider.maxValue)) / 100))); if (scrollDelta < 0f) { slider.value += valueChange; } else if (scrollDelta > 0f) { slider.value -= valueChange; } }); var inputField = tr.Find("InputField").GetComponent <TMP_InputField>(); if (MakerAPI.InsideMaker) { Singleton <ChaCustom.CustomBase> .Instance.lstTmpInputField.Add(inputField); } InputField(_defaultValue, inputField); inputField.onEndEdit.AddListener( txt => { try { var result = StringToValue?.Invoke(txt) ?? float.Parse(txt) / 100f; slider.value = Mathf.Clamp(result, slider.minValue, slider.maxValue); } catch { // Ignore parsing errors, lets user keep typing } }); slider.onValueChanged.AddListener( f => { InputField(f, inputField); }); #if KKS var resetButton = tr.Find("btnReset").GetComponent <Button>(); #else var resetButton = tr.Find("Button").GetComponent <Button>(); #endif resetButton.onClick.AddListener(() => slider.value = _defaultValue); BufferedValueChanged.Subscribe(f => slider.value = f); return(tr.gameObject); }
/// <inheritdoc /> protected override GameObject OnCreateControl(Transform subCategoryList) { var tr = Object.Instantiate(SliderCopy, subCategoryList, false); tr.name = "SliderSet"; var sliderSet = tr.GetComponent <CustomSliderSet>(); sliderSet.onChange = null; sliderSet.onPointerUp = null; sliderSet.onSetDefaultValue = null; GameObject.Destroy(sliderSet); sliderSet.title.text = _settingName; sliderSet.title.color = TextColor; SetTextAutosize(sliderSet.title); var slider = sliderSet.slider; slider.minValue = _minValue; slider.maxValue = _maxValue; slider.onValueChanged.ActuallyRemoveAllListeners(); slider.onValueChanged.AddListener(SetValue); slider.GetComponent <ObservableScrollTrigger>() .OnScrollAsObservable() .Subscribe( data => { var scrollDelta = data.scrollDelta.y; var valueChange = Mathf.Pow(10, Mathf.Floor(Mathf.Log10(Mathf.Max(Mathf.Abs(slider.minValue), Mathf.Abs(slider.maxValue)) / 100))); if (scrollDelta < 0f) { slider.value += valueChange; } else if (scrollDelta > 0f) { slider.value -= valueChange; } }); var inputField = sliderSet.input; inputField.onEndEdit.AddListener( txt => { try { var result = StringToValue?.Invoke(txt) ?? float.Parse(txt) / 100f; slider.value = Mathf.Clamp(result, slider.minValue, slider.maxValue); } catch { // Ignore parsing errors, lets user keep typing } }); slider.onValueChanged.AddListener( f => { if (ValueToString != null) { inputField.text = ValueToString(f); } else { inputField.text = Mathf.RoundToInt(f * 100).ToString(); } }); var resetButton = sliderSet.button; resetButton.onClick.ActuallyRemoveAllListeners(); resetButton.onClick.AddListener(() => slider.value = _defaultValue); BufferedValueChanged.Subscribe(f => slider.value = f); return(tr.gameObject); }