diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index d1a1b4299a..b9650b047b 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -48,7 +48,6 @@ import net.runelite.api.FriendContainer; import net.runelite.api.GameState; import net.runelite.api.GrandExchangeOffer; import net.runelite.api.GraphicsObject; -import net.runelite.api.HashTable; import net.runelite.api.HintArrowType; import net.runelite.api.Ignore; import net.runelite.api.IndexDataBase; @@ -88,7 +87,6 @@ import net.runelite.api.StructComposition; import net.runelite.api.Tile; import net.runelite.api.VarPlayer; import net.runelite.api.Varbits; -import net.runelite.api.WidgetNode; import net.runelite.api.WorldType; import net.runelite.api.clan.ClanChannel; import net.runelite.api.clan.ClanRank; @@ -1934,21 +1932,14 @@ public abstract class RSClientMixin implements RSClient @Inject public static void preRenderWidgetLayer(Widget[] widgets, int parentId, int minX, int minY, int maxX, int maxY, int x, int y, int var8) { - @SuppressWarnings("unchecked") HashTable componentTable = client.getComponentTable(); - - for (int i = 0; i < widgets.length; i++) + for (Widget value : widgets) { - RSWidget widget = (RSWidget) widgets[i]; + RSWidget widget = (RSWidget) value; if (widget == null || widget.getRSParentId() != parentId || widget.isSelfHidden()) { continue; } - if (parentId != -1) - { - widget.setRenderParentId(parentId); - } - final int renderX = x + widget.getRelativeX(); final int renderY = y + widget.getRelativeY(); widget.setRenderX(renderX); @@ -1969,24 +1960,6 @@ public abstract class RSClientMixin implements RSClient widget.setHidden(true); hiddenWidgets.add(widget); } - else - { - WidgetNode childNode = componentTable.get(widget.getId()); - if (childNode != null) - { - int widgetId = widget.getId(); - int groupId = childNode.getId(); - RSWidget[] children = client.getWidgets()[groupId]; - - for (RSWidget child : children) - { - if (child.getRSParentId() == -1) - { - child.setRenderParentId(widgetId); - } - } - } - } } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameEngineMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameEngineMixin.java index 948cfd97c2..d26dc08696 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameEngineMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameEngineMixin.java @@ -80,15 +80,19 @@ public abstract class RSGameEngineMixin implements RSGameEngine client.getCallbacks().post(focusChanged); } - @Inject - @MethodHook("post") - public void onPost(Object canvas) + @Copy("post") + @Replace("post") + public void copy$post(Object canvas) { + if (!client.isGpu()) + { + copy$post(canvas); + } + DrawCallbacks drawCallbacks = client.getDrawCallbacks(); if (drawCallbacks != null) { drawCallbacks.draw(viewportColor); - viewportColor = 0; } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSNanoClockMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSNanoClockMixin.java index 809aac00f7..ab2f79c6f4 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSNanoClockMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSNanoClockMixin.java @@ -45,11 +45,7 @@ public abstract class RSNanoClockMixin implements RSNanoClock @Replace("wait") public int copy$wait(int cycleDurationMillis, int var2) { - if (!client.isUnlockedFps()) - { - return copy$wait(cycleDurationMillis, var2); - } - else + if (client.isUnlockedFps() && client.getRSGameState() >= 25) { long nanoTime = System.nanoTime(); @@ -108,5 +104,9 @@ public abstract class RSNanoClockMixin implements RSNanoClock return 1; } } + else + { + return copy$wait(cycleDurationMillis, var2); + } } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java index 46fe155ce6..da8e663105 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java @@ -78,6 +78,9 @@ public abstract class RSSceneMixin implements RSScene @Shadow("skyboxColor") static int skyboxColor; + @Shadow("viewportColor") + private static int viewportColor; + @Inject private static int[] tmpX = new int[6]; @@ -117,6 +120,7 @@ public abstract class RSSceneMixin implements RSScene final DrawCallbacks drawCallbacks = client.getDrawCallbacks(); if (drawCallbacks != null) { + viewportColor = 0; drawCallbacks.drawScene(cameraX, cameraY, cameraZ, cameraPitch, cameraYaw, plane); }