1
0
Fork 0
LaboratoryProtection/Assets/PMaker/Scripts/Extension/IntExtension.cs

79 lines
2.3 KiB
C#

namespace PMaker.Extension
{
public static class IntExtension
{
/// <summary>
/// 判断是否在指定范围内
/// </summary>
/// <param name="value"></param>
/// <param name="min">最小值</param>
/// <param name="max">最大值</param>
/// <returns></returns>
public static bool IsClamp(this int value, int min, int max)
{
return value <= max & value >= min;
}
/// <summary>
/// 某一范围内循环自增
/// </summary>
/// <param name="value"></param>
/// <param name="max"></param>
/// <param name="min"></param>
public static void CyclicAdd(ref this int value, int max, int min = 0)
{
value = (value - min + 1) % max + min;
}
/// <summary>
/// 某一范围内循环自减
/// </summary>
/// <param name="value"></param>
/// <param name="max"></param>
/// <param name="min"></param>
public static void CyclicSub(ref this int value, int max, int min = 0)
{
value = (value - min + max - 1) % max + min;
}
//public static int CyclicAdd(this int value, int max, int min = 0)
//{
// return (value - min + 1) % max + min;
//}
//public static int CyclicSub(this int value, int max, int min = 0)
//{
// return (value - min + max - 1) % max + min;
//}
/// <summary>
/// 设置指定bit位为1
/// </summary>
/// <param name="value"></param>
/// <param name="index">0base</param>
public static void BitOn(ref this int value, int index)
{
value |= (1 << index);
}
/// <summary>
/// 设置指定bit位为0
/// </summary>
/// <param name="value"></param>
/// <param name="index">0base</param>
public static void BitOff(ref this int value, int index)
{
value &= ~(1 << index);
}
/// <summary>
/// 判断是否包含目标值
/// </summary>
/// <param name="value"></param>
/// <param name="target"></param>
/// <returns></returns>
public static bool BitIs(this int value, int target)
{
return (value & target) == target;
}
}
}