namespace UnityEngine.Polybrush
{
[System.Flags]
internal enum BrushMirror
{
None = 0x0,
X = 0x1,
Y = 0x2,
Z = 0x4
}
///
/// Helper functions for working with Mirror enum.
///
internal static class BrushMirrorUtility
{
///
/// Convert a mirror enum to it's corresponding vector value.
///
internal static Vector3 ToVector3(this BrushMirror mirror)
{
uint m = (uint) mirror;
bool xMirror = (m & (uint)BrushMirror.X) > 0;
bool yMirror = (m & (uint)BrushMirror.Y) > 0;
bool zMirror = (m & (uint)BrushMirror.Z) > 0;
//out of range
if(mirror < 0 || ((int)mirror > (int)BrushMirror.X + (int)BrushMirror.Y + (int)BrushMirror.Z))
{
return Vector3.one;
}
Vector3 reflection = Vector3.one;
if(xMirror)
reflection.x = -1f;
if(yMirror)
reflection.y = -1f;
if(zMirror)
reflection.z = -1f;
return reflection;
}
}
}