< Summary

Information
Class: Trailblazer.Pathing.TraversalTransitionOrdering
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Transition/Query/TraversalTransitionOrdering.cs
Line coverage
100%
Covered lines: 49
Uncovered lines: 0
Coverable lines: 49
Total lines: 94
Line coverage: 100%
Branch coverage
100%
Covered branches: 32
Total branches: 32
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Sort(...)100%44100%
Compare(...)100%1010100%
CompareAnchors(...)100%88100%
CompareVoxelIndices(...)100%66100%
ComparePositions(...)100%44100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Transition/Query/TraversalTransitionOrdering.cs

#LineLine coverage
 1using FixedMathSharp;
 2using GridForge.Spatial;
 3using System;
 4
 5namespace Trailblazer.Pathing;
 6
 7/// <summary>
 8/// Provides deterministic ordering for transition snapshots exposed by the registry and query layer.
 9/// </summary>
 10internal static class TraversalTransitionOrdering
 11{
 12    public static void Sort(TraversalTransition[] transitions)
 13    {
 56814        if (transitions == null || transitions.Length <= 1)
 28615            return;
 16
 28217        Array.Sort(transitions, Compare);
 28218    }
 19
 20    public static int Compare(TraversalTransition left, TraversalTransition right)
 21    {
 67822        int idComparison = string.CompareOrdinal(left.Id, right.Id);
 67823        if (idComparison != 0)
 65524            return idComparison;
 25
 2326        int typeComparison = left.Type.CompareTo(right.Type);
 2327        if (typeComparison != 0)
 128            return typeComparison;
 29
 2230        int sourceComparison = CompareAnchors(left.Source, right.Source);
 2231        if (sourceComparison != 0)
 1232            return sourceComparison;
 33
 1034        int destinationComparison = CompareAnchors(left.Destination, right.Destination);
 1035        if (destinationComparison != 0)
 636            return destinationComparison;
 37
 438        int costComparison = left.PathCostModifier.CompareTo(right.PathCostModifier);
 439        if (costComparison != 0)
 140            return costComparison;
 41
 342        return left.IsBidirectional.CompareTo(right.IsBidirectional);
 43    }
 44
 45    private static int CompareAnchors(TraversalTransitionAnchor left, TraversalTransitionAnchor right)
 46    {
 3247        int mediumComparison = left.Medium.CompareTo(right.Medium);
 3248        if (mediumComparison != 0)
 349            return mediumComparison;
 50
 2951        int voxelComparison = CompareVoxelIndices(left.VoxelIndex, right.VoxelIndex);
 2952        if (voxelComparison != 0)
 1153            return voxelComparison;
 54
 1855        int pointOverrideComparison = left.HasPointOverride.CompareTo(right.HasPointOverride);
 1856        if (pointOverrideComparison != 0)
 157            return pointOverrideComparison;
 58
 1759        if (!left.HasPointOverride)
 1460            return 0;
 61
 362        return ComparePositions(left.PointOverride, right.PointOverride);
 63    }
 64
 65    private static int CompareVoxelIndices(WorldVoxelIndex left, WorldVoxelIndex right)
 66    {
 2967        int gridComparison = left.GridIndex.CompareTo(right.GridIndex);
 2968        if (gridComparison != 0)
 169            return gridComparison;
 70
 2871        int xComparison = left.VoxelIndex.x.CompareTo(right.VoxelIndex.x);
 2872        if (xComparison != 0)
 673            return xComparison;
 74
 2275        int yComparison = left.VoxelIndex.y.CompareTo(right.VoxelIndex.y);
 2276        if (yComparison != 0)
 277            return yComparison;
 78
 2079        return left.VoxelIndex.z.CompareTo(right.VoxelIndex.z);
 80    }
 81
 82    private static int ComparePositions(Vector3d left, Vector3d right)
 83    {
 384        int xComparison = left.x.CompareTo(right.x);
 385        if (xComparison != 0)
 186            return xComparison;
 87
 288        int yComparison = left.y.CompareTo(right.y);
 289        if (yComparison != 0)
 190            return yComparison;
 91
 192        return left.z.CompareTo(right.z);
 93    }
 94}