Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I was debugging some pathfinding issues and noticed that FlxTilemap seems to always assume that diagonal movement is possible when it's calculating the distances during the A* / Dijkstra's algorithm step.
There was a parameter to modify this, but only to specify whether the diagonal was "wide" or not, ie, whether it would take an additional point to take the diagonal, or whether it was the same as an orthogonal step. There was no way I could see to disallow diagonals entirely.
So, this change swaps out the
WideDiagonal:Bool
forDiagonalPolicy:FlxTilemapDiagonalPolicy
, which is an abstract enum.Why an abstract enum and not a regular enum? Because the previous behavior is to set a default value of Wide Diagonals, and you can't assign an enum as a default parameter because it's technically not a constant and the compiler complains.
FlxTilemapDiagonalPolicy has three values -- NONE, NORMAL, and WIDE.
WIDE has the same behavior as previously setting the
WideDiagonal
value to true, and NORMAL has the same behavior as previously setting theWideDiagonal
value to false.NONE will make the calculator skip the
up && right
,down && left
, etc, steps, and only consider orthogonal movement.