mirror of
https://github.com/unity-atoms/unity-atoms.git
synced 2025-01-23 16:48:23 -05:00
35 lines
993 B
C#
35 lines
993 B
C#
|
using System;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace UnityAtoms
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// An `AtomFunction<float, float>` that clamps the value using a min and a max value and returns it.
|
||
|
/// </summary>
|
||
|
[EditorIcon("atom-icon-sand")]
|
||
|
[CreateAssetMenu(menuName = "Unity Atoms/Functions/Transformers/Clamp Float (float => float)", fileName = "ClampFloat")]
|
||
|
public class ClampFloat : FloatFloatFunction, IIsValid
|
||
|
{
|
||
|
/// <summary>
|
||
|
/// The minimum value.
|
||
|
/// </summary>
|
||
|
public FloatReference Min;
|
||
|
|
||
|
/// <summary>
|
||
|
/// The maximum value.
|
||
|
/// </summary>
|
||
|
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;
|
||
|
}
|
||
|
}
|
||
|
}
|