aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/mixins/transformers
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2022-12-29 03:32:04 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2022-12-29 03:32:04 +0100
commitf37ebdb61b397b0177bce68c7e8c5975813b1cde (patch)
tree0de7a369d01812c0b54712389a8dde12f8770d17 /src/main/java/at/hannibal2/skyhanni/mixins/transformers
parent7a13f06049af40ddaeec2559d24adb2d52b27485 (diff)
downloadSkyHanni-f37ebdb61b397b0177bce68c7e8c5975813b1cde.tar.gz
SkyHanni-f37ebdb61b397b0177bce68c7e8c5975813b1cde.tar.bz2
SkyHanni-f37ebdb61b397b0177bce68c7e8c5975813b1cde.zip
optimize CheckRenderEntityEvent and RenderItemTipEvent
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/mixins/transformers')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinRenderManager.java23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinRenderManager.java b/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinRenderManager.java
index e36b87195..1085f6c7f 100644
--- a/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinRenderManager.java
+++ b/src/main/java/at/hannibal2/skyhanni/mixins/transformers/MixinRenderManager.java
@@ -1,6 +1,6 @@
package at.hannibal2.skyhanni.mixins.transformers;
-import at.hannibal2.skyhanni.mixins.hooks.RenderManagerHookKt;
+import at.hannibal2.skyhanni.events.CheckRenderEntityEvent;
import net.minecraft.client.renderer.culling.ICamera;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
@@ -9,11 +9,28 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+import java.util.HashMap;
+import java.util.UUID;
+
@Mixin(RenderManager.class)
public class MixinRenderManager {
+ private final HashMap<UUID, Long> lastColorCacheTime = new HashMap<>();
+ private final HashMap<UUID, Boolean> cache = new HashMap<>();
+
@Inject(method = "shouldRender", at = @At("HEAD"), cancellable = true)
- private void shouldRender(Entity entityIn, ICamera camera, double camX, double camY, double camZ, CallbackInfoReturnable<Boolean> cir) {
- RenderManagerHookKt.shouldRender(entityIn, camera, camX, camY, camZ, cir);
+ private void shouldRender(Entity entity, ICamera camera, double camX, double camY, double camZ, CallbackInfoReturnable<Boolean> cir) {
+ UUID uuid = entity.getUniqueID();
+ boolean shouldRender;
+ if (lastColorCacheTime.getOrDefault(uuid, 0L) + 1_000 > System.currentTimeMillis()) {
+ shouldRender = cache.get(uuid);
+ } else {
+ shouldRender = !new CheckRenderEntityEvent<>(entity, camera, camX, camY, camZ).postAndCatch();
+
+ cache.put(uuid, shouldRender);
+ lastColorCacheTime.put(uuid, System.currentTimeMillis());
+ }
+
+ cir.setReturnValue(shouldRender);
}
}