diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java index e21485d937..1a0b697a68 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java @@ -39,6 +39,7 @@ import net.runelite.api.Actor; import net.runelite.api.Client; import net.runelite.api.DecorativeObject; import net.runelite.api.GameObject; +import net.runelite.api.GraphicsObject; import net.runelite.api.GroundObject; import net.runelite.api.Item; import net.runelite.api.ItemLayer; @@ -47,6 +48,7 @@ import net.runelite.api.NPCComposition; import net.runelite.api.Node; import net.runelite.api.Perspective; import net.runelite.api.Player; +import net.runelite.api.Point; import net.runelite.api.Projectile; import net.runelite.api.Region; import net.runelite.api.Tile; @@ -124,6 +126,11 @@ public class DevToolsOverlay extends Overlay renderProjectiles(graphics); } + if (plugin.isToggleGraphicsObjects()) + { + renderGraphicsObjects(graphics); + } + renderWidgets(graphics); return null; @@ -385,6 +392,30 @@ public class DevToolsOverlay extends Overlay } } + private void renderGraphicsObjects(Graphics2D graphics) + { + List graphicsObjects = client.getGraphicsObjects(); + + for (GraphicsObject graphicsObject : graphicsObjects) + { + LocalPoint lp = graphicsObject.getLocation(); + Polygon poly = Perspective.getCanvasTilePoly(client, lp); + + if (poly != null) + { + OverlayUtil.renderPolygon(graphics, poly, Color.MAGENTA); + } + + String infoString = "(ID: " + graphicsObject.getId() + ")"; + Point textLocation = Perspective.getCanvasTextLocation( + client, graphics, lp, infoString, 0); + if (textLocation != null) + { + OverlayUtil.renderTextLocation(graphics, textLocation, infoString, Color.WHITE); + } + } + } + public void renderWidgets(Graphics2D graphics) { Widget widget = plugin.currentWidget; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java index 3fefd6d3b5..e5f7c12705 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java @@ -196,6 +196,14 @@ public class DevToolsPanel extends PluginPanel }); container.add(lineOfSightBtn); + final JButton graphicsObjectsBtn = new JButton("Graphics objects"); + graphicsObjectsBtn.addActionListener(e -> + { + highlightButton(graphicsObjectsBtn); + plugin.toggleGraphicsObjects(); + }); + container.add(graphicsObjectsBtn); + return container; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java index 4e9ac7e6c4..cebeccac04 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java @@ -94,6 +94,7 @@ public class DevToolsPlugin extends Plugin private boolean toggleMapSquares; private boolean toggleValidMovement; private boolean toggleLineOfSight; + private boolean toggleGraphicsObjects; Widget currentWidget; int itemIndex = -1; @@ -301,6 +302,11 @@ public class DevToolsPlugin extends Plugin toggleLineOfSight = !toggleLineOfSight; } + void toggleGraphicsObjects() + { + toggleGraphicsObjects = !toggleGraphicsObjects; + } + boolean isTogglePlayers() { return togglePlayers; @@ -370,4 +376,9 @@ public class DevToolsPlugin extends Plugin { return toggleLineOfSight; } + + boolean isToggleGraphicsObjects() + { + return toggleGraphicsObjects; + } }