project(mixins): Misc GPU

This commit is contained in:
Owain van Brakel
2022-04-23 08:03:07 +02:00
parent 7016516340
commit 8f50ca4750
3 changed files with 14 additions and 33 deletions

View File

@@ -48,7 +48,6 @@ import net.runelite.api.FriendContainer;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.GrandExchangeOffer; import net.runelite.api.GrandExchangeOffer;
import net.runelite.api.GraphicsObject; import net.runelite.api.GraphicsObject;
import net.runelite.api.HashTable;
import net.runelite.api.HintArrowType; import net.runelite.api.HintArrowType;
import net.runelite.api.Ignore; import net.runelite.api.Ignore;
import net.runelite.api.IndexDataBase; import net.runelite.api.IndexDataBase;
@@ -88,7 +87,6 @@ import net.runelite.api.StructComposition;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.VarPlayer; import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.WidgetNode;
import net.runelite.api.WorldType; import net.runelite.api.WorldType;
import net.runelite.api.clan.ClanChannel; import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanRank; import net.runelite.api.clan.ClanRank;
@@ -1934,21 +1932,14 @@ public abstract class RSClientMixin implements RSClient
@Inject @Inject
public static void preRenderWidgetLayer(Widget[] widgets, int parentId, int minX, int minY, int maxX, int maxY, int x, int y, int var8) 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<WidgetNode> componentTable = client.getComponentTable(); for (Widget value : widgets)
for (int i = 0; i < widgets.length; i++)
{ {
RSWidget widget = (RSWidget) widgets[i]; RSWidget widget = (RSWidget) value;
if (widget == null || widget.getRSParentId() != parentId || widget.isSelfHidden()) if (widget == null || widget.getRSParentId() != parentId || widget.isSelfHidden())
{ {
continue; continue;
} }
if (parentId != -1)
{
widget.setRenderParentId(parentId);
}
final int renderX = x + widget.getRelativeX(); final int renderX = x + widget.getRelativeX();
final int renderY = y + widget.getRelativeY(); final int renderY = y + widget.getRelativeY();
widget.setRenderX(renderX); widget.setRenderX(renderX);
@@ -1969,24 +1960,6 @@ public abstract class RSClientMixin implements RSClient
widget.setHidden(true); widget.setHidden(true);
hiddenWidgets.add(widget); 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);
}
}
}
}
} }
} }

View File

@@ -80,15 +80,19 @@ public abstract class RSGameEngineMixin implements RSGameEngine
client.getCallbacks().post(focusChanged); client.getCallbacks().post(focusChanged);
} }
@Inject @Copy("post")
@MethodHook("post") @Replace("post")
public void onPost(Object canvas) public void copy$post(Object canvas)
{ {
if (!client.isGpu())
{
copy$post(canvas);
}
DrawCallbacks drawCallbacks = client.getDrawCallbacks(); DrawCallbacks drawCallbacks = client.getDrawCallbacks();
if (drawCallbacks != null) if (drawCallbacks != null)
{ {
drawCallbacks.draw(viewportColor); drawCallbacks.draw(viewportColor);
viewportColor = 0;
} }
} }

View File

@@ -78,6 +78,9 @@ public abstract class RSSceneMixin implements RSScene
@Shadow("skyboxColor") @Shadow("skyboxColor")
static int skyboxColor; static int skyboxColor;
@Shadow("viewportColor")
private static int viewportColor;
@Inject @Inject
private static int[] tmpX = new int[6]; private static int[] tmpX = new int[6];
@@ -117,6 +120,7 @@ public abstract class RSSceneMixin implements RSScene
final DrawCallbacks drawCallbacks = client.getDrawCallbacks(); final DrawCallbacks drawCallbacks = client.getDrawCallbacks();
if (drawCallbacks != null) if (drawCallbacks != null)
{ {
viewportColor = 0;
drawCallbacks.drawScene(cameraX, cameraY, cameraZ, cameraPitch, cameraYaw, plane); drawCallbacks.drawScene(cameraX, cameraY, cameraZ, cameraPitch, cameraYaw, plane);
} }