diff --git a/runelite-api/src/main/java/net/runelite/api/WallObject.java b/runelite-api/src/main/java/net/runelite/api/WallObject.java index ddc4a734cd..c9016b4289 100644 --- a/runelite-api/src/main/java/net/runelite/api/WallObject.java +++ b/runelite-api/src/main/java/net/runelite/api/WallObject.java @@ -24,6 +24,8 @@ */ package net.runelite.api; +import java.awt.Polygon; + /** * Represents one or two walls on a tile */ @@ -55,6 +57,15 @@ public interface WallObject extends TileObject */ int getConfig(); + /** + * Gets the convex hull of the objects model. + * + * @return the convex hull + * @see net.runelite.api.model.Jarvis + */ + Polygon getConvexHull(); + Polygon getConvexHull2(); + Renderable getRenderable1(); Renderable getRenderable2(); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java index f111a6f94f..509b3f5bde 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java @@ -32,6 +32,7 @@ import net.runelite.api.Client; import net.runelite.api.DecorativeObject; import net.runelite.api.GameObject; import net.runelite.api.TileObject; +import net.runelite.api.WallObject; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -72,6 +73,11 @@ class ObjectIndicatorsOverlay extends Overlay { polygon = ((GameObject) object).getConvexHull(); } + else if (object instanceof WallObject) + { + polygon = ((WallObject) object).getConvexHull(); + polygon2 = ((WallObject) object).getConvexHull2(); + } else if (object instanceof DecorativeObject) { polygon = ((DecorativeObject) object).getConvexHull(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java index e305c76ff3..c41e81c6c6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java @@ -51,6 +51,7 @@ import net.runelite.api.ObjectComposition; import net.runelite.api.Scene; import net.runelite.api.Tile; import net.runelite.api.TileObject; +import net.runelite.api.WallObject; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.FocusChanged; import net.runelite.api.events.GameObjectDespawned; @@ -60,6 +61,9 @@ import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.DecorativeObjectSpawned; import net.runelite.api.events.DecorativeObjectDespawned; +import net.runelite.api.events.WallObjectChanged; +import net.runelite.api.events.WallObjectDespawned; +import net.runelite.api.events.WallObjectSpawned; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.input.KeyListener; @@ -157,6 +161,28 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener } } + @Subscribe + public void onWallObjectSpawned(WallObjectSpawned event) + { + checkObjectPoints(event.getWallObject()); + } + + @Subscribe + public void onWallObjectChanged(WallObjectChanged event) + { + WallObject previous = event.getPrevious(); + WallObject wallObject = event.getWallObject(); + + objects.remove(previous); + checkObjectPoints(wallObject); + } + + @Subscribe + public void onWallObjectDespawned(WallObjectDespawned event) + { + objects.remove(event.getWallObject()); + } + @Subscribe public void onGameObjectSpawned(GameObjectSpawned event) { @@ -296,6 +322,12 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener final GameObject[] tileGameObjects = tile.getGameObjects(); final DecorativeObject tileDecorativeObject = tile.getDecorativeObject(); + final WallObject tileWallObject = tile.getWallObject(); + + if (tileWallObject != null && tileWallObject.getId() == id) + { + return tileWallObject; + } if (tileDecorativeObject != null && tileDecorativeObject.getId() == id) {