From 52ffd07bb3c3d67f79aeb8de2f7ef911878ec359 Mon Sep 17 00:00:00 2001 From: CovertJaguar Date: Wed, 1 May 2013 18:14:34 -0700 Subject: [PATCH] Some minor improvements to the Engine Renderer Note: it still needs to be rewritten to use a single texture sheet. --- .../energy/render/RenderEngine.java | 93 +++++++++---------- 1 file changed, 46 insertions(+), 47 deletions(-) diff --git a/common/buildcraft/energy/render/RenderEngine.java b/common/buildcraft/energy/render/RenderEngine.java index 4e965087..ff4bd0a2 100644 --- a/common/buildcraft/energy/render/RenderEngine.java +++ b/common/buildcraft/energy/render/RenderEngine.java @@ -1,12 +1,10 @@ /** - * Copyright (c) SpaceToad, 2011 - * http://www.mod-buildcraft.com + * Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com * - * BuildCraft is distributed under the terms of the Minecraft Mod Public - * License 1.0, or MMPL. Please check the contents of the license located in + * BuildCraft is distributed under the terms of the Minecraft Mod Public License + * 1.0, or MMPL. Please check the contents of the license located in * http://www.mod-buildcraft.com/MMPL-1.0.txt */ - package buildcraft.energy.render; import net.minecraft.client.model.ModelBase; @@ -25,17 +23,27 @@ import buildcraft.core.IInventoryRenderer; import buildcraft.energy.Engine; import buildcraft.energy.Engine.EnergyStage; import buildcraft.energy.IEngineProvider; +import static net.minecraftforge.common.ForgeDirection.*; public class RenderEngine extends TileEntitySpecialRenderer implements IInventoryRenderer { private ModelBase model = new ModelBase() { }; - private ModelRenderer box; private ModelRenderer trunk; private ModelRenderer movingBox; private ModelRenderer chamber; private String baseTexture; + private static final float[] angleMap = new float[6]; + + static { + angleMap[EAST.ordinal()] = (float) -Math.PI / 2; + angleMap[WEST.ordinal()] = (float) Math.PI / 2; + angleMap[UP.ordinal()] = 0; + angleMap[DOWN.ordinal()] = (float) Math.PI; + angleMap[SOUTH.ordinal()] = (float) Math.PI / 2; + angleMap[NORTH.ordinal()] = (float) -Math.PI / 2; + } public RenderEngine() { @@ -88,11 +96,16 @@ public class RenderEngine extends TileEntitySpecialRenderer implements IInventor private void render(EnergyStage energy, float progress, ForgeDirection orientation, String baseTexture, double x, double y, double z) { - if (BuildCraftCore.render == RenderMode.NoDynamic) + if (BuildCraftCore.render == RenderMode.NoDynamic) { return; + } GL11.glPushMatrix(); - GL11.glDisable(2896 /* GL_LIGHTING */); + GL11.glPushAttrib(GL11.GL_ENABLE_BIT); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glColor3f(1, 1, 1); GL11.glTranslatef((float) x, (float) y, (float) z); @@ -104,35 +117,21 @@ public class RenderEngine extends TileEntitySpecialRenderer implements IInventor step = progress * 2F * 7.99F; } - float[] angle = { 0, 0, 0 }; - float[] translate = { 0, 0, 0 }; float translatefact = step / 16; + float[] angle = {0, 0, 0}; + float[] translate = {orientation.offsetX, orientation.offsetY, orientation.offsetZ}; + switch (orientation) { - case EAST: - angle[2] = (float) -Math.PI / 2; - translate[0] = 1; - break; - case WEST: - angle[2] = (float) Math.PI / 2; - translate[0] = -1; - break; - case UP: - translate[1] = 1; - break; - case DOWN: - angle[2] = (float) Math.PI; - translate[1] = -1; - break; - case SOUTH: - angle[0] = (float) Math.PI / 2; - translate[2] = 1; - break; - case NORTH: - angle[0] = (float) -Math.PI / 2; - translate[2] = -1; - break; - default: + case EAST: + case WEST: + case DOWN: + angle[2] = angleMap[orientation.ordinal()]; + break; + case SOUTH: + case NORTH: + angle[0] = angleMap[orientation.ordinal()]; + break; } box.rotateAngleX = angle[0]; @@ -177,25 +176,25 @@ public class RenderEngine extends TileEntitySpecialRenderer implements IInventor String texture = ""; switch (energy) { - case Blue: - texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_blue.png"; - break; - case Green: - texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_green.png"; - break; - case Yellow: - texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_yellow.png"; - break; - default: - texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_red.png"; - break; + case Blue: + texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_blue.png"; + break; + case Green: + texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_green.png"; + break; + case Yellow: + texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_yellow.png"; + break; + default: + texture = DefaultProps.TEXTURE_PATH_BLOCKS + "/trunk_red.png"; + break; } bindTextureByName(texture); trunk.render(factor); - GL11.glEnable(2896 /* GL_LIGHTING */); + GL11.glPopAttrib(); GL11.glPopMatrix(); } }