/// <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); }
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); }
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); }