You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
7.4 KiB
C#

/******************************************************************************/
/*
Project - MudBun
Publisher - Long Bunny Labs
http://LongBunnyLabs.com
Author - Ming-Lun "Allen" Chou
http://AllenChou.net
*/
/******************************************************************************/
using UnityEngine;
namespace MudBun
{
public class Validate
{
// float
//-------------------------------------------------------------------------
public static float AtLeast(float min, ref float v)
{
return v = Mathf.Max(min, v);
}
public static float Range(float min, float max, ref float v)
{
return v = Mathf.Clamp(v, min, max);
}
public static float NonNegative(ref float v)
{
return AtLeast(0.0f, ref v);
}
public static float Positive(ref float v)
{
return AtLeast(MathUtil.Epsilon, ref v);
}
public static float Saturate(ref float v)
{
return Range(0.0f, 1.0f, ref v);
}
//-------------------------------------------------------------------------
// end: float
// int
//-------------------------------------------------------------------------
public static int AtLeast(int min, ref int v)
{
return v = Mathf.Max(min, v);
}
public static int Range(int min, int max, ref int v)
{
return v = Mathf.Clamp(v, min, max);
}
public static int NonNegative(ref int v)
{
return AtLeast(0, ref v);
}
public static int Positive(ref int v)
{
return AtLeast(1, ref v);
}
//-------------------------------------------------------------------------
// end: int
// Vector2
//-------------------------------------------------------------------------
public static Vector2 AtLeast(float min, ref Vector2 v)
{
return v =
new Vector2
(
Mathf.Max(min, v.x),
Mathf.Max(min, v.y)
);
}
public static Vector2 AtLeast(Vector2 min, ref Vector2 v)
{
return v =
new Vector2
(
Mathf.Max(min.x, v.x),
Mathf.Max(min.y, v.y)
);
}
public static Vector2 Range(float min, float max, ref Vector2 v)
{
return v =
new Vector2
(
Mathf.Clamp(v.x, min, max),
Mathf.Clamp(v.y, min, max)
);
}
public static Vector2 Range(Vector2 min, Vector2 max, ref Vector2 v)
{
return v =
new Vector2
(
Mathf.Clamp(v.x, min.x, max.x),
Mathf.Clamp(v.y, min.y, max.y)
);
}
public static Vector2 NonNegative(ref Vector2 v)
{
return AtLeast(0.0f, ref v);
}
public static Vector2 Positive(ref Vector2 v)
{
return AtLeast(Mathf.Epsilon, ref v);
}
public static Vector2 Saturate(ref Vector2 v)
{
return Range(0.0f, 1.0f, ref v);
}
//-------------------------------------------------------------------------
// end: Vector2
// Vector3
//-------------------------------------------------------------------------
public static Vector3 AtLeast(float min, ref Vector3 v)
{
return v =
new Vector3
(
Mathf.Max(min, v.x),
Mathf.Max(min, v.y),
Mathf.Max(min, v.z)
);
}
public static Vector3 AtLeast(Vector3 min, ref Vector3 v)
{
return v =
new Vector3
(
Mathf.Max(min.x, v.x),
Mathf.Max(min.y, v.y),
Mathf.Max(min.z, v.z)
);
}
public static Vector3 Range(float min, float max, ref Vector3 v)
{
return v =
new Vector3
(
Mathf.Clamp(v.x, min, max),
Mathf.Clamp(v.y, min, max),
Mathf.Clamp(v.z, min, max)
);
}
public static Vector3 Range(Vector3 min, Vector3 max, ref Vector3 v)
{
return v =
new Vector3
(
Mathf.Clamp(v.x, min.x, max.x),
Mathf.Clamp(v.y, min.y, max.y),
Mathf.Clamp(v.z, min.z, max.z)
);
}
public static Vector3 NonNegative(ref Vector3 v)
{
return AtLeast(0.0f, ref v);
}
public static Vector3 Positive(ref Vector3 v)
{
return AtLeast(Mathf.Epsilon, ref v);
}
public static Vector3 Saturate(ref Vector3 v)
{
return Range(0.0f, 1.0f, ref v);
}
//-------------------------------------------------------------------------
// end: Vector3
// Vector3Int
//-------------------------------------------------------------------------
public static Vector3Int AtLeast(int min, ref Vector3Int v)
{
return v =
new Vector3Int
(
Mathf.Max(min, v.x),
Mathf.Max(min, v.y),
Mathf.Max(min, v.z)
);
}
public static Vector3Int AtLeast(Vector3Int min, ref Vector3Int v)
{
return v =
new Vector3Int
(
Mathf.Max(min.x, v.x),
Mathf.Max(min.y, v.y),
Mathf.Max(min.z, v.z)
);
}
public static Vector3Int Range(int min, int max, ref Vector3Int v)
{
return v =
new Vector3Int
(
Mathf.Clamp(v.x, min, max),
Mathf.Clamp(v.y, min, max),
Mathf.Clamp(v.z, min, max)
);
}
public static Vector3Int Range(Vector3Int min, Vector3Int max, ref Vector3Int v)
{
return v =
new Vector3Int
(
Mathf.Clamp(v.x, min.x, max.x),
Mathf.Clamp(v.y, min.y, max.y),
Mathf.Clamp(v.z, min.z, max.z)
);
}
public static Vector3Int NonNegative(ref Vector3Int v)
{
return AtLeast(0, ref v);
}
public static Vector3Int Positive(ref Vector3Int v)
{
return AtLeast(1, ref v);
}
//-------------------------------------------------------------------------
// end: Vector3Int
// Vector3
//-------------------------------------------------------------------------
public static Vector4 AtLeast(float min, ref Vector4 v)
{
return v =
new Vector4
(
Mathf.Max(min, v.x),
Mathf.Max(min, v.y),
Mathf.Max(min, v.z),
Mathf.Max(min, v.w)
);
}
public static Vector4 AtLeast(Vector4 min, ref Vector4 v)
{
return v =
new Vector4
(
Mathf.Max(min.x, v.x),
Mathf.Max(min.y, v.y),
Mathf.Max(min.z, v.z),
Mathf.Max(min.w, v.w)
);
}
public static Vector4 Range(float min, float max, ref Vector4 v)
{
return v =
new Vector4
(
Mathf.Clamp(v.x, min, max),
Mathf.Clamp(v.y, min, max),
Mathf.Clamp(v.z, min, max),
Mathf.Clamp(v.w, min, max)
);
}
public static Vector4 Range(Vector4 min, Vector4 max, ref Vector4 v)
{
return v =
new Vector4
(
Mathf.Clamp(v.x, min.x, max.x),
Mathf.Clamp(v.y, min.y, max.y),
Mathf.Clamp(v.z, min.z, max.z),
Mathf.Clamp(v.w, min.w, max.w)
);
}
public static Vector4 NonNegative(ref Vector4 v)
{
return AtLeast(0.0f, ref v);
}
public static Vector4 Positive(ref Vector4 v)
{
return AtLeast(Mathf.Epsilon, ref v);
}
public static Vector4 Saturate(ref Vector4 v)
{
return Range(0.0f, 1.0f, ref v);
}
//-------------------------------------------------------------------------
// end: Vector3
}
}