Пример #1
0
 /// <summary>
 /// See remarks!!
 /// </summary>
 /// <param name="m"></param>
 /// <returns></returns>
 /// <remarks>
 /// return Identity if Matrix4x4 can't be inverted
 /// </remarks>
 public static Matrix4x4 Inverted(this in Matrix4x4 m)
 {
     if (Matrix4x4.Invert(m, out var inverted))
     {
         return(inverted);
     }
     return(Matrix4x4.Identity);
 }
Пример #2
0
        internal static Matrix4x4 Inverse(this in Matrix4x4 src)
        {
            if (!Matrix4x4.Invert(src, out Matrix4x4 dst))
            {
                Guard.IsTrue(false, nameof(src), "Matrix cannot be inverted.");
            }

            return(dst);
        }
Пример #3
0
        internal static bool IsValid(this in Matrix4x4 matrix)
        {
            if (!matrix._IsFinite())
            {
                return(false);
            }

            if (!Matrix4x4.Decompose(matrix, out Vector3 s, out Quaternion r, out Vector3 t))
            {
                return(false);
            }

            if (!Matrix4x4.Invert(matrix, out Matrix4x4 inverse))
            {
                return(false);
            }

            return(true);
        }