public static Vector3 MaxClampXZ(this Vector3 vector) { Vector3 vector3 = FezMath.Abs(vector); if ((double)vector3.X >= (double)vector3.Z) { return(new Vector3((float)Math.Sign(vector.X), 0.0f, 0.0f)); } else { return(new Vector3(0.0f, 0.0f, (float)Math.Sign(vector.Z))); } }
public static Vector2 ComputeTexCoord <T>(this T vertex, Vector3 trileSize) where T : ILitVertex, ITexturedVertex { FaceOrientation orientation = FezMath.OrientationFromDirection(vertex.Normal); Vector2 vector2; switch (orientation) { case FaceOrientation.Left: vector2 = new Vector2(0.375f, 0.0f); break; case FaceOrientation.Back: vector2 = new Vector2(0.375f, 0.0f); break; case FaceOrientation.Right: vector2 = new Vector2(0.25f, 0.0f); break; case FaceOrientation.Top: vector2 = new Vector2(0.5f, 0.0f); break; case FaceOrientation.Front: vector2 = Vector2.Zero; break; default: vector2 = new Vector2(0.625f, 0.0f); break; } Vector3 b = ((Vector3.One - FezMath.Abs(vertex.Normal)) * vertex.Position / trileSize * 2f + vertex.Normal) / 2f + new Vector3(0.5f); float num1 = FezMath.Dot(FezMath.RightVector(FezMath.AsViewpoint(orientation)), b); float num2 = FezMath.Dot(FezMath.UpVector(FezMath.AsViewpoint(orientation)), b); if (orientation != FaceOrientation.Top) { num2 = 1f - num2; } return(new Vector2(vector2.X + num1 / 8f, vector2.Y + num2)); }
public static Vector3 GetMask(this Vector3 vector) { return(FezMath.Abs(FezMath.Sign(vector))); }