blob: 6d8c771462f71d327fd1503fce945e18e668fc70 [file] [log] [blame] [raw]
package li.cil.oc.client.renderer.tileentity
import li.cil.oc.Settings
import li.cil.oc.common.tileentity.Rack
import li.cil.oc.util.RenderState
import net.minecraft.client.renderer.Tessellator
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer
import net.minecraft.tileentity.TileEntity
import net.minecraft.util.ResourceLocation
import net.minecraftforge.common.ForgeDirection
import org.lwjgl.opengl.GL11
object RackRenderer extends TileEntitySpecialRenderer {
private val frontOn = new ResourceLocation(Settings.resourceDomain, "textures/blocks/rack_front_on.png")
override def renderTileEntityAt(tileEntity: TileEntity, x: Double, y: Double, z: Double, f: Float) = {
val rack = tileEntity.asInstanceOf[Rack]
if (rack.anyRunning) {
GL11.glPushAttrib(0xFFFFFF)
RenderState.disableLighting()
RenderState.makeItBlend()
GL11.glPushMatrix()
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5)
rack.yaw match {
case ForgeDirection.WEST => GL11.glRotatef(-90, 0, 1, 0)
case ForgeDirection.NORTH => GL11.glRotatef(180, 0, 1, 0)
case ForgeDirection.EAST => GL11.glRotatef(90, 0, 1, 0)
case _ => // No yaw.
}
GL11.glTranslatef(-0.5f, 0.5f, 0.501f)
GL11.glScalef(1, -1, 1)
bindTexture(frontOn)
val v1 = 2 / 16f
val fs = 3 / 16f
for (i <- 0 until 4 if rack.isRunning(i)) {
val l = v1 +i * fs
val h = v1 + (i + 1) * fs
val t = Tessellator.instance
t.startDrawingQuads()
t.addVertexWithUV(0, h, 0, 0, h)
t.addVertexWithUV(1, h, 0, 1, h)
t.addVertexWithUV(1, l, 0, 1, l)
t.addVertexWithUV(0, l, 0, 0, l)
t.draw()
}
GL11.glPopMatrix()
GL11.glPopAttrib()
}
}
}