< Summary

Information
Class: Trailblazer.Pathing.NavigationTransitionInstruction
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/Guide/NavigationTransitionInstruction.cs
Line coverage
100%
Covered lines: 33
Uncovered lines: 0
Coverable lines: 33
Total lines: 112
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%
WithCompletionStamp(...)100%11100%
MatchesCompletion(...)100%44100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/Guide/NavigationTransitionInstruction.cs

#LineLine coverage
 1//=======================================================================
 2// NavigationTransitionInstruction.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 FixedMathSharp;
 9
 10namespace Trailblazer.Pathing;
 11
 12/// <summary>Describes one exact semantic action selected by a navigation guide.</summary>
 13public readonly struct NavigationTransitionInstruction
 14{
 15    internal NavigationTransitionInstruction(
 16        NavigationTransitionIdentityKind identityKind,
 17        string ownerMapId,
 18        string id,
 19        TraversalTransitionType type,
 20        NavigationCellAddress sourceAddress,
 21        NavigationCellAddress destinationAddress,
 22        TraversalMedium sourceMedium,
 23        TraversalMedium destinationMedium,
 24        Vector3d sourcePosition,
 25        Vector3d destinationPosition,
 26        TraversalTransitionLocomotionHints locomotionHints,
 27        object? completionOwner = null,
 28        ulong acquisitionGeneration = 0,
 29        long stepOrdinal = -1)
 30    {
 315131        IdentityKind = identityKind;
 315132        OwnerMapId = ownerMapId;
 315133        Id = id;
 315134        Type = type;
 315135        SourceAddress = sourceAddress;
 315136        DestinationAddress = destinationAddress;
 315137        SourceMedium = sourceMedium;
 315138        DestinationMedium = destinationMedium;
 315139        SourcePosition = sourcePosition;
 315140        DestinationPosition = destinationPosition;
 315141        LocomotionHints = locomotionHints;
 315142        CompletionOwner = completionOwner;
 315143        AcquisitionGeneration = acquisitionGeneration;
 315144        StepOrdinal = stepOrdinal;
 315145    }
 46
 47    /// <summary>Gets whether the stable ID belongs to a definition or a rule.</summary>
 48    public NavigationTransitionIdentityKind IdentityKind { get; }
 49
 50    /// <summary>Gets the explicit definition owner map ID, or an empty string for a rule.</summary>
 51    public string OwnerMapId { get; }
 52
 53    /// <summary>Gets the stable transition definition or rule ID.</summary>
 54    public string Id { get; }
 55
 56    /// <summary>Gets the authored semantic action type.</summary>
 57    public TraversalTransitionType Type { get; }
 58
 59    /// <summary>Gets the exact source-cell address.</summary>
 60    public NavigationCellAddress SourceAddress { get; }
 61
 62    /// <summary>Gets the exact destination-cell address.</summary>
 63    public NavigationCellAddress DestinationAddress { get; }
 64
 65    /// <summary>Gets the exact source medium.</summary>
 66    public TraversalMedium SourceMedium { get; }
 67
 68    /// <summary>Gets the exact destination medium.</summary>
 69    public TraversalMedium DestinationMedium { get; }
 70
 71    /// <summary>Gets the exact source action position.</summary>
 72    public Vector3d SourcePosition { get; }
 73
 74    /// <summary>Gets the exact destination action position.</summary>
 75    public Vector3d DestinationPosition { get; }
 76
 77    /// <summary>Gets the authored built-in locomotion hints.</summary>
 78    public TraversalTransitionLocomotionHints LocomotionHints { get; }
 79
 80    private ulong AcquisitionGeneration { get; }
 81
 82    private long StepOrdinal { get; }
 83
 84    private object? CompletionOwner { get; }
 85
 86    internal NavigationTransitionInstruction WithCompletionStamp(
 87        object completionOwner,
 88        ulong acquisitionGeneration,
 306989        long stepOrdinal) => new(
 306990        IdentityKind,
 306991        OwnerMapId,
 306992        Id,
 306993        Type,
 306994        SourceAddress,
 306995        DestinationAddress,
 306996        SourceMedium,
 306997        DestinationMedium,
 306998        SourcePosition,
 306999        DestinationPosition,
 3069100        LocomotionHints,
 3069101        completionOwner,
 3069102        acquisitionGeneration,
 3069103        stepOrdinal);
 104
 105    internal bool MatchesCompletion(
 106        object completionOwner,
 107        ulong acquisitionGeneration,
 108        long stepOrdinal) =>
 41109        ReferenceEquals(CompletionOwner, completionOwner)
 41110        && AcquisitionGeneration == acquisitionGeneration
 41111        && StepOrdinal == stepOrdinal;
 112}