< Summary

Information
Class: Gravitas.CollisionHandling.ExactNormalConstraint3D
Assembly: Gravitas
File(s): /home/runner/work/Gravitas/Gravitas/src/Gravitas/CollisionHandling/Response/Exact/ExactNormalConstraint3D.cs
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 52
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%

File(s)

/home/runner/work/Gravitas/Gravitas/src/Gravitas/CollisionHandling/Response/Exact/ExactNormalConstraint3D.cs

#LineLine coverage
 1//=======================================================================
 2// ExactNormalConstraint3D.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.CollisionHandling;
 11
 12/// <summary>
 13/// Describes the normal constraint that supplies a Coulomb response.
 14/// </summary>
 15internal readonly struct ExactNormalConstraint3D
 16{
 17    internal ExactNormalConstraint3D(
 18        in ExactContactResponseOperand3D first,
 19        in ExactContactResponseOperand3D second,
 20        Vector3d normal,
 21        Fixed64 restitution,
 22        Fixed64 restitutionVelocityThreshold,
 23        Fixed64 accumulatedImpulse,
 24        Fixed64 positiveImpulseScale,
 25        Fixed64 negativeImpulseScale)
 26    {
 8727        First = first;
 8728        Second = second;
 8729        Normal = normal;
 8730        Restitution = restitution;
 8731        RestitutionVelocityThreshold = restitutionVelocityThreshold;
 8732        AccumulatedImpulse = accumulatedImpulse;
 8733        PositiveImpulseScale = positiveImpulseScale;
 8734        NegativeImpulseScale = negativeImpulseScale;
 8735    }
 36
 37    internal ExactContactResponseOperand3D First { get; }
 38
 39    internal ExactContactResponseOperand3D Second { get; }
 40
 41    internal Vector3d Normal { get; }
 42
 43    internal Fixed64 Restitution { get; }
 44
 45    internal Fixed64 RestitutionVelocityThreshold { get; }
 46
 47    internal Fixed64 AccumulatedImpulse { get; }
 48
 49    internal Fixed64 PositiveImpulseScale { get; }
 50
 51    internal Fixed64 NegativeImpulseScale { get; }
 52}