public bool CanTransferTo(PackedVessel vsl, HangarPassage other, PassageNode requesting_node = null) { if (!enabled) { return(false); } if (this == other) { return(CanHold(vsl)); } var this_node = requesting_node?.OtherNode; bool can_transfer = false; foreach (var pn in Nodes.Values) { if (pn == this_node) { continue; } var other_passage = pn.CanPassThrough(vsl); if (other_passage != null) { can_transfer = other_passage.CanTransferTo(vsl, other, pn); } if (can_transfer) { break; } } return(can_transfer); }
public Part ConnectedPartWithModule <ModuleT>(PassageNode requesting_node = null) where ModuleT : PartModule { if (part.HasModule <ModuleT>()) { return(part); } var this_node = requesting_node?.OtherNode; foreach (var pn in Nodes.Values) { if (pn == this_node) { continue; } var other_passage = pn.OtherPassage; if (other_passage == null) { continue; } var p = other_passage.ConnectedPartWithModule <ModuleT>(pn); if (p != null) { return(p); } } return(null); }
public override void Load(ConfigNode node) { base.Load(node); Nodes.Clear(); foreach (ConfigNode n in node.GetNodes(PassageNode.NODE_NAME)) { var pn = new PassageNode(part); pn.Load(n); Nodes.Add(pn.NodeID, pn); } }
void init_nodes() { Nodes.Clear(); if (ModuleConfig == null) { this.Log("ModuleConfig is null. THIS SHOULD NEVER HAPPEN!"); return; } foreach (ConfigNode n in ModuleConfig.GetNodes(PassageNode.NODE_NAME)) { var pn = new PassageNode(part); pn.Load(n); Nodes.Add(pn.NodeID, pn); } }
public List <HangarPassage> ConnectedPassages(PassageNode requesting_node = null) { var this_node = requesting_node?.OtherNode; var C = new List <HangarPassage> { this }; foreach (var pn in Nodes.Values) { if (pn == this_node) { continue; } var other_passage = pn.OtherPassage; if (other_passage != null) { C.AddRange(other_passage.ConnectedPassages(pn)); } } return(C); }