From 0672fa2ea01c80ad834b8f5766dc9c7dbbd5ed98 Mon Sep 17 00:00:00 2001 From: Gary Tierney Date: Fri, 30 Dec 2016 23:49:17 +0000 Subject: [PATCH] Fix bitwise negation in CollisionMatrix#clear() Adds the missing bitwise AND to the clear() method in CollisionMatrix, so any flags besides the one given are retained. --- .../game/model/area/collision/CollisionMatrix.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/game/src/main/org/apollo/game/model/area/collision/CollisionMatrix.java b/game/src/main/org/apollo/game/model/area/collision/CollisionMatrix.java index 23c058fe..d08a528b 100644 --- a/game/src/main/org/apollo/game/model/area/collision/CollisionMatrix.java +++ b/game/src/main/org/apollo/game/model/area/collision/CollisionMatrix.java @@ -104,6 +104,18 @@ public final class CollisionMatrix { return false; } + /** + * Completely blocks the tile at the specified coordinate pair, while optionally allowing projectiles + * to pass through. + * + * @param x The x coordinate. + * @param y The y coordinate. + * @param impenetrable If projectiles should be permitted to traverse this tile. + */ + public void block(int x, int y, boolean impenetrable) { + set(x, y, impenetrable ? ALL_BLOCKED : ALL_MOBS_BLOCKED); + } + /** * Completely blocks the tile at the specified coordinate pair. * @@ -123,7 +135,7 @@ public final class CollisionMatrix { * @param flag The CollisionFlag. */ public void clear(int x, int y, CollisionFlag flag) { - set(x, y, (byte) ~flag.asByte()); + set(x, y, (byte) (matrix[indexOf(x, y)] & ~flag.asByte())); } /**