com.alicizax.unity.framework/Runtime/ABase/Extension/UnityEngine.Vector3/AxisExtensions.cs

87 lines
2.6 KiB
C#
Raw Normal View History

2026-03-23 19:10:57 +08:00
using AlicizaX;
namespace UnityEngine
{
[UnityEngine.Scripting.Preserve]
public static class AxisExtensions
{
public static Vector3 Convert(this Axis axis) => axis switch
{
Axis.X => Vector3.right,
Axis.X_Negative => Vector3.left,
Axis.Y => Vector3.up,
Axis.Y_Negative => Vector3.down,
Axis.Z => Vector3.forward,
Axis.Z_Negative => Vector3.back,
_ => Vector3.up,
};
public static Vector3 Direction(this Transform transform, Axis axis)
{
return axis switch
{
Axis.X => transform.right,
Axis.X_Negative => -transform.right,
Axis.Y => transform.up,
Axis.Y_Negative => -transform.up,
Axis.Z => transform.forward,
Axis.Z_Negative => -transform.forward,
_ => transform.up,
};
}
public static float Component(this Vector3 vector, Axis axis)
{
return axis switch
{
Axis.X or Axis.X_Negative => vector.x,
Axis.Y or Axis.Y_Negative => vector.y,
Axis.Z or Axis.Z_Negative => vector.z,
_ => vector.y,
};
}
public static Vector3 SetComponent(this Vector3 vector, Axis axis, float value)
{
switch (axis)
{
case Axis.X:
case Axis.X_Negative:
vector.x = value;
break;
case Axis.Y:
case Axis.Y_Negative:
vector.y = value;
break;
case Axis.Z:
case Axis.Z_Negative:
vector.z = value;
break;
}
return vector;
}
public static Vector3 Clamp(this Vector3 vector, Axis axis, MinMax limits)
{
switch (axis)
{
case Axis.X:
case Axis.X_Negative:
vector.x = Mathf.Clamp(vector.x, limits.RealMin, limits.RealMax);
break;
case Axis.Y:
case Axis.Y_Negative:
vector.y = Mathf.Clamp(vector.y, limits.RealMin, limits.RealMax);
break;
case Axis.Z:
case Axis.Z_Negative:
vector.z = Mathf.Clamp(vector.z, limits.RealMin, limits.RealMax);
break;
}
return vector;
}
}
}