< Summary

Information
Class: Trailblazer.Pathing.NavigationFlowFieldLease
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/Flow/NavigationFlowFieldLease.cs
Line coverage
100%
Covered lines: 28
Uncovered lines: 0
Coverable lines: 28
Total lines: 80
Line coverage: 100%
Branch coverage
100%
Covered branches: 12
Total branches: 12
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_Status()100%22100%
get_OriginIntegrationCost()100%22100%
TrySample(...)100%22100%
TrySample(...)100%22100%
CompletePendingTransition(...)100%22100%
Dispose()100%22100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/Flow/NavigationFlowFieldLease.cs

#LineLine coverage
 1//=======================================================================
 2// NavigationFlowFieldLease.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 FixedMathSharp;
 10
 11namespace Trailblazer.Pathing;
 12
 13/// <summary>Owns one generation-validated graph flow field and its sampling cursor.</summary>
 14public readonly struct NavigationFlowFieldLease : IDisposable
 15{
 16    private readonly NavigationFlowFieldGuideLease? _inner;
 17    private readonly ulong _generation;
 18
 19    internal NavigationFlowFieldLease(NavigationFlowFieldGuideLease inner)
 20    {
 117921        _inner = inner;
 117922        _generation = inner.Generation;
 117923    }
 24
 25    /// <summary>Gets the lease's current dependency-validated status.</summary>
 26    public NavigationGuideStatus Status =>
 3527        _inner?.GetStatus(_generation) ?? NavigationGuideStatus.Stale;
 28
 29    /// <summary>Gets the immutable integration cost at the resolved origin.</summary>
 30    public Fixed64 OriginIntegrationCost =>
 531        _inner?.GetOriginIntegrationCost(_generation) ?? Fixed64.Zero;
 32
 33    /// <summary>Samples deterministic movement guidance or one pending semantic action.</summary>
 34    public NavigationGuideStatus TrySample(
 35        Vector3d actualFootPosition,
 36        GuideSampleWorkBudget budget,
 37        out NavigationFlowSample sample)
 38    {
 126439        NavigationFlowFieldGuideLease? inner = _inner;
 126440        if (inner == null)
 41        {
 142            sample = default;
 143            return NavigationGuideStatus.Stale;
 44        }
 126345        var meter = new GuideSampleWorkMeter(budget);
 126346        NavigationGuideStatus status = inner.TrySample(
 126347            _generation,
 126348            actualFootPosition,
 126349            ref meter,
 126350            out sample);
 126351        return status;
 52    }
 53
 54    internal NavigationGuideStatus TrySample(
 55        Vector3d actualFootPosition,
 56        ref GuideSampleWorkMeter meter,
 57        out NavigationFlowSample sample)
 58    {
 759        NavigationFlowFieldGuideLease? inner = _inner;
 760        if (inner == null)
 61        {
 162            sample = default;
 163            return NavigationGuideStatus.Stale;
 64        }
 665        return inner.TrySample(
 666            _generation,
 667            actualFootPosition,
 668            ref meter,
 669            out sample);
 70    }
 71
 72    /// <summary>Completes the exact current pending semantic action.</summary>
 73    public NavigationGuideStatus CompletePendingTransition(
 74        in NavigationTransitionInstruction instruction) =>
 1375        _inner?.CompletePendingTransition(_generation, instruction)
 1376            ?? NavigationGuideStatus.Stale;
 77
 78    /// <inheritdoc />
 118579    public void Dispose() => _inner?.Dispose(_generation);
 80}