Exemplo n.º 1
0
        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)));
            }
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
 public static Vector3 GetMask(this Vector3 vector)
 {
     return(FezMath.Abs(FezMath.Sign(vector)));
 }