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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user