From 5ca854efa85e49758d63acd4d7a159324701d6a7 Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 15 May 2013 20:29:47 -0400 Subject: [PATCH] Add in a very simple stencil bit registry to try and arbitrate between mods wanting to use stencil bits in rendering --- .../client/MinecraftForgeClient.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/client/net/minecraftforge/client/MinecraftForgeClient.java b/client/net/minecraftforge/client/MinecraftForgeClient.java index d0d68b0e5..a74c48484 100644 --- a/client/net/minecraftforge/client/MinecraftForgeClient.java +++ b/client/net/minecraftforge/client/MinecraftForgeClient.java @@ -5,6 +5,8 @@ package net.minecraftforge.client; +import java.util.BitSet; + import org.lwjgl.opengl.Display; import net.minecraft.block.Block; @@ -61,4 +63,39 @@ public class MinecraftForgeClient { return ForgeHooksClient.stencilBits; } + + + private static BitSet stencilBits = new BitSet(getStencilBits()); + static + { + stencilBits.set(0,getStencilBits()); + } + + /** + * Reserve a stencil bit for use in rendering + * + * @return A bit or -1 if no further stencil bits are available + */ + public static int reserveStencilBit() + { + int bit = stencilBits.nextSetBit(0); + if (bit >= 0) + { + stencilBits.clear(bit); + } + return bit; + } + + /** + * Release the stencil bit for other use + * + * @param bit The bit from {@link #reserveStencilBit()} + */ + public static void releaseStencilBit(int bit) + { + if (bit >= 0 && bit < getStencilBits()) + { + stencilBits.set(bit); + } + } }