using System; using UnityEngine; namespace UnityAtoms.BaseAtoms { /// /// An `AtomFunction<float, float>` that clamps the value using a min and a max value and returns it. /// [EditorIcon("atom-icon-sand")] [CreateAssetMenu(menuName = "Unity Atoms/Functions/Transformers/Clamp Float (float => float)", fileName = "ClampFloat")] public class ClampFloat : FloatFloatFunction, IIsValid { /// /// The minimum value. /// public FloatReference Min; /// /// The maximum value. /// public FloatReference Max; public override float Call(float value) { if (!IsValid()) { throw new Exception("Min value must be less than or equal to Max value."); } return Mathf.Clamp(value, Min.Value, Max.Value); } public bool IsValid() { return Min.Value <= Max.Value; } } }