add
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UnityEditorHelper
|
||||
{
|
||||
public class LimitAttribute : PropertyAttribute
|
||||
{
|
||||
public enum Mode { LimitLower, LimitUpper, LimitBoth }
|
||||
|
||||
private readonly Mode _limitMode;
|
||||
|
||||
private readonly int _lowerLimit;
|
||||
private readonly int _upperLimit;
|
||||
|
||||
public LimitAttribute(int lowerLimit) : this(Mode.LimitLower, lowerLimit, int.MaxValue) { }
|
||||
|
||||
public LimitAttribute(int lowerLimit, int upperLimit) : this(Mode.LimitLower, lowerLimit, upperLimit) { }
|
||||
|
||||
private LimitAttribute(Mode mode, int lowerLimit, int upperLimit)
|
||||
{
|
||||
_limitMode = mode;
|
||||
_lowerLimit = lowerLimit;
|
||||
_upperLimit = upperLimit;
|
||||
}
|
||||
|
||||
public int Limit(int value)
|
||||
{
|
||||
switch (_limitMode)
|
||||
{
|
||||
case Mode.LimitLower:
|
||||
return Mathf.Clamp(value, _lowerLimit, int.MaxValue);
|
||||
case Mode.LimitUpper:
|
||||
return Mathf.Clamp(value, int.MinValue, _upperLimit);
|
||||
case Mode.LimitBoth:
|
||||
return Mathf.Clamp(value, _lowerLimit, _upperLimit);
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user