From 99a603549a7b12c25776a80c7d4fd5c55adff9a6 Mon Sep 17 00:00:00 2001 From: "Aidan C. Brady" Date: Mon, 4 Nov 2013 15:39:49 -0500 Subject: [PATCH] BioGenerator fancy biofuel render :D --- .../tileentity/RenderUniversalCable.java | 7 +- .../client/render/RenderBioGenerator.java | 131 +++++++++++------- .../common/block/BlockGenerator.java | 8 +- 3 files changed, 93 insertions(+), 53 deletions(-) diff --git a/common/mekanism/client/render/tileentity/RenderUniversalCable.java b/common/mekanism/client/render/tileentity/RenderUniversalCable.java index af3e10ca4..28835ecf0 100644 --- a/common/mekanism/client/render/tileentity/RenderUniversalCable.java +++ b/common/mekanism/client/render/tileentity/RenderUniversalCable.java @@ -74,7 +74,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer push(); MekanismRenderer.glowOn(); - GL11.glColor4f(1.F, 1.F, 1.F, tileEntity.getEnergyScale()); + GL11.glColor4f(1F, 1F, 1F, tileEntity.getEnergyScale()); bindTexture(MekanismUtils.getResource(ResourceType.TEXTURE_ITEMS, "LiquidEnergy.png")); GL11.glTranslatef((float)x, (float)y, (float)z); @@ -218,6 +218,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer energyArray[side.ordinal()] = toReturn; } + return energyArray; } @@ -226,9 +227,11 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer DisplayInteger newDisplayList; Model3D toRender = energy[side.ordinal()]; + if(side == ForgeDirection.UNKNOWN) { newDisplayList = centerDisplayLists.get(new BooleanArray(connectable)); + if(newDisplayList != null) { return newDisplayList; @@ -248,6 +251,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer } else { newDisplayList = sideDisplayLists.get(side); + if(newDisplayList != null) { return newDisplayList; @@ -260,6 +264,7 @@ public class RenderUniversalCable extends TileEntitySpecialRenderer newDisplayList.endList(); sideDisplayLists.put(side, newDisplayList); } + return newDisplayList; } } diff --git a/common/mekanism/generators/client/render/RenderBioGenerator.java b/common/mekanism/generators/client/render/RenderBioGenerator.java index 02703a210..9982bbf37 100644 --- a/common/mekanism/generators/client/render/RenderBioGenerator.java +++ b/common/mekanism/generators/client/render/RenderBioGenerator.java @@ -1,5 +1,8 @@ package mekanism.generators.client.render; +import java.util.HashMap; +import java.util.Map; + import mekanism.client.render.MekanismRenderer; import mekanism.client.render.MekanismRenderer.DisplayInteger; import mekanism.client.render.MekanismRenderer.Model3D; @@ -23,8 +26,12 @@ public class RenderBioGenerator extends TileEntitySpecialRenderer { private ModelBioGenerator model = new ModelBioGenerator(); + private Map energyDisplays = new HashMap(); + private static Icon renderIcon = MekanismRenderer.getTextureMap(1).registerIcon("mekanism:LiquidEnergy"); + private static final int stages = 40; + @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTick) { @@ -45,70 +52,98 @@ public class RenderBioGenerator extends TileEntitySpecialRenderer case 5: GL11.glRotatef(270, 0.0F, 1.0F, 0.0F); break; } - GL11.glRotatef(180, 0f, 0f, 1f); + GL11.glRotatef(180, 0F, 0F, 1F); model.render(0.0625F); GL11.glPopMatrix(); + + if(tileEntity.bioFuelSlot.fluidStored > 0) + { + push(); + + MekanismRenderer.glowOn(); + GL11.glTranslatef((float)x, (float)y, (float)z); + bindTexture(MekanismUtils.getResource(ResourceType.TEXTURE_ITEMS, "LiquidEnergy.png")); + getDisplayList(ForgeDirection.getOrientation(tileEntity.facing))[tileEntity.getScaledFuelLevel(stages-1)].render(); + MekanismRenderer.glowOff(); + + pop(); + } } - /* @SuppressWarnings("incomplete-switch") - private DisplayInteger getDisplayList(TileEntityBioGenerator tileEntity) + private DisplayInteger[] getDisplayList(ForgeDirection side) { + if(energyDisplays.containsKey(side)) + { + return energyDisplays.get(side); + } + + DisplayInteger[] displays = new DisplayInteger[stages]; + Model3D model3D = new Model3D(); model3D.baseBlock = Block.waterStill; model3D.setTexture(renderIcon); - switch(ForgeDirection.getOrientation(tileEntity.facing)) + for(int i = 0; i < stages; i++) { - case NORTH: + displays[i] = DisplayInteger.createAndStart(); + + switch(side) { - model3D.minZ = -.01; - model3D.maxZ = 0; - - model3D.minX = 0; - model3D.minY = .0625; - model3D.maxX = 1; - model3D.maxY = 1; - break; - } - case SOUTH: - { - model3D.minZ = 1; - model3D.maxZ = 1.01; - - model3D.minX = 0; - model3D.minY = .0625; - model3D.maxX = 1; - model3D.maxY = 1; - break; - } - case WEST: - { - model3D.minX = -.01; - model3D.maxX = 0; - - model3D.minY = .0625; - model3D.minZ = 0; - model3D.maxY = 1; - model3D.maxZ = 1; - break; - } - case EAST: - { - model3D.minX = 1; - model3D.maxX = 1.01; - - model3D.minY = .0625; - model3D.minZ = 0; - model3D.maxY = 1; - model3D.maxZ = 1; - break; + case NORTH: + { + model3D.minZ = 0.1875; + model3D.maxZ = 0.4375; + + model3D.minX = 0.375; + model3D.maxX = 0.625; + model3D.minY = 0.125; + model3D.maxY = 0.125 + ((float)i/stages)*.34375; + break; + } + case SOUTH: + { + model3D.minZ = 0.5625; + model3D.maxZ = 0.8125; + + model3D.minX = 0.375; + model3D.maxX = 0.625; + model3D.minY = 0.125; + model3D.maxY = 0.125 + ((float)i/stages)*.34375; + break; + } + case WEST: + { + model3D.minX = 0.1875; + model3D.maxX = 0.4375; + + model3D.minZ = 0.375; + model3D.maxZ = 0.625; + model3D.minY = 0.125; + model3D.maxY = 0.125 + ((float)i/stages)*.34375; + break; + } + case EAST: + { + model3D.minX = 0.5625; + model3D.maxX = 0.8125; + + model3D.minZ = 0.375; + model3D.maxZ = 0.625; + model3D.minY = 0.125; + model3D.maxY = 0.125 + ((float)i/stages)*.34375; + break; + } } + + MekanismRenderer.renderObject(model3D); + DisplayInteger.endList(); } - MekanismRenderer.renderObject(model3D); + energyDisplays.put(side, displays); + + return displays; } - */ private void pop() { diff --git a/common/mekanism/generators/common/block/BlockGenerator.java b/common/mekanism/generators/common/block/BlockGenerator.java index deae56104..e20ac9d3c 100644 --- a/common/mekanism/generators/common/block/BlockGenerator.java +++ b/common/mekanism/generators/common/block/BlockGenerator.java @@ -192,7 +192,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds world.spawnParticle("flame", (double)(xRandom + iRandom), (double)yRandom, (double)(zRandom - jRandom), 0.0D, 0.0D, 0.0D); break; case BIO_GENERATOR: - world.spawnParticle("smoke", x+.8, y+1, z+.8, 0.0D, 0.0D, 0.0D); + world.spawnParticle("smoke", x+.25, y+.2, z+.5, 0.0D, 0.0D, 0.0D); break; default: break; @@ -207,7 +207,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds world.spawnParticle("flame", (double)(xRandom - iRandom), (double)yRandom, (double)(zRandom - jRandom), 0.0D, 0.0D, 0.0D); break; case BIO_GENERATOR: - world.spawnParticle("smoke", x+.2, y+1, z+.2, 0.0D, 0.0D, 0.0D); + world.spawnParticle("smoke", x+.75, y+.2, z+.5, 0.0D, 0.0D, 0.0D); break; default: break; @@ -222,7 +222,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds world.spawnParticle("flame", (double)(xRandom - jRandom), (double)yRandom, (double)(zRandom + iRandom), 0.0D, 0.0D, 0.0D); break; case BIO_GENERATOR: - world.spawnParticle("smoke", x+.2, y+1, z+.8, 0.0D, 0.0D, 0.0D); + world.spawnParticle("smoke", x+.5, y+.2, z+.25, 0.0D, 0.0D, 0.0D); break; default: break; @@ -237,7 +237,7 @@ public class BlockGenerator extends BlockContainer implements ISpecialBounds world.spawnParticle("flame", (double)(xRandom - jRandom), (double)yRandom, (double)(zRandom - iRandom), 0.0D, 0.0D, 0.0D); break; case BIO_GENERATOR: - world.spawnParticle("smoke", x+.8, y+1, z+.2, 0.0D, 0.0D, 0.0D); + world.spawnParticle("smoke", x+.5, y+.2, z+.75, 0.0D, 0.0D, 0.0D); break; default: break;