From 300fa9c8f67aa8c6b39bdebf4b8af1d0b8e494ec Mon Sep 17 00:00:00 2001 From: oplosthee Date: Wed, 24 Jan 2018 15:18:29 +0100 Subject: [PATCH] Incorporate height into the GroundItems overlay --- .../src/main/java/net/runelite/api/ItemLayer.java | 2 ++ .../main/java/net/runelite/api/TileObject.java | 2 ++ .../plugins/grounditems/GroundItemsOverlay.java | 2 +- .../java/net/runelite/mixins/TileObjectMixin.java | 15 +++++++++++---- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/ItemLayer.java b/runelite-api/src/main/java/net/runelite/api/ItemLayer.java index a521c1d492..21b275e2e1 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemLayer.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemLayer.java @@ -26,6 +26,8 @@ package net.runelite.api; public interface ItemLayer extends TileObject { + int getHeight(); + Renderable getBottom(); Renderable getMiddle(); diff --git a/runelite-api/src/main/java/net/runelite/api/TileObject.java b/runelite-api/src/main/java/net/runelite/api/TileObject.java index 4076bd1483..063dcef891 100644 --- a/runelite-api/src/main/java/net/runelite/api/TileObject.java +++ b/runelite-api/src/main/java/net/runelite/api/TileObject.java @@ -45,6 +45,8 @@ public interface TileObject Point getCanvasLocation(); + Point getCanvasLocation(int zOffset); + Polygon getCanvasTilePoly(); Point getCanvasTextLocation(Graphics2D graphics, String text, int zOffset); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java index eba45a4c2d..f687555877 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java @@ -228,7 +228,7 @@ public class GroundItemsOverlay extends Overlay for (int i = 0; i < itemIds.size(); ++i) { - Point point = itemLayer.getCanvasLocation(); + Point point = itemLayer.getCanvasLocation(itemLayer.getHeight()); // if the item is offscreen, don't bother drawing it if (point == null || (viewport != null && !viewport.contains(point))) { diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java index e0ec89dc1a..79dec96c8f 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java @@ -85,16 +85,23 @@ public abstract class TileObjectMixin implements TileObject @Inject public Point getRegionLocation() { - Point locaLocation = getLocalLocation(); - return new Point(locaLocation.getX() >>> LOCAL_COORD_BITS, locaLocation.getY() >>> LOCAL_COORD_BITS); + Point localLocation = getLocalLocation(); + return new Point(localLocation.getX() >>> LOCAL_COORD_BITS, localLocation.getY() >>> LOCAL_COORD_BITS); } @Override @Inject public Point getCanvasLocation() { - Point locaLocation = getLocalLocation(); - return Perspective.worldToCanvas(client, locaLocation.getX(), locaLocation.getY(), 0); + return getCanvasLocation(0); + } + + @Override + @Inject + public Point getCanvasLocation(int zOffset) + { + Point localLocation = getLocalLocation(); + return Perspective.worldToCanvas(client, localLocation.getX(), localLocation.getY(), 0, zOffset); } @Override