|
|
- #define PRO
-
- using UnityEngine;
- using System.Collections;
-
- namespace ProGrids
- {
- public enum Axis {
- None = 0x0,
- X = 0x1,
- Y = 0x2,
- Z = 0x4,
- NegX = 0x8,
- NegY = 0x16,
- NegZ = 0x32
- }
-
- public enum SnapUnit {
- Meter,
- #if PRO
- Centimeter,
- Millimeter,
- Inch,
- Foot,
- Yard,
- Parsec
- #endif
- }
-
- public static class pg_Enum
- {
- /**
- * Multiplies a Vector3 using the inverse value of an axis (eg, Axis.Y becomes Vector3(1, 0, 1) )
- */
- public static Vector3 InverseAxisMask(Vector3 v, Axis axis)
- {
- switch(axis)
- {
- case Axis.X:
- case Axis.NegX:
- return Vector3.Scale(v, new Vector3(0f, 1f, 1f));
-
- case Axis.Y:
- case Axis.NegY:
- return Vector3.Scale(v, new Vector3(1f, 0f, 1f));
-
- case Axis.Z:
- case Axis.NegZ:
- return Vector3.Scale(v, new Vector3(1f, 1f, 0f));
-
- default:
- return v;
- }
- }
-
- public static Vector3 AxisMask(Vector3 v, Axis axis)
- {
- switch(axis)
- {
- case Axis.X:
- case Axis.NegX:
- return Vector3.Scale(v, new Vector3(1f, 0f, 0f));
-
- case Axis.Y:
- case Axis.NegY:
- return Vector3.Scale(v, new Vector3(0f, 1f, 0f));
-
- case Axis.Z:
- case Axis.NegZ:
- return Vector3.Scale(v, new Vector3(0f, 0f, 1f));
-
- default:
- return v;
- }
- }
-
- public static float SnapUnitValue(SnapUnit su)
- {
- switch(su)
- {
- case SnapUnit.Meter:
- return pg_Constant.METER;
- #if PRO
- case SnapUnit.Centimeter:
- return pg_Constant.CENTIMETER;
- case SnapUnit.Millimeter:
- return pg_Constant.MILLIMETER;
- case SnapUnit.Inch:
- return pg_Constant.INCH;
- case SnapUnit.Foot:
- return pg_Constant.FOOT;
- case SnapUnit.Yard:
- return pg_Constant.YARD;
- case SnapUnit.Parsec:
- return pg_Constant.PARSEC;
- #endif
- default:
- return pg_Constant.METER;
- }
- }
- }
- }
|