BITFALL/Assets/GSpawn - Level Designer/Scripts/Math/PlaneId.cs

97 lines
3.8 KiB
C#

#if UNITY_EDITOR
namespace GSpawn
{
public enum PlaneId
{
XY = 0,
YZ,
ZX
}
public static class PlaneIdEx
{
public static AxisDescriptor getFirstAxisDescriptor(this PlaneId planeId, PlaneQuadrantId planeQuadrant)
{
return new AxisDescriptor(planeIdToFirstAxisIndex(planeId), getFirstAxisSign(planeId, planeQuadrant));
}
public static AxisDescriptor getSecondAxisDescriptor(this PlaneId planeId, PlaneQuadrantId planeQuadrant)
{
return new AxisDescriptor(planeIdToSecondAxisIndex(planeId), getSecondAxisSign(planeId, planeQuadrant));
}
public static AxisSign getFirstAxisSign(this PlaneId planeId, PlaneQuadrantId planeQuadrant)
{
if (planeId == PlaneId.XY)
{
if (planeQuadrant == PlaneQuadrantId.First) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Second) return AxisSign.Negative;
else if (planeQuadrant == PlaneQuadrantId.Third) return AxisSign.Negative;
else return AxisSign.Positive;
}
else
if (planeId == PlaneId.YZ)
{
if (planeQuadrant == PlaneQuadrantId.First) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Second) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Third) return AxisSign.Negative;
else return AxisSign.Negative;
}
else
{
if (planeQuadrant == PlaneQuadrantId.First) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Second) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Third) return AxisSign.Negative;
else return AxisSign.Negative;
}
}
public static AxisSign getSecondAxisSign(this PlaneId planeId, PlaneQuadrantId planeQuadrant)
{
if (planeId == PlaneId.XY)
{
if (planeQuadrant == PlaneQuadrantId.First) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Second) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Third) return AxisSign.Negative;
else return AxisSign.Negative;
}
else
if (planeId == PlaneId.YZ)
{
if (planeQuadrant == PlaneQuadrantId.First) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Second) return AxisSign.Negative;
else if (planeQuadrant == PlaneQuadrantId.Third) return AxisSign.Negative;
else return AxisSign.Positive;
}
else
{
if (planeQuadrant == PlaneQuadrantId.First) return AxisSign.Positive;
else if (planeQuadrant == PlaneQuadrantId.Second) return AxisSign.Negative;
else if (planeQuadrant == PlaneQuadrantId.Third) return AxisSign.Negative;
else return AxisSign.Positive;
}
}
public static int planeIdToFirstAxisIndex(this PlaneId planeId)
{
if (planeId == PlaneId.XY) return 0;
if (planeId == PlaneId.ZX) return 2;
return 1;
}
public static int planeIdToSecondAxisIndex(this PlaneId planeId)
{
if (planeId == PlaneId.XY) return 1;
if (planeId == PlaneId.ZX) return 0;
return 2;
}
public static PlaneId axisIndexToPlaneId(int axisIndex)
{
if (axisIndex == 0) return PlaneId.YZ;
if (axisIndex == 1) return PlaneId.ZX;
return PlaneId.XY;
}
}
}
#endif