< Summary

Information
Class: Trailblazer.Pathing.NavigationResolvedPathQuery
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/AStar/NavigationResolvedPathQuery.cs
Line coverage
100%
Covered lines: 33
Uncovered lines: 0
Coverable lines: 33
Total lines: 89
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
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%
Bind(...)100%11100%
get_Graph()100%44100%
ReleaseLease()100%22100%
Dispose()100%11100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/AStar/NavigationResolvedPathQuery.cs

#LineLine coverage
 1//=======================================================================
 2// NavigationResolvedPathQuery.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;
 9
 10namespace Trailblazer.Pathing;
 11
 12/// <summary>Owns one resolved immutable query and its exact graph snapshot lease.</summary>
 13internal sealed class NavigationResolvedPathQuery : IDisposable
 14{
 15    private NavigationWorldGraphLease? _lease;
 16
 1651317    internal NavigationResolvedPathQuery()
 18    {
 1651319    }
 20
 21    internal void Bind(
 22        NavigationWorldGraphLease lease,
 23        PathQuery query,
 24        NavigationResolvedEndpoint start,
 25        NavigationResolvedEndpoint end,
 26        NavigationAreaPolicy areaPolicy,
 27        TraversalMedium startMedium,
 28        TraversalMedia targetMedia,
 29        NavigationWorkMeter meter,
 30        ulong worldChangeSequence,
 31        bool requiresWorldStamp)
 32    {
 132833        SwiftThrowHelper.ThrowIfNull(lease, nameof(lease));
 132834        SwiftThrowHelper.ThrowIfNull(areaPolicy, nameof(areaPolicy));
 132835        SwiftThrowHelper.ThrowIfNull(meter, nameof(meter));
 132836        _lease = lease;
 132837        Query = query;
 132838        Start = start;
 132839        End = end;
 132840        AreaPolicy = areaPolicy;
 132841        StartMedium = startMedium;
 132842        TargetMedia = targetMedia;
 132843        Meter = meter;
 132844        WorldChangeSequence = worldChangeSequence;
 132845        RequiresWorldStamp = requiresWorldStamp;
 132846    }
 47
 218748    internal NavigationWorldGraph Graph => _lease?.Graph
 218749        ?? throw new ObjectDisposedException(nameof(NavigationResolvedPathQuery));
 50
 51    internal PathQuery Query { get; private set; }
 52
 53    internal NavigationResolvedEndpoint Start { get; private set; }
 54
 55    internal NavigationResolvedEndpoint End { get; private set; }
 56
 57    internal NavigationAreaPolicy AreaPolicy { get; private set; } = null!;
 58
 59    internal TraversalMedium StartMedium { get; private set; }
 60
 61    internal TraversalMedia TargetMedia { get; private set; }
 62
 63    internal NavigationWorkMeter Meter { get; private set; } = null!;
 64
 65    internal ulong WorldChangeSequence { get; private set; }
 66
 67    internal bool RequiresWorldStamp { get; private set; }
 68
 69    internal void ReleaseLease()
 70    {
 229971        NavigationWorldGraphLease? lease = _lease;
 229972        _lease = null;
 229973        lease?.Dispose();
 132774    }
 75
 76    public void Dispose()
 77    {
 132778        ReleaseLease();
 132779        Query = default;
 132780        Start = default;
 132781        End = default;
 132782        AreaPolicy = null!;
 132783        StartMedium = default;
 132784        TargetMedia = default;
 132785        Meter = null!;
 132786        WorldChangeSequence = 0;
 132787        RequiresWorldStamp = false;
 132788    }
 89}