internal static void UnlockSliderPH(InputSliderUI x, float value, bool defaultRange = false)
        {
            var slider = GetSlider(x);

            var valueRoundedUp = (int)Math.Ceiling(Math.Abs(value));
            var max            = defaultRange ? 100 : SliderMax;
            var min            = defaultRange ? 0 : SliderMin;

            if (value > max)
            {
                slider.minValue = min;
                slider.maxValue = valueRoundedUp;
            }
            else if (value < min)
            {
                slider.minValue = -valueRoundedUp;
                slider.maxValue = max;
            }
            else
            {
                slider.minValue = min;
                slider.maxValue = max;
            }

            // Refresh default value marker position
            Traverse.Create(x).Method("SetDefPos").GetValue();
        }
        public static void EditModeSetup(InputSliderUI __instance, float val)
        {
            var slider = SliderUnlocker.GetSlider(__instance);

            if (slider.maxValue >= val)
            {
                return;
            }
            SliderUnlocker.UnlockSliderPH(__instance, val);
        }
        internal static Button GetDefButton(InputSliderUI x)
        {
            var defButton = Traverse.Create(x).Field("defButton").GetValue() as Button;

            if (defButton == null)
            {
                throw new ArgumentNullException(nameof(defButton));
            }
            return(defButton);
        }
        internal static CheckableSlider GetSlider(InputSliderUI x)
        {
            var slider = Traverse.Create(x).Field("slider").GetValue() as CheckableSlider;

            if (slider == null)
            {
                throw new ArgumentNullException(nameof(slider));
            }
            return(slider);
        }
        internal static InputField GetInputField(InputSliderUI x)
        {
            var inputField = Traverse.Create(x).Field("inputField").GetValue() as InputField;

            if (inputField == null)
            {
                throw new ArgumentNullException(nameof(inputField));
            }
            return(inputField);
        }
        internal static void UnlockSliderFromInputPH(InputSliderUI x, float value)
        {
            var slider     = GetSlider(x);
            var inputField = GetInputField(x);

            var absoluteMax = Math.Max(SliderMax, 500f);
            var absoluteMin = Math.Min(SliderMin, -500f);

            if (value > absoluteMax)
            {
                inputField.text = absoluteMax.ToString(CultureInfo.InvariantCulture);
                value           = absoluteMax;
            }
            else if (value < absoluteMin)
            {
                inputField.text = absoluteMin.ToString(CultureInfo.InvariantCulture);
                value           = absoluteMin;
            }

            UnlockSliderPH(x, value);
            slider.value = value;
        }