< Summary

Information
Class: Trailblazer.Pathing.PathingWorldGridBridge
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/GridBridge/PathingWorldGridBridge.cs
Line coverage
92%
Covered lines: 36
Uncovered lines: 3
Coverable lines: 39
Total lines: 81
Line coverage: 92.3%
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%
GetDiagnosticsSnapshot()100%11100%
ResetDiagnostics()100%210%
FlushPendingGridChanges()100%11100%
HandleGridAdded(...)100%11100%
HandleGridRemoved(...)100%11100%
HandleGridChanged(...)100%11100%
HandleGridReset()100%11100%
Dispose()100%44100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/GridBridge/PathingWorldGridBridge.cs

#LineLine coverage
 1using GridForge.Grids;
 2using System;
 3
 4namespace Trailblazer.Pathing;
 5
 6/// <summary>
 7/// Subscribes one pathing state owner to one <see cref="GridWorld"/>'s grid lifecycle events.
 8/// </summary>
 9internal sealed class PathingWorldGridBridge : IDisposable
 10{
 11    private readonly PathingWorldState _state;
 12
 13    private bool _disposed;
 14
 96115    internal PathingWorldGridBridge(PathingWorldState state)
 16    {
 96117        _state = state;
 96118        GridWorld world = state.World;
 96119        world.OnActiveGridAdded += HandleGridAdded;
 96120        world.OnActiveGridRemoved += HandleGridRemoved;
 96121        world.OnActiveGridChange += HandleGridChanged;
 96122        world.OnReset += HandleGridReset;
 96123    }
 24
 25    internal ExternalGridBridgeDiagnosticsSnapshot GetDiagnosticsSnapshot()
 26    {
 227        using (PathManager.EnterState(_state))
 228            return PathManagerExternalGridBridge.GetDiagnosticsSnapshot();
 229    }
 30
 31    internal void ResetDiagnostics()
 32    {
 033        using (PathManager.EnterState(_state))
 034            PathManagerExternalGridBridge.ResetDiagnostics();
 035    }
 36
 37    internal void FlushPendingGridChanges()
 38    {
 230139        using (PathManager.EnterState(_state))
 230140            PathManagerExternalGridBridge.FlushPendingGridChanges();
 230141    }
 42
 43    private void HandleGridAdded(GridEventInfo eventInfo)
 44    {
 72145        using (PathManager.EnterState(_state))
 72146            PathManagerExternalGridBridge.HandleGridAdded(eventInfo);
 72147    }
 48
 49    private void HandleGridRemoved(GridEventInfo eventInfo)
 50    {
 651        using (PathManager.EnterState(_state))
 652            PathManagerExternalGridBridge.HandleGridRemoved(eventInfo);
 653    }
 54
 55    private void HandleGridChanged(GridEventInfo eventInfo)
 56    {
 127357        using (PathManager.EnterState(_state))
 127358            PathManagerExternalGridBridge.HandleGridChanged(eventInfo);
 127359    }
 60
 61    private void HandleGridReset()
 62    {
 363        PathManager.ResetPathingState(_state, resetScopedRegistries: true, flushGuideCache: true);
 364    }
 65
 66    public void Dispose()
 67    {
 192268        if (_disposed)
 96169            return;
 70
 96171        _disposed = true;
 96172        GridWorld world = _state.World;
 96173        if (!world.IsActive)
 274            return;
 75
 95976        world.OnActiveGridAdded -= HandleGridAdded;
 95977        world.OnActiveGridRemoved -= HandleGridRemoved;
 95978        world.OnActiveGridChange -= HandleGridChanged;
 95979        world.OnReset -= HandleGridReset;
 95980    }
 81}