< Summary

Information
Class: GridForge.Grids.GridDirectionUtility
Assembly: GridForge
File(s): /home/runner/work/GridForge/GridForge/src/GridForge/Grids/Managers/GridDirectionUtility.cs
Line coverage
83%
Covered lines: 5
Uncovered lines: 1
Coverable lines: 6
Total lines: 33
Line coverage: 83.3%
Branch coverage
92%
Covered branches: 13
Total branches: 14
Branch coverage: 92.8%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
GetNeighborDirectionFromOffset(...)92.85%151483.33%

File(s)

/home/runner/work/GridForge/GridForge/src/GridForge/Grids/Managers/GridDirectionUtility.cs

#LineLine coverage
 1using GridForge.Spatial;
 2using System.Diagnostics;
 3
 4namespace GridForge.Grids;
 5
 6/// <summary>
 7/// Provides stateless helpers for translating relative grid offsets into directions.
 8/// </summary>
 9public static class GridDirectionUtility
 10{
 11    /// <summary>
 12    /// Converts a 3D offset into a corresponding <see cref="SpatialDirection"/> in a 3x3x3 grid.
 13    /// </summary>
 14    /// <param name="gridOffset">The (x, y, z) offset from the center voxel.</param>
 15    /// <returns>The corresponding <see cref="SpatialDirection"/>, or <see cref="SpatialDirection.None"/> if invalid.</r
 16    public static SpatialDirection GetNeighborDirectionFromOffset((int x, int y, int z) gridOffset)
 17    {
 18        Debug.Assert(gridOffset.x >= -1 && gridOffset.x <= 1, "Invalid x offset.");
 19        Debug.Assert(gridOffset.y >= -1 && gridOffset.y <= 1, "Invalid y offset.");
 20        Debug.Assert(gridOffset.z >= -1 && gridOffset.z <= 1, "Invalid z offset.");
 21
 4322        if (gridOffset == (0, 0, 0))
 223            return SpatialDirection.None;
 24
 41825        for (int i = 0; i < SpatialAwareness.DirectionOffsets.Length; i++)
 26        {
 20927            if (SpatialAwareness.DirectionOffsets[i] == gridOffset)
 4128                return (SpatialDirection)i;
 29        }
 30
 031        return SpatialDirection.None;
 32    }
 33}