From 047861d8cd3ae3c44015db47201123d42d192e2a Mon Sep 17 00:00:00 2001 From: dekvall Date: Tue, 1 Oct 2019 14:28:39 +0200 Subject: [PATCH] object indicators: add ability to mark wall objects --- .../ObjectIndicatorsOverlay.java | 6 ++++ .../ObjectIndicatorsPlugin.java | 32 +++++++++++++++++++ 2 files changed, 38 insertions(+) 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) {