From c9f5f93b52f42098845c7e6871bb984a1979dec6 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 7 Jun 2021 18:53:47 -0400 Subject: [PATCH] camera: add option to preserve yaw when world hopping --- .../client/plugins/camera/CameraConfig.java | 11 ++++++++++ .../client/plugins/camera/CameraPlugin.java | 22 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraConfig.java index 5f019c82ca..250cb8f247 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraConfig.java @@ -191,4 +191,15 @@ public interface CameraConfig extends Config { return false; } + + @ConfigItem( + keyName = "preserveYaw", + name = "Preserve yaw on world hop", + description = "Preserves the camera yaw (left/right) when world hopping.", + position = 14 + ) + default boolean preserveYaw() + { + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java index f650d3efba..b2ac448629 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/camera/CameraPlugin.java @@ -43,6 +43,7 @@ import net.runelite.api.VarPlayer; import net.runelite.api.events.BeforeRender; import net.runelite.api.events.ClientTick; import net.runelite.api.events.FocusChanged; +import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptPreFired; @@ -89,7 +90,8 @@ public class CameraPlugin extends Plugin implements KeyListener, MouseListener * Whether or not the current menu has any non-ignored menu entries */ private boolean menuHasEntries; - + private int savedCameraYaw; + @Inject private Client client; @@ -418,6 +420,24 @@ public class CameraPlugin extends Plugin implements KeyListener, MouseListener } } + @Subscribe + public void onGameStateChanged(GameStateChanged gameStateChanged) + { + switch (gameStateChanged.getGameState()) + { + case HOPPING: + savedCameraYaw = client.getMapAngle(); + break; + case LOGGED_IN: + if (savedCameraYaw != 0 && config.preserveYaw()) + { + client.setCameraYawTarget(savedCameraYaw); + } + savedCameraYaw = 0; + break; + } + } + /** * The event that is triggered when a mouse button is pressed * In this method the right click is changed to a middle-click to enable rotating the camera