regular path finding is using a separate thread, #1873
This commit is contained in:
parent
ce0c26f31d
commit
1d642f052c
3 changed files with 12 additions and 12 deletions
|
@ -12,14 +12,15 @@ import java.util.LinkedList;
|
||||||
|
|
||||||
import buildcraft.core.BlockIndex;
|
import buildcraft.core.BlockIndex;
|
||||||
import buildcraft.core.utils.PathFinding;
|
import buildcraft.core.utils.PathFinding;
|
||||||
|
import buildcraft.core.utils.PathFindingJob;
|
||||||
import buildcraft.robots.EntityRobotBase;
|
import buildcraft.robots.EntityRobotBase;
|
||||||
|
|
||||||
public class AIRobotMoveToBlock extends AIRobotMove {
|
public class AIRobotMoveToBlock extends AIRobotMove {
|
||||||
|
|
||||||
private PathFinding pathSearch;
|
private PathFinding pathSearch;
|
||||||
|
private PathFindingJob pathSearchJob;
|
||||||
private LinkedList<BlockIndex> path;
|
private LinkedList<BlockIndex> path;
|
||||||
private double prevDistance = Double.MAX_VALUE;
|
private double prevDistance = Double.MAX_VALUE;
|
||||||
|
|
||||||
private float finalX, finalY, finalZ;
|
private float finalX, finalY, finalZ;
|
||||||
|
|
||||||
public AIRobotMoveToBlock(EntityRobotBase robot, int x, int y, int z) {
|
public AIRobotMoveToBlock(EntityRobotBase robot, int x, int y, int z) {
|
||||||
|
@ -46,6 +47,9 @@ public class AIRobotMoveToBlock extends AIRobotMove {
|
||||||
pathSearch = new PathFinding(robot.worldObj, new BlockIndex((int) Math.floor(robot.posX),
|
pathSearch = new PathFinding(robot.worldObj, new BlockIndex((int) Math.floor(robot.posX),
|
||||||
(int) Math.floor(robot.posY), (int) Math.floor(robot.posZ)), new BlockIndex(
|
(int) Math.floor(robot.posY), (int) Math.floor(robot.posZ)), new BlockIndex(
|
||||||
(int) Math.floor(finalX), (int) Math.floor(finalY), (int) Math.floor(finalZ)));
|
(int) Math.floor(finalX), (int) Math.floor(finalY), (int) Math.floor(finalZ)));
|
||||||
|
|
||||||
|
pathSearchJob = new PathFindingJob(pathSearch);
|
||||||
|
pathSearchJob.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,11 +68,11 @@ public class AIRobotMoveToBlock extends AIRobotMove {
|
||||||
prevDistance = robot.getDistance(nextX, nextY, nextZ);
|
prevDistance = robot.getDistance(nextX, nextY, nextZ);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pathSearch.iterate(PathFinding.PATH_ITERATIONS);
|
if (!pathSearchJob.isAlive()) {
|
||||||
|
if (pathSearch.isDone()) {
|
||||||
if (pathSearch.isDone()) {
|
path = pathSearch.getResult();
|
||||||
path = pathSearch.getResult();
|
setNextInPath();
|
||||||
setNextInPath();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,11 +52,7 @@ public class BoardRobotLumberjack extends RedstoneBoardRobot {
|
||||||
|
|
||||||
public static boolean isFreeWoodTarget(BlockIndex index) {
|
public static boolean isFreeWoodTarget(BlockIndex index) {
|
||||||
synchronized (woodTargets) {
|
synchronized (woodTargets) {
|
||||||
if (!woodTargets.contains(index)) {
|
return !woodTargets.contains(index);
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class PathFinding {
|
||||||
|
|
||||||
private LinkedList<BlockIndex> result;
|
private LinkedList<BlockIndex> result;
|
||||||
|
|
||||||
public boolean endReached = false;
|
private boolean endReached = false;
|
||||||
|
|
||||||
public PathFinding(World iWorld, BlockIndex iStart, BlockIndex iEnd) {
|
public PathFinding(World iWorld, BlockIndex iStart, BlockIndex iEnd) {
|
||||||
world = iWorld;
|
world = iWorld;
|
||||||
|
|
Loading…
Reference in a new issue