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 Stepper ()
{
this(true);
}
public Stepper (boolean considerDiagonals)
{
_considerDiagonals = considerDiagonals;
}
public void init (Info info, Node n)
{
_info = info;
@@ -86,14 +96,16 @@ public class AStarPathUtil
*/
public void considerSteps (int x, int y)
{
considerStep(x - 1, y - 1, DIAGONAL_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 + 1, DIAGONAL_COST);
considerStep(x, y + 1, ADJACENT_COST);
considerStep(x + 1, y + 1, DIAGONAL_COST);
if (_considerDiagonals) {
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)
@@ -101,6 +113,7 @@ public class AStarPathUtil
AStarPathUtil.considerStep(_info, _node, x, y, cost);
}
protected boolean _considerDiagonals;
protected Info _info;
protected Node _node;
}