From 2152922874974ebfebbd82cf61a015e45672e80e Mon Sep 17 00:00:00 2001 From: Matthew Steglinski Date: Tue, 15 May 2018 13:40:29 -0400 Subject: [PATCH] devtools: Add camera position overlay --- .../plugins/devtools/CameraOverlay.java | 98 +++++++++++++++++++ .../plugins/devtools/DevToolsPanel.java | 8 ++ .../plugins/devtools/DevToolsPlugin.java | 16 ++- 3 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/devtools/CameraOverlay.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/CameraOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/CameraOverlay.java new file mode 100644 index 0000000000..8a17cbb64e --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/CameraOverlay.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2018, Matthew Steglinski + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.devtools; + +import java.awt.Dimension; +import java.awt.Graphics2D; +import javax.inject.Inject; +import net.runelite.api.Client; +import net.runelite.client.ui.overlay.Overlay; +import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; +import net.runelite.client.ui.overlay.components.PanelComponent; +import net.runelite.client.ui.overlay.components.TitleComponent; + +public class CameraOverlay extends Overlay +{ + private final Client client; + private final DevToolsPlugin plugin; + private final PanelComponent panelComponent = new PanelComponent(); + + @Inject + CameraOverlay(Client client, DevToolsPlugin plugin) + { + this.client = client; + this.plugin = plugin; + panelComponent.setPreferredSize(new Dimension(150, 0)); + setPosition(OverlayPosition.TOP_LEFT); + } + + @Override + public Dimension render(Graphics2D graphics) + { + if (!plugin.isToggleCamera()) + { + return null; + } + + panelComponent.getChildren().clear(); + + panelComponent.getChildren().add(TitleComponent.builder() + .text("Camera") + .build()); + + panelComponent.getChildren().add(LineComponent.builder() + .left("X") + .right("" + client.getCameraX()) + .build()); + + panelComponent.getChildren().add(LineComponent.builder() + .left("Y") + .right("" + client.getCameraY()) + .build()); + + panelComponent.getChildren().add(LineComponent.builder() + .left("Z") + .right("" + client.getCameraZ()) + .build()); + + panelComponent.getChildren().add(LineComponent.builder() + .left("Pitch") + .right("" + client.getCameraPitch()) + .build()); + + panelComponent.getChildren().add(LineComponent.builder() + .left("Yaw") + .right("" + client.getCameraYaw()) + .build()); + + panelComponent.getChildren().add(LineComponent.builder() + .left("Scale") + .right("" + client.getScale()) + .build()); + + return panelComponent.render(graphics); + } +} 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 f830814827..e025c6f10f 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 @@ -200,6 +200,14 @@ public class DevToolsPanel extends PluginPanel }); container.add(graphicsObjectsBtn); + final JButton cameraPositionBtn = new JButton("Camera Position"); + cameraPositionBtn.addActionListener(e -> + { + highlightButton(cameraPositionBtn); + plugin.toggleCamera(); + }); + container.add(cameraPositionBtn); + 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 5316d7bd4a..2ddb521b1a 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 @@ -77,6 +77,9 @@ public class DevToolsPlugin extends Plugin @Inject private SceneOverlay sceneOverlay; + @Inject + private CameraOverlay cameraOverlay; + @Inject private EventBus eventBus; @@ -95,6 +98,7 @@ public class DevToolsPlugin extends Plugin private boolean toggleValidMovement; private boolean toggleLineOfSight; private boolean toggleGraphicsObjects; + private boolean toggleCamera; Widget currentWidget; int itemIndex = -1; @@ -141,7 +145,7 @@ public class DevToolsPlugin extends Plugin @Override public Collection getOverlays() { - return Arrays.asList(overlay, locationOverlay, sceneOverlay); + return Arrays.asList(overlay, locationOverlay, sceneOverlay, cameraOverlay); } @Subscribe @@ -308,6 +312,11 @@ public class DevToolsPlugin extends Plugin toggleGraphicsObjects = !toggleGraphicsObjects; } + void toggleCamera() + { + toggleCamera = !toggleCamera; + } + boolean isTogglePlayers() { return togglePlayers; @@ -382,4 +391,9 @@ public class DevToolsPlugin extends Plugin { return toggleGraphicsObjects; } + + boolean isToggleCamera() + { + return toggleCamera; + } }