< Summary

Information
Class: FixedMathSharp.Geometry.WideScaledHullPenetration
Assembly: FixedMathSharp
File(s): /home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Geometry/Wide/OrientedBox/WideScaledHullPenetration.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 40
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
.ctor(...)100%11100%
ShouldReplace(...)100%22100%
GetNormal()100%11100%
GetRoundedDepth(...)100%11100%

File(s)

/home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Geometry/Wide/OrientedBox/WideScaledHullPenetration.cs

#LineLine coverage
 1//=======================================================================
 2// WideScaledHullPenetration.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2024-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using System;
 9
 10namespace FixedMathSharp.Geometry;
 11
 12/// <summary>Exact signed exit retained before materializing a scaled hull's final contact.</summary>
 13internal readonly struct WideScaledHullPenetration
 14{
 15    internal readonly WideDirection3d Axis;
 16    internal readonly Signed832 Overlap, SquaredAxisLength;
 17    internal readonly Signed576 CommonDenominator;
 18    internal readonly bool Negate;
 19    internal bool HasValue { get; }
 20    internal WideScaledHullPenetration(WideDirection3d axis, bool negate, Signed832 overlap,
 21        Signed832 squaredAxisLength, Signed576 commonDenominator)
 22    {
 64423        Axis = axis; Negate = negate; Overlap = overlap; SquaredAxisLength = squaredAxisLength;
 32224        CommonDenominator = commonDenominator; HasValue = true;
 16125    }
 26    internal WideScaledHullPenetration(in WidePointSpanPenetration value)
 27    {
 628        Axis = new(value.Axis); Negate = value.Negate;
 329        Overlap = Signed832.ExtendValue(value.ExactOverlap);
 330        SquaredAxisLength = Signed832.ExtendValue(value.ExactSquaredAxisLength);
 331        CommonDenominator = Signed576.ExtendValue(value.ExactCommonDenominator);
 332        HasValue = value.HasValue;
 333    }
 34    internal bool ShouldReplace(Signed832 overlap, Signed832 squaredAxisLength, Signed576 denominator) =>
 753935        !HasValue || WideArithmetic.CompareNonNegativeNormalizedDepths(overlap, squaredAxisLength, denominator,
 753936            Overlap, SquaredAxisLength, CommonDenominator) < 0;
 1037    internal Vector3d GetNormal() => Axis.GetNormal(Negate);
 9838    internal Fixed64 GetRoundedDepth(out bool isClamped) => WideArithmetic.GetRoundedNonNegativeNormalizedDepth(
 9839        Overlap, SquaredAxisLength, CommonDenominator, out isClamped);
 40}