< Summary

Information
Class: Trailblazer.Pathing.NavigationEndpointWorkspace
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/NavigationEndpointWorkspace.cs
Line coverage
100%
Covered lines: 31
Uncovered lines: 0
Coverable lines: 31
Total lines: 66
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%22100%
get_Pages()100%11100%
get_Components()100%11100%
get_PageCount()100%11100%
get_ComponentCount()100%11100%
Reset()100%11100%
ResetResolution()100%22100%
TryRecordComponent(...)100%11100%
TryRecordPage(...)100%11100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/NavigationEndpointWorkspace.cs

#LineLine coverage
 1//=======================================================================
 2// NavigationEndpointWorkspace.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2024-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using System;
 9using GridForge.Grids.Topology;
 10
 11namespace Trailblazer.Pathing;
 12
 13/// <summary>Owns reusable endpoint-resolution buffers and exact dependencies.</summary>
 14internal sealed class NavigationEndpointWorkspace
 15{
 1655416    internal NavigationEndpointWorkspace(
 1655417        int mapCapacity,
 1655418        int pageCapacity,
 1655419        int componentCapacity)
 20    {
 1655421        SwiftThrowHelper.ThrowIfNegative(mapCapacity, nameof(mapCapacity));
 1655422        SwiftThrowHelper.ThrowIfNegative(pageCapacity, nameof(pageCapacity));
 1655423        SwiftThrowHelper.ThrowIfNegative(componentCapacity, nameof(componentCapacity));
 1655424        CoveredAddressCursor = new GridCoveredAddressCursor(mapCapacity);
 1655425        CoveredAddressGenerations = mapCapacity == 0
 1655426            ? Array.Empty<GridCoveredAddressGeneration>()
 1655427            : new GridCoveredAddressGeneration[mapCapacity];
 1655428        CoveredAddressOutput = new GridCoveredAddress[1];
 1655429        Dependencies = new NavigationDependencyWorkspace(pageCapacity, componentCapacity);
 1655430    }
 31
 32    internal NavigationDependencyWorkspace Dependencies { get; }
 33    internal GridCoveredAddressCursor CoveredAddressCursor { get; }
 34    internal GridCoveredAddressGeneration[] CoveredAddressGenerations { get; }
 35    internal GridCoveredAddress[] CoveredAddressOutput { get; }
 190636    internal GraphPageDependencyAddress[] Pages => Dependencies.Pages;
 190737    internal NavigationSurfaceComponentKey[] Components => Dependencies.Components;
 38    internal int CoveredAddressGenerationCount { get; set; }
 276439    internal int PageCount => Dependencies.PageCount;
 275940    internal int ComponentCount => Dependencies.ComponentCount;
 41
 42    internal void Reset()
 43    {
 69244        ResetResolution();
 69245        Dependencies.Reset();
 69246    }
 47
 48    internal void ResetResolution()
 49    {
 202650        if (CoveredAddressGenerationCount > 0)
 51        {
 97852            Array.Clear(
 97853                CoveredAddressGenerations,
 97854                0,
 97855                CoveredAddressGenerationCount);
 56        }
 202657        CoveredAddressOutput[0] = default;
 202658        CoveredAddressGenerationCount = 0;
 202659    }
 60
 61    internal bool TryRecordComponent(NavigationSurfaceComponentKey component)
 828262        => Dependencies.TryRecordComponent(component);
 63
 64    internal bool TryRecordPage(string mapId, int pageIndex)
 931765        => Dependencies.TryRecordPage(mapId, pageIndex);
 66}