< Summary

Information
Class: Trailblazer.Pathing.TrailblazerTransitionService
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Transition/TrailblazerTransitionService.cs
Line coverage
100%
Covered lines: 62
Uncovered lines: 0
Coverable lines: 62
Total lines: 160
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
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%
get_RegistryVersion()100%11100%
get_AllTransitions()100%11100%
Register(...)100%11100%
IsRegistered(...)100%11100%
IsActive(...)100%11100%
TryGet(...)100%11100%
TryGetResolvedEndpoints(...)100%11100%
Unregister(...)100%11100%
GetOutgoingTransitions(...)100%11100%
GetOutgoingTransitions(...)100%11100%
GetIncomingTransitions(...)100%11100%
GetIncomingTransitions(...)100%11100%
GetDirectedTransitionsFromSourceGrid(...)100%11100%
GetDirectedTransitions(...)100%11100%
GetDirectedTransitionsToDestinationGrid(...)100%11100%
EnterUsableState()100%11100%
EnsureUsable()100%44100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Transition/TrailblazerTransitionService.cs

#LineLine coverage
 1using FixedMathSharp;
 2using GridForge.Spatial;
 3using System;
 4
 5namespace Trailblazer.Pathing;
 6
 7/// <summary>
 8/// Context-owned API for traversal transition registration and deterministic query snapshots.
 9/// </summary>
 10public sealed class TrailblazerTransitionService
 11{
 12    private readonly TrailblazerWorldContext _context;
 13    private readonly PathingWorldState _state;
 14
 96115    internal TrailblazerTransitionService(TrailblazerWorldContext context, PathingWorldState state)
 16    {
 96117        _context = context;
 96118        _state = state;
 96119    }
 20
 21    /// <inheritdoc cref="TraversalTransitionRegistry.RegistryVersion"/>
 22    public int RegistryVersion
 23    {
 24        get
 25        {
 426            using (EnterUsableState())
 227                return TraversalTransitionRegistry.RegistryVersion;
 228        }
 29    }
 30
 31    /// <inheritdoc cref="TraversalTransitionRegistry.AllTransitions"/>
 32    public TraversalTransition[] AllTransitions
 33    {
 34        get
 35        {
 236            using (EnterUsableState())
 237                return TraversalTransitionRegistry.AllTransitions;
 238        }
 39    }
 40
 41    /// <inheritdoc cref="TraversalTransitionRegistry.Register(TraversalTransition,int)"/>
 42    public bool Register(TraversalTransition transition, int priority = TraversalTransitionRegistry.DefaultManualPriorit
 43    {
 5644        using (EnterUsableState())
 5645            return TraversalTransitionRegistry.Register(transition, priority);
 5646    }
 47
 48    /// <inheritdoc cref="TraversalTransitionRegistry.IsRegistered(string)"/>
 49    public bool IsRegistered(string id)
 50    {
 651        using (EnterUsableState())
 652            return TraversalTransitionRegistry.IsRegistered(id);
 653    }
 54
 55    /// <inheritdoc cref="TraversalTransitionRegistry.IsActive(string)"/>
 56    public bool IsActive(string id)
 57    {
 158        using (EnterUsableState())
 159            return TraversalTransitionRegistry.IsActive(id);
 160    }
 61
 62    /// <inheritdoc cref="TraversalTransitionRegistry.TryGet(string,out TraversalTransition)"/>
 63    public bool TryGet(string id, out TraversalTransition transition)
 64    {
 165        using (EnterUsableState())
 166            return TraversalTransitionRegistry.TryGet(id, out transition);
 167    }
 68
 69    /// <inheritdoc cref="TraversalTransitionRegistry.TryGetResolvedEndpoints(string,out WorldVoxelIndex,out WorldVoxelI
 70    public bool TryGetResolvedEndpoints(
 71        string id,
 72        out WorldVoxelIndex sourceVoxelIndex,
 73        out WorldVoxelIndex destinationVoxelIndex)
 74    {
 175        using (EnterUsableState())
 76        {
 177            return TraversalTransitionRegistry.TryGetResolvedEndpoints(
 178                id,
 179                out sourceVoxelIndex,
 180                out destinationVoxelIndex);
 81        }
 182    }
 83
 84    /// <inheritdoc cref="TraversalTransitionRegistry.Unregister(string)"/>
 85    public bool Unregister(string id)
 86    {
 287        using (EnterUsableState())
 288            return TraversalTransitionRegistry.Unregister(id);
 289    }
 90
 91    /// <inheritdoc cref="TraversalTransitionRegistry.GetOutgoingTransitions(WorldVoxelIndex)"/>
 92    public TraversalTransition[] GetOutgoingTransitions(WorldVoxelIndex sourceVoxelIndex)
 93    {
 194        using (EnterUsableState())
 195            return TraversalTransitionRegistry.GetOutgoingTransitions(sourceVoxelIndex);
 196    }
 97
 98    /// <inheritdoc cref="TraversalTransitionRegistry.GetOutgoingTransitions(Vector3d)"/>
 99    public TraversalTransition[] GetOutgoingTransitions(Vector3d sourcePosition)
 100    {
 1101        using (EnterUsableState())
 1102            return TraversalTransitionRegistry.GetOutgoingTransitions(sourcePosition);
 1103    }
 104
 105    /// <inheritdoc cref="TraversalTransitionRegistry.GetIncomingTransitions(WorldVoxelIndex)"/>
 106    public TraversalTransition[] GetIncomingTransitions(WorldVoxelIndex destinationVoxelIndex)
 107    {
 1108        using (EnterUsableState())
 1109            return TraversalTransitionRegistry.GetIncomingTransitions(destinationVoxelIndex);
 1110    }
 111
 112    /// <inheritdoc cref="TraversalTransitionRegistry.GetIncomingTransitions(Vector3d)"/>
 113    public TraversalTransition[] GetIncomingTransitions(Vector3d destinationPosition)
 114    {
 1115        using (EnterUsableState())
 1116            return TraversalTransitionRegistry.GetIncomingTransitions(destinationPosition);
 1117    }
 118
 119    internal TraversalTransition[] GetDirectedTransitionsFromSourceGrid(int sourceGridIndex)
 120    {
 2121        using (EnterUsableState())
 2122            return TraversalTransitionQuery.GetDirectedTransitionsFromSourceGrid(sourceGridIndex);
 2123    }
 124
 125    internal TraversalTransition[] GetDirectedTransitions(
 126        TraversalMedium sourceMedium,
 127        TraversalMedium destinationMedium)
 128    {
 5129        using (EnterUsableState())
 5130            return TraversalTransitionQuery.GetDirectedTransitions(sourceMedium, destinationMedium);
 5131    }
 132
 133    internal TraversalTransition[] GetDirectedTransitionsToDestinationGrid(
 134        int destinationGridIndex,
 135        TraversalMedium sourceMedium,
 136        TraversalMedium destinationMedium)
 137    {
 31138        using (EnterUsableState())
 139        {
 31140            return TraversalTransitionQuery.GetDirectedTransitionsToDestinationGrid(
 31141                destinationGridIndex,
 31142                sourceMedium,
 31143                destinationMedium);
 144        }
 31145    }
 146
 147    private IDisposable EnterUsableState()
 148    {
 115149        EnsureUsable();
 113150        return PathManager.EnterState(_state);
 151    }
 152
 153    private void EnsureUsable()
 154    {
 115155        if (_context.IsDisposed)
 1156            throw new ObjectDisposedException(nameof(TrailblazerWorldContext));
 114157        if (!_context.World.IsActive)
 1158            throw new InvalidOperationException("TrailblazerTransitionService is bound to an inactive GridWorld.");
 113159    }
 160}