| package li.cil.oc.client.renderer |
| |
| import li.cil.oc.util.{WirelessNetwork, RenderState} |
| import net.minecraft.client.Minecraft |
| import net.minecraftforge.client.event.RenderWorldLastEvent |
| import net.minecraftforge.event.ForgeSubscribe |
| import org.lwjgl.opengl.GL11 |
| |
| object WirelessNetworkDebugRenderer { |
| val colors = Array(0xFF0000, 0x00FFFF, 0x00FF00, 0x0000FF, 0xFF00FF, 0xFFFF00, 0xFFFFFF, 0x000000) |
| |
| @ForgeSubscribe |
| def onRenderWorldLastEvent(e: RenderWorldLastEvent) { |
| WirelessNetwork.dimensions.get(e.context.theWorld.provider.dimensionId) match { |
| case Some(tree) => |
| val mc = Minecraft.getMinecraft |
| val player = mc.thePlayer |
| val px = player.lastTickPosX + (player.posX - player.lastTickPosX) * e.partialTicks |
| val py = player.lastTickPosY + (player.posY - player.lastTickPosY) * e.partialTicks |
| val pz = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * e.partialTicks |
| |
| GL11.glPushAttrib(0xFFFFFFFF) |
| GL11.glPushMatrix() |
| GL11.glTranslated(-px, -py, -pz) |
| RenderState.makeItBlend() |
| GL11.glDisable(GL11.GL_LIGHTING) |
| GL11.glDisable(GL11.GL_TEXTURE_2D) |
| GL11.glDisable(GL11.GL_DEPTH_TEST) |
| GL11.glDisable(GL11.GL_CULL_FACE) |
| |
| def drawBox(minX: Double, minY: Double, minZ: Double, maxX: Double, maxY: Double, maxZ: Double) { |
| GL11.glBegin(GL11.GL_QUADS) |
| GL11.glVertex3d(minX, minY, minZ) |
| GL11.glVertex3d(minX, minY, maxZ) |
| GL11.glVertex3d(maxX, minY, maxZ) |
| GL11.glVertex3d(maxX, minY, minZ) |
| GL11.glEnd() |
| GL11.glBegin(GL11.GL_QUADS) |
| GL11.glVertex3d(minX, minY, minZ) |
| GL11.glVertex3d(maxX, minY, minZ) |
| GL11.glVertex3d(maxX, maxY, minZ) |
| GL11.glVertex3d(minX, maxY, minZ) |
| GL11.glEnd() |
| GL11.glBegin(GL11.GL_QUADS) |
| GL11.glVertex3d(maxX, maxY, minZ) |
| GL11.glVertex3d(maxX, maxY, maxZ) |
| GL11.glVertex3d(minX, maxY, maxZ) |
| GL11.glVertex3d(minX, maxY, minZ) |
| GL11.glEnd() |
| GL11.glBegin(GL11.GL_QUADS) |
| GL11.glVertex3d(maxX, maxY, maxZ) |
| GL11.glVertex3d(maxX, minY, maxZ) |
| GL11.glVertex3d(minX, minY, maxZ) |
| GL11.glVertex3d(minX, maxY, maxZ) |
| GL11.glEnd() |
| GL11.glBegin(GL11.GL_QUADS) |
| GL11.glVertex3d(minX, minY, minZ) |
| GL11.glVertex3d(minX, maxY, minZ) |
| GL11.glVertex3d(minX, maxY, maxZ) |
| GL11.glVertex3d(minX, minY, maxZ) |
| GL11.glEnd() |
| GL11.glBegin(GL11.GL_QUADS) |
| GL11.glVertex3d(maxX, minY, minZ) |
| GL11.glVertex3d(maxX, minY, maxZ) |
| GL11.glVertex3d(maxX, maxY, maxZ) |
| GL11.glVertex3d(maxX, maxY, minZ) |
| GL11.glEnd() |
| } |
| |
| GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_LINE) |
| for (((min, max), level) <- tree.allBounds) { |
| val (minX, minY, minZ) = min |
| val (maxX, maxY, maxZ) = max |
| val color = colors(level % colors.length) |
| GL11.glColor4f( |
| ((color >> 16) & 0xFF) / 255f, |
| ((color >> 8) & 0xFF) / 255f, |
| ((color >> 0) & 0xFF) / 255f, |
| 0.25f) |
| val size = 0.5 - level * 0.05 |
| drawBox(minX - size, minY - size, minZ - size, maxX + size, maxY + size, maxZ + size) |
| } |
| GL11.glPolygonMode(GL11.GL_FRONT_AND_BACK, GL11.GL_FILL) |
| |
| GL11.glPopMatrix() |
| GL11.glPopAttrib() |
| case _ => |
| } |
| } |
| |
| } |