From 028466e823b5f78b28d348cd6d992f5b836ffe83 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 8 Apr 2015 22:47:14 -0400 Subject: [PATCH] New diagonal movement option: only when obstacles present. --- src/core/DiagonalMovement.js | 3 ++- src/core/Grid.js | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/core/DiagonalMovement.js b/src/core/DiagonalMovement.js index 3cb3734c..5e9878cd 100644 --- a/src/core/DiagonalMovement.js +++ b/src/core/DiagonalMovement.js @@ -2,7 +2,8 @@ var DiagonalMovement = { Always: 1, Never: 2, IfAtMostOneObstacle: 3, - OnlyWhenNoObstacles: 4 + OnlyWhenNoObstacles: 4, + OnlyWhenObstacles: 5, }; module.exports = DiagonalMovement; \ No newline at end of file diff --git a/src/core/Grid.js b/src/core/Grid.js index 31ae6ee3..5d1d08f1 100644 --- a/src/core/Grid.js +++ b/src/core/Grid.js @@ -192,6 +192,11 @@ Grid.prototype.getNeighbors = function(node, diagonalMovement) { d1 = true; d2 = true; d3 = true; + } else if (diagonalMovement === DiagonalMovement.OnlyWhenObstacles) { + d0 = !(s3 || s0); + d1 = !(s0 || s1); + d2 = !(s1 || s2); + d3 = !(s2 || s3); } else { throw new Error('Incorrect value of diagonalMovement'); }