52 lines
966 B
C#
52 lines
966 B
C#
using System;
|
|
using UnityEngine;
|
|
|
|
[Serializable]
|
|
public struct ObiBrushMirrorSettings
|
|
{
|
|
[Flags]
|
|
public enum MirrorAxis
|
|
{
|
|
None = 0x0,
|
|
X = 0x1,
|
|
Y = 0x2,
|
|
Z = 0x4
|
|
}
|
|
|
|
public enum MirrorSpace
|
|
{
|
|
World = 0,
|
|
Camera = 1
|
|
}
|
|
|
|
public MirrorAxis axis;
|
|
public MirrorSpace space;
|
|
|
|
public Vector3 ToAxis()
|
|
{
|
|
uint m = (uint)axis;
|
|
|
|
bool xMirror = (m & (uint)MirrorAxis.X) > 0;
|
|
bool yMirror = (m & (uint)MirrorAxis.Y) > 0;
|
|
bool zMirror = (m & (uint)MirrorAxis.Z) > 0;
|
|
|
|
if (axis < 0 || ((int)axis > (int)MirrorAxis.X + (int)MirrorAxis.Y + (int)MirrorAxis.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;
|
|
}
|
|
}
|