From ad5514acdefe657b31326c2f6776c66884daf060 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 2 Oct 2019 21:10:57 -0400 Subject: [PATCH] object indicator: add support for ground objects --- .../ObjectIndicatorsOverlay.java | 5 ++++ .../ObjectIndicatorsPlugin.java | 27 +++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) 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 a61aa526dc..21d0a4692d 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 @@ -31,6 +31,7 @@ import javax.inject.Inject; import net.runelite.api.Client; import net.runelite.api.DecorativeObject; import net.runelite.api.GameObject; +import net.runelite.api.GroundObject; import net.runelite.api.TileObject; import net.runelite.api.WallObject; import net.runelite.client.ui.overlay.Overlay; @@ -83,6 +84,10 @@ class ObjectIndicatorsOverlay extends Overlay polygon = ((DecorativeObject) object).getConvexHull(); polygon2 = ((DecorativeObject) object).getConvexHull2(); } + else if (object instanceof GroundObject) + { + polygon = ((GroundObject) object).getConvexHull(); + } else { polygon = object.getCanvasTilePoly(); 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 c3739650f5..34386b52c4 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 @@ -47,6 +47,7 @@ import static net.runelite.api.Constants.REGION_SIZE; import net.runelite.api.DecorativeObject; import net.runelite.api.GameObject; import net.runelite.api.GameState; +import net.runelite.api.GroundObject; import net.runelite.api.MenuAction; import net.runelite.api.MenuEntry; import net.runelite.api.ObjectComposition; @@ -55,14 +56,16 @@ 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.DecorativeObjectDespawned; +import net.runelite.api.events.DecorativeObjectSpawned; import net.runelite.api.events.FocusChanged; import net.runelite.api.events.GameObjectDespawned; import net.runelite.api.events.GameObjectSpawned; import net.runelite.api.events.GameStateChanged; +import net.runelite.api.events.GroundObjectDespawned; +import net.runelite.api.events.GroundObjectSpawned; 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; @@ -212,6 +215,20 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener objects.remove(event.getDecorativeObject()); } + @Subscribe + public void onGroundObjectSpawned(GroundObjectSpawned groundObjectSpawned) + { + final GroundObject groundObject = groundObjectSpawned.getGroundObject(); + checkObjectPoints(groundObject); + } + + @Subscribe + public void onGroundObjectDespawned(GroundObjectDespawned groundObjectDespawned) + { + GroundObject groundObject = groundObjectDespawned.getGroundObject(); + objects.remove(groundObject); + } + @Subscribe public void onGameStateChanged(GameStateChanged gameStateChanged) { @@ -332,6 +349,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener final GameObject[] tileGameObjects = tile.getGameObjects(); final DecorativeObject tileDecorativeObject = tile.getDecorativeObject(); final WallObject tileWallObject = tile.getWallObject(); + final GroundObject groundObject = tile.getGroundObject(); if (objectIdEquals(tileWallObject, id)) { @@ -343,6 +361,11 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener return tileDecorativeObject; } + if (objectIdEquals(groundObject, id)) + { + return groundObject; + } + for (GameObject object : tileGameObjects) { if (objectIdEquals(object, id))