diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 0ad7453d0b..769f69fa26 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -1374,4 +1374,11 @@ public interface Client extends GameEngine * @return the types for current world */ EnumSet getWorldType(); + + /** + * Sets the enabled state for the Oculus orb state + * + * @param state boolean enabled value + */ + void setOculusOrbState(int state); } 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 6c6a0c098a..cb5100a7ff 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 @@ -224,6 +224,14 @@ public class DevToolsPanel extends PluginPanel }); container.add(tileLocationBtn); + final JButton oculusOrbBtn = new JButton("Detached camera"); + oculusOrbBtn.addActionListener(e -> + { + highlightButton(oculusOrbBtn); + client.setOculusOrbState(oculusOrbBtn.getBackground().equals(Color.GREEN) ? 1 : 0); + }); + container.add(oculusOrbBtn); + return container; } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index 07b0ed716d..c73c8c16dd 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -627,4 +627,8 @@ public interface RSClient extends RSGameEngine, Client @Import("widgetSpriteCache") RSNodeCache getWidgetSpriteCache(); + + @Import("oculusOrbState") + @Override + void setOculusOrbState(int state); }