public void NodeEnteredRange(WaterNetworkNode otherNode) { // If other node is part of a network, join that network if we need one if(Network == null && otherNode.Network != null) { otherNode.Network.AddNode(this, true); } }
// Adds the node and all of its neighbors to the given network protected void AddNodeToNetwork(WaterNetwork network, WaterNetworkNode node, HashSet<WaterNetworkNode> closedSet) { if(!closedSet.Contains(node)) { network.AddNode(node, false); closedSet.Add(node); foreach(WaterNetworkNode neighbor in node.GetNeighbors()) { AddNodeToNetwork(network, neighbor, closedSet); } } }
// Removes a node from this network and optionally rebuilds the network // Currently, this is never called. The only ways to be removed from a network are to rebuild it or be destroyed. public void RemoveNode(WaterNetworkNode node, bool rebuildNetwork) { if(node is WaterNetworkSource) { Sources.Remove((WaterNetworkSource)node); } Nodes.Remove(node); node.Network = null; node.transform.parent = this.transform.parent; //hierarchy not really needed, but useful for development if(Nodes.Count == 0) { Destroy(this.gameObject); } else if(rebuildNetwork) { RebuildWaterNetwork(); } }
// Adds a node to this network and optionally rebuilds the network public void AddNode(WaterNetworkNode node, bool rebuildNetwork) { if(node.Network != null) { node.Network.RemoveNode(node, false); } if(node is WaterNetworkSource && !Sources.Contains((WaterNetworkSource)node)) { Sources.Add((WaterNetworkSource)node); } if(!Nodes.Contains(node)) { Nodes.Add(node); } node.Network = this; node.transform.parent = this.transform; //hierarchy not really needed, but useful for development if(rebuildNetwork) { RebuildWaterNetwork(); } }
public void NodeLeftRange(WaterNetworkNode otherNode) { //nothing here yet }