Allow a Stepper to easily be created that doesn't consider diagonals.

git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@913 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
Ray Greenwell
2010-04-13 00:34:04 +00:00
parent 69d734863c
commit c1ba3f7d18
@@ -73,6 +73,16 @@ public class AStarPathUtil
*/ */
public static class Stepper public static class Stepper
{ {
public Stepper ()
{
this(true);
}
public Stepper (boolean considerDiagonals)
{
_considerDiagonals = considerDiagonals;
}
public void init (Info info, Node n) public void init (Info info, Node n)
{ {
_info = info; _info = info;
@@ -86,14 +96,16 @@ public class AStarPathUtil
*/ */
public void considerSteps (int x, int y) public void considerSteps (int x, int y)
{ {
considerStep(x - 1, y - 1, DIAGONAL_COST);
considerStep(x, y - 1, ADJACENT_COST); considerStep(x, y - 1, ADJACENT_COST);
considerStep(x + 1, y - 1, DIAGONAL_COST); considerStep(x, y + 1, ADJACENT_COST);
considerStep(x - 1, y, ADJACENT_COST); considerStep(x - 1, y, ADJACENT_COST);
considerStep(x + 1, y, ADJACENT_COST); considerStep(x + 1, y, ADJACENT_COST);
considerStep(x - 1, y + 1, DIAGONAL_COST); if (_considerDiagonals) {
considerStep(x, y + 1, ADJACENT_COST); considerStep(x - 1, y - 1, DIAGONAL_COST);
considerStep(x + 1, y + 1, DIAGONAL_COST); considerStep(x + 1, y - 1, DIAGONAL_COST);
considerStep(x - 1, y + 1, DIAGONAL_COST);
considerStep(x + 1, y + 1, DIAGONAL_COST);
}
} }
protected void considerStep (int x, int y, int cost) protected void considerStep (int x, int y, int cost)
@@ -101,6 +113,7 @@ public class AStarPathUtil
AStarPathUtil.considerStep(_info, _node, x, y, cost); AStarPathUtil.considerStep(_info, _node, x, y, cost);
} }
protected boolean _considerDiagonals;
protected Info _info; protected Info _info;
protected Node _node; protected Node _node;
} }