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#
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
|
|
}
|
|
}
|
|
|