namespace Pathfinding.Util {
///
/// Represents a part of a path, with optional link information.
///
/// A path is divided up into parts, where each part is either a sequence of nodes or an off-mesh link.
/// If your agent never traverses off-mesh links, the path will always consist of only a single part which is a sequence of nodes.
///
public struct PathPartWithLinkInfo {
public PathPartWithLinkInfo(int startIndex, int endIndex, OffMeshLinks.OffMeshLinkTracer linkInfo = default) {
this.startIndex = startIndex;
this.endIndex = endIndex;
this.linkInfo = linkInfo;
}
///
/// Index of the first point in the path that this part represents.
///
/// For off-mesh links, this will refer to the last point in the part before the off-mesh link.
///
public int startIndex;
///
/// Index of the last point in the path that this part represents.
///
/// For off-mesh links, this will refer to the first point in the part after the off-mesh link.
///
public int endIndex;
/// The off-mesh link that this part represents. Will contain a null link if this part is not an off-mesh link
public OffMeshLinks.OffMeshLinkTracer linkInfo;
/// Specifies if this is a sequence of nodes, or an off-mesh link
public Funnel.PartType type => linkInfo.link != null ? Funnel.PartType.OffMeshLink : Funnel.PartType.NodeSequence;
}
}