< Summary

Information
Class: Gravitas.Colliders.MeshCheckedMath
Assembly: Gravitas
File(s): /home/runner/work/Gravitas/Gravitas/src/Gravitas/Colliders/Mesh/MeshCheckedMath.cs
Line coverage
100%
Covered lines: 65
Uncovered lines: 0
Coverable lines: 65
Total lines: 124
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
TryCreateParallelAxisTensor(...)100%22100%
TryAdd(...)100%11100%
TrySubtract(...)100%11100%
TryMultiply(...)100%22100%
TryAdd(...)100%11100%
TrySubtract(...)100%11100%
TryAdd(...)100%11100%
TrySubtract(...)100%11100%
TryMultiply(...)100%11100%
TryNegate(...)100%11100%
IsRepresentable(...)100%11100%
TryCreateMatrix(...)100%22100%
TryCombine(...)100%22100%

File(s)

/home/runner/work/Gravitas/Gravitas/src/Gravitas/Colliders/Mesh/MeshCheckedMath.cs

#LineLine coverage
 1//=======================================================================
 2// MeshCheckedMath.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2026-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using FixedMathSharp;
 9
 10namespace Gravitas.Colliders;
 11
 12internal static class MeshCheckedMath
 13{
 14    internal static bool TryCreateParallelAxisTensor(Vector3d offset, out Fixed3x3 tensor)
 15    {
 12716        tensor = default;
 12717        bool valid = TryMultiply(offset.X, offset.X, out Fixed64 xx);
 12718        valid &= TryMultiply(offset.Y, offset.Y, out Fixed64 yy);
 12719        valid &= TryMultiply(offset.Z, offset.Z, out Fixed64 zz);
 12720        valid &= TryMultiply(offset.X, offset.Y, out Fixed64 xyProduct);
 12721        valid &= TryMultiply(offset.X, offset.Z, out Fixed64 xzProduct);
 12722        valid &= TryMultiply(offset.Y, offset.Z, out Fixed64 yzProduct);
 12723        valid &= TryAdd(yy, zz, out Fixed64 diagonalX);
 12724        valid &= TryAdd(xx, zz, out Fixed64 diagonalY);
 12725        valid &= TryAdd(xx, yy, out Fixed64 diagonalZ);
 12726        valid &= TryNegate(xyProduct, out Fixed64 xy);
 12727        valid &= TryNegate(xzProduct, out Fixed64 xz);
 12728        valid &= TryNegate(yzProduct, out Fixed64 yz);
 12729        if (!valid)
 330            return false;
 31
 12432        tensor = new Fixed3x3(diagonalX, xy, xz, xy, diagonalY, yz, xz, yz, diagonalZ);
 12433        return true;
 34    }
 35
 36    internal static bool TryAdd(Vector3d first, Vector3d second, out Vector3d result) =>
 137        Vector3d.TryAdd(first, second, out result);
 38
 39    internal static bool TrySubtract(Vector3d first, Vector3d second, out Vector3d result) =>
 12740        Vector3d.TrySubtract(first, second, out result);
 41
 42    internal static bool TryMultiply(Vector3d first, Vector3d second, out Vector3d result)
 43    {
 12744        result = default;
 12745        bool valid = Fixed64.TryMultiplyDivide(
 12746            first.X,
 12747            second.X,
 12748            Fixed64.One,
 12749            out Fixed64 x);
 12750        valid &= Fixed64.TryMultiplyDivide(
 12751            first.Y,
 12752            second.Y,
 12753            Fixed64.One,
 12754            out Fixed64 y);
 12755        valid &= Fixed64.TryMultiplyDivide(
 12756            first.Z,
 12757            second.Z,
 12758            Fixed64.One,
 12759            out Fixed64 z);
 12760        if (!valid)
 161            return false;
 62
 12663        result = new Vector3d(x, y, z);
 12664        return true;
 65    }
 66
 67    internal static bool TryAdd(Fixed3x3 first, Fixed3x3 second, out Fixed3x3 result) =>
 6468        TryCreateMatrix(first, second, add: true, out result);
 69
 70    internal static bool TrySubtract(Fixed3x3 first, Fixed3x3 second, out Fixed3x3 result) =>
 6371        TryCreateMatrix(first, second, add: false, out result);
 72
 73    internal static bool TryAdd(
 74        Fixed64 first,
 75        Fixed64 second,
 76        out Fixed64 result) =>
 133577        Fixed64.TryAdd(first, second, out result);
 78
 79    internal static bool TrySubtract(
 80        Fixed64 first,
 81        Fixed64 second,
 82        out Fixed64 result) =>
 75683        Fixed64.TrySubtract(first, second, out result);
 84
 85    internal static bool TryMultiply(
 86        Fixed64 first,
 87        Fixed64 second,
 88        out Fixed64 result) =>
 191189        Fixed64.TryMultiplyDivide(
 191190            first,
 191191            second,
 191192            Fixed64.One,
 191193            out result);
 94
 95    internal static bool TryNegate(
 96        Fixed64 value,
 97        out Fixed64 result) =>
 75998        Fixed64.TrySubtract(Fixed64.Zero, value, out result);
 99
 100    internal static bool IsRepresentable(Fixed64 value) =>
 1672101        value != Fixed64.MinValue & value != Fixed64.MaxValue;
 102
 103    private static bool TryCreateMatrix(Fixed3x3 first, Fixed3x3 second, bool add, out Fixed3x3 result)
 104    {
 127105        result = default;
 127106        bool valid = TryCombine(first.M11, second.M11, add, out Fixed64 m11);
 127107        valid &= TryCombine(first.M12, second.M12, add, out Fixed64 m12);
 127108        valid &= TryCombine(first.M13, second.M13, add, out Fixed64 m13);
 127109        valid &= TryCombine(first.M21, second.M21, add, out Fixed64 m21);
 127110        valid &= TryCombine(first.M22, second.M22, add, out Fixed64 m22);
 127111        valid &= TryCombine(first.M23, second.M23, add, out Fixed64 m23);
 127112        valid &= TryCombine(first.M31, second.M31, add, out Fixed64 m31);
 127113        valid &= TryCombine(first.M32, second.M32, add, out Fixed64 m32);
 127114        valid &= TryCombine(first.M33, second.M33, add, out Fixed64 m33);
 127115        if (!valid)
 1116            return false;
 117
 126118        result = new Fixed3x3(m11, m12, m13, m21, m22, m23, m31, m32, m33);
 126119        return true;
 120    }
 121
 122    private static bool TryCombine(Fixed64 first, Fixed64 second, bool add, out Fixed64 result) =>
 1143123        add ? TryAdd(first, second, out result) : TrySubtract(first, second, out result);
 124}