From 8f50ca4750bb7548885f3735ebce7eeb3334fa6d Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Sat, 23 Apr 2022 08:03:07 +0200 Subject: [PATCH] project(mixins): Misc GPU --- .../net/runelite/mixins/RSClientMixin.java | 31 ++----------------- .../runelite/mixins/RSGameEngineMixin.java | 12 ++++--- .../net/runelite/mixins/RSSceneMixin.java | 4 +++ 3 files changed, 14 insertions(+), 33 deletions(-) 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/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); }