< Summary

Information
Class: Gravitas.ContinuousCollisionModeSupport
Assembly: Gravitas
File(s): /home/runner/work/Gravitas/Gravitas/src/Gravitas/CollisionHandling/Continuous/ContinuousCollisionMode.cs
Line coverage
100%
Covered lines: 7
Uncovered lines: 0
Coverable lines: 7
Total lines: 54
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
IsValid(...)100%11100%
ThrowIfInvalid(...)100%11100%

File(s)

/home/runner/work/Gravitas/Gravitas/src/Gravitas/CollisionHandling/Continuous/ContinuousCollisionMode.cs

#LineLine coverage
 1//=======================================================================
 2// ContinuousCollisionMode.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 SwiftCollections;
 9using System.Runtime.CompilerServices;
 10
 11namespace Gravitas;
 12
 13/// <summary>
 14/// Selects how a body guards its frame movement against tunneling.
 15/// </summary>
 16public enum ContinuousCollisionMode : byte
 17{
 18    /// <summary>
 19    /// Uses the owning context's default continuous-collision mode.
 20    /// </summary>
 21    Inherit = 0,
 22
 23    /// <summary>
 24    /// Uses the existing discrete integration path without a movement sweep.
 25    /// </summary>
 26    Discrete = 1,
 27
 28    /// <summary>
 29    /// Sweeps the body through its intended frame displacement before committing position.
 30    /// </summary>
 31    Continuous = 2,
 32
 33    /// <summary>
 34    /// Sweeps only when the intended frame displacement is larger than the body proxy radius.
 35    /// </summary>
 36    Auto = 3
 37}
 38
 39internal static class ContinuousCollisionModeSupport
 40{
 41    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 42    internal static bool IsValid(this ContinuousCollisionMode mode) =>
 110143        (byte)mode <= (byte)ContinuousCollisionMode.Auto;
 44
 45    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 46    internal static void ThrowIfInvalid(this ContinuousCollisionMode mode, string parameterName)
 47    {
 110148        SwiftThrowHelper.ThrowIfArgumentOutOfRange(
 110149            !mode.IsValid(),
 110150            (int)mode,
 110151            parameterName,
 110152            "Continuous collision mode must be Inherit, Discrete, Continuous, or Auto.");
 108953    }
 54}