From c1ba3f7d180186c4de4f8aa10119f2f8d9bb1f23 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Tue, 13 Apr 2010 00:34:04 +0000 Subject: [PATCH] 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 --- .../threerings/media/util/AStarPathUtil.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/java/com/threerings/media/util/AStarPathUtil.java b/src/java/com/threerings/media/util/AStarPathUtil.java index 516e0b3c..9ef277f3 100644 --- a/src/java/com/threerings/media/util/AStarPathUtil.java +++ b/src/java/com/threerings/media/util/AStarPathUtil.java @@ -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; }