Class DirectedGraph<TNodeRef, TEdgeData>
- Namespace
- KSP.Sim
- Assembly
- Assembly-CSharp.dll
public abstract class DirectedGraph<TNodeRef, TEdgeData>
Type Parameters
TNodeRef
TEdgeData
- Inheritance
-
DirectedGraph<TNodeRef, TEdgeData>
- Derived
-
- Inherited Members
-
- Extension Methods
-
Constructors
DirectedGraph()
DirectedGraph(DirectedGraph<TNodeRef, TEdgeData>)
public DirectedGraph(DirectedGraph<TNodeRef, TEdgeData> other)
Parameters
other DirectedGraph<TNodeRef, TEdgeData>
Fields
EMPTY_DIRECTED_EDGES
protected static readonly IReadOnlyCollection<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> EMPTY_DIRECTED_EDGES
Field Value
- IReadOnlyCollection<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
EMPTY_NODE_EDGES
protected static readonly IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> EMPTY_NODE_EDGES
Field Value
- IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
_nodeEdgeStateMap
protected readonly Dictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.NodeEdgeState> _nodeEdgeStateMap
Field Value
- Dictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.NodeEdgeState>
_nodeEdges
protected readonly HashSet<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> _nodeEdges
Field Value
- HashSet<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
_nodes
protected readonly HashSet<TNodeRef> _nodes
Field Value
- HashSet<TNodeRef>
Properties
Edges
public ReadOnlySet<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> Edges { get; }
Property Value
- ReadOnlySet<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
HasChanged
public bool HasChanged { get; set; }
Property Value
- bool
this[TNodeRef]
public IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> this[TNodeRef from] { get; }
Parameters
from TNodeRef
Property Value
- IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
this[TNodeRef, TNodeRef]
public DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge this[TNodeRef from, TNodeRef to] { get; }
Parameters
from TNodeRef
to TNodeRef
Property Value
- DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge
Nodes
public ReadOnlySet<TNodeRef> Nodes { get; }
Property Value
- ReadOnlySet<TNodeRef>
Methods
AddNode(TNodeRef)
public void AddNode(TNodeRef nodeReference)
Parameters
nodeReference TNodeRef
ClearGraph()
GetEdge(TNodeRef, TNodeRef)
public DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge GetEdge(TNodeRef from, TNodeRef to)
Parameters
from TNodeRef
to TNodeRef
Returns
- DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge
GetEdges(TNodeRef)
public IReadOnlyCollection<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> GetEdges(TNodeRef nodeFrom)
Parameters
nodeFrom TNodeRef
Returns
- IReadOnlyCollection<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
GetInboundEdges(TNodeRef)
public IReadOnlyCollection<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> GetInboundEdges(TNodeRef nodeTo)
Parameters
nodeTo TNodeRef
Returns
- IReadOnlyCollection<DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
GetInboundNodeEdges(TNodeRef)
public IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> GetInboundNodeEdges(TNodeRef nodeTo)
Parameters
nodeTo TNodeRef
Returns
- IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
GetNodeEdgeEnumerator()
public IEnumerator<KeyValuePair<TNodeRef, IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>>> GetNodeEdgeEnumerator()
Returns
- IEnumerator<KeyValuePair<TNodeRef, IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>>>
GetNodeEdges(TNodeRef)
public IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge> GetNodeEdges(TNodeRef nodeFrom)
Parameters
nodeFrom TNodeRef
Returns
- IReadOnlyDictionary<TNodeRef, DirectedGraph<TNodeRef, TEdgeData>.DirectedEdge>
GetOrAllocateNodeState(TNodeRef)
protected DirectedGraph<TNodeRef, TEdgeData>.NodeEdgeState GetOrAllocateNodeState(TNodeRef nodeReference)
Parameters
nodeReference TNodeRef
Returns
- DirectedGraph<TNodeRef, TEdgeData>.NodeEdgeState
HasEdge(TNodeRef, TNodeRef)
public bool HasEdge(TNodeRef from, TNodeRef to)
Parameters
from TNodeRef
to TNodeRef
Returns
- bool
HasNode(TNodeRef)
public bool HasNode(TNodeRef node)
Parameters
node TNodeRef
Returns
- bool
NewNodeDictionary<TValue>()
protected static Dictionary<TNodeRef, TValue> NewNodeDictionary<TValue>()
Returns
- Dictionary<TNodeRef, TValue>
Type Parameters
TValue
NewNodeHashSet()
protected static HashSet<TNodeRef> NewNodeHashSet()
Returns
- HashSet<TNodeRef>
RemoveEdge(TNodeRef, TNodeRef)
public void RemoveEdge(TNodeRef fromNodeReference, TNodeRef toNodeReference)
Parameters
fromNodeReference TNodeRef
toNodeReference TNodeRef
RemoveNode(TNodeRef)
public void RemoveNode(TNodeRef nodeReference)
Parameters
nodeReference TNodeRef
SetEdge(TNodeRef, TNodeRef, TEdgeData, bool, bool)
public void SetEdge(TNodeRef fromNodeReference, TNodeRef toNodeReference, TEdgeData edgeData = default, bool skipValidation = false, bool addInboundEdges = true)
Parameters
fromNodeReference TNodeRef
toNodeReference TNodeRef
edgeData TEdgeData
skipValidation bool
addInboundEdges bool
TryGetEdgeData(TNodeRef, TNodeRef, out TEdgeData)
public bool TryGetEdgeData(TNodeRef from, TNodeRef to, out TEdgeData edgeData)
Parameters
from TNodeRef
to TNodeRef
edgeData TEdgeData
Returns
- bool
ValidateAllEdges()
protected bool ValidateAllEdges()
Returns
- bool
ValidateEdge(TNodeRef, TNodeRef, TEdgeData)
protected virtual bool ValidateEdge(TNodeRef fromNodeReference, TNodeRef toNodeReference, TEdgeData edgeData)
Parameters
fromNodeReference TNodeRef
toNodeReference TNodeRef
edgeData TEdgeData
Returns
- bool