From 07d3fe220b6e6397b739adb3be30f1951ba1c309 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 20 Feb 2022 16:37:01 +0100 Subject: [PATCH] api: add hidden state to renderable --- .../java/net/runelite/api/Renderable.java | 3 +++ .../net/runelite/mixins/EntityHiderMixin.java | 8 +++++++ .../runelite/mixins/RSRenderableMixin.java | 24 +++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSRenderableMixin.java diff --git a/runelite-api/src/main/java/net/runelite/api/Renderable.java b/runelite-api/src/main/java/net/runelite/api/Renderable.java index d8d2114a8d..bdbb448d6f 100644 --- a/runelite-api/src/main/java/net/runelite/api/Renderable.java +++ b/runelite-api/src/main/java/net/runelite/api/Renderable.java @@ -42,4 +42,7 @@ public interface Renderable extends Node void setModelHeight(int modelHeight); void draw(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash); + + void setHidden(boolean hidden); + boolean isHidden(); } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java index d7f78944b8..3a915d43ca 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java @@ -131,6 +131,14 @@ public abstract class EntityHiderMixin implements RSScene return true; } + if (entity instanceof RSRenderable) + { + if (((RSRenderable) entity).isHidden()) + { + return false; + } + } + if (entity instanceof RSPlayer) { RSPlayer player = (RSPlayer) entity; diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSRenderableMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSRenderableMixin.java new file mode 100644 index 0000000000..f72e846e96 --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSRenderableMixin.java @@ -0,0 +1,24 @@ +package net.runelite.mixins; + +import net.runelite.api.mixins.Inject; +import net.runelite.api.mixins.Mixin; +import net.runelite.rs.api.RSRenderable; + +@Mixin(RSRenderable.class) +public abstract class RSRenderableMixin implements RSRenderable +{ + @Inject + private boolean hidden = false; + + @Inject + public void setHidden(boolean hidden) + { + this.hidden = hidden; + } + + @Inject + public boolean isHidden() + { + return hidden; + } +}