Minor power graph optimizations
This commit is contained in:
@@ -249,6 +249,8 @@ public class PowerGraph{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addGraph(PowerGraph graph){
|
public void addGraph(PowerGraph graph){
|
||||||
|
if(graph == this) return;
|
||||||
|
|
||||||
for(Building tile : graph.all){
|
for(Building tile : graph.all){
|
||||||
add(tile);
|
add(tile);
|
||||||
}
|
}
|
||||||
@@ -283,9 +285,8 @@ public class PowerGraph{
|
|||||||
Building child = queue.removeFirst();
|
Building child = queue.removeFirst();
|
||||||
add(child);
|
add(child);
|
||||||
for(Building next : child.getPowerConnections(outArray2)){
|
for(Building next : child.getPowerConnections(outArray2)){
|
||||||
if(!closedSet.contains(next.pos())){
|
if(closedSet.add(next.pos())){
|
||||||
queue.addLast(next);
|
queue.addLast(next);
|
||||||
closedSet.add(next.pos());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -293,9 +294,6 @@ public class PowerGraph{
|
|||||||
|
|
||||||
public void remove(Building tile){
|
public void remove(Building tile){
|
||||||
|
|
||||||
//begin by clearing the closed set
|
|
||||||
closedSet.clear();
|
|
||||||
|
|
||||||
//go through all the connections of this tile
|
//go through all the connections of this tile
|
||||||
for(Building other : tile.getPowerConnections(outArray1)){
|
for(Building other : tile.getPowerConnections(outArray1)){
|
||||||
//a graph has already been assigned to this tile from a previous call, skip it
|
//a graph has already been assigned to this tile from a previous call, skip it
|
||||||
@@ -316,9 +314,9 @@ public class PowerGraph{
|
|||||||
for(Building next : child.getPowerConnections(outArray2)){
|
for(Building next : child.getPowerConnections(outArray2)){
|
||||||
//make sure it hasn't looped back, and that the new graph being assigned hasn't already been assigned
|
//make sure it hasn't looped back, and that the new graph being assigned hasn't already been assigned
|
||||||
//also skip closed tiles
|
//also skip closed tiles
|
||||||
if(next != tile && next.power.graph != graph && !closedSet.contains(next.pos())){
|
if(next != tile && next.power.graph != graph){
|
||||||
|
graph.add(next);
|
||||||
queue.addLast(next);
|
queue.addLast(next);
|
||||||
closedSet.add(next.pos());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user