From 5de21946a29daeebed282052de009ddae4856e48 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Thu, 30 Jan 2014 22:54:35 +0800 Subject: [PATCH] Fixed multimeter item rendering --- .../core/render/RenderRIItem.java | 5 +- .../multimeter/RenderMultimeter.java | 55 +++++++++++++++++-- .../transformer/PartTransformer.java | 6 +- 3 files changed, 56 insertions(+), 10 deletions(-) diff --git a/src/main/java/resonantinduction/core/render/RenderRIItem.java b/src/main/java/resonantinduction/core/render/RenderRIItem.java index d093de03..73ea74b0 100644 --- a/src/main/java/resonantinduction/core/render/RenderRIItem.java +++ b/src/main/java/resonantinduction/core/render/RenderRIItem.java @@ -59,10 +59,7 @@ public class RenderRIItem implements IItemRenderer } else if (item.getItem() instanceof ItemMultimeter) { - GL11.glRotatef(180, 0, 1, 0); - GL11.glTranslated(0, -1, -0.7); - FMLClientHandler.instance().getClient().renderEngine.bindTexture(RenderMultimeter.TEXTURE); - RenderMultimeter.MODEL.render(0.0625f); + RenderMultimeter.INSTANCE.render(); } else if (item.getItem() instanceof ItemTransformer) { diff --git a/src/main/java/resonantinduction/electrical/multimeter/RenderMultimeter.java b/src/main/java/resonantinduction/electrical/multimeter/RenderMultimeter.java index 5a596a16..6ed23cfc 100644 --- a/src/main/java/resonantinduction/electrical/multimeter/RenderMultimeter.java +++ b/src/main/java/resonantinduction/electrical/multimeter/RenderMultimeter.java @@ -27,8 +27,54 @@ import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class RenderMultimeter { - public static final ModelMultimeter MODEL = new ModelMultimeter(); - public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "multimeter.png"); + public static final RenderMultimeter INSTANCE = new RenderMultimeter(); + private final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "multimeter.png"); + + public static void render() + { + GL11.glPushMatrix(); + GL11.glRotatef(90, 1, 0, 0); + RenderUtility.bind(TextureMap.locationBlocksTexture); + // Render the main panel + RenderUtility.renderCube(-0.5, -0.05, -0.5, 0.5, 0.05, 0.5, Archaic.blockMachinePart, ResonantInduction.loadedIconMap.get(Reference.PREFIX + "multimeter_screen")); + ForgeDirection dir = ForgeDirection.NORTH; + final int metadata = 8; + // Render edges + // UP + RenderUtility.renderCube(-0.501, -0.0501, -0.501, 0.501, 0.0501, -0.44, Archaic.blockMachinePart, null, metadata); + // DOWN + RenderUtility.renderCube(-0.501, -0.0501, 0.44, 0.501, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata); + // LEFT + for (int i = 2; i < 6; i++) + { + ForgeDirection check = ForgeDirection.getOrientation(i); + + if (dir.offsetX != 0 && check.offsetZ != 0) + { + if (dir.offsetX != check.offsetZ) + { + RenderUtility.renderCube(-0.501, -0.0501, -0.501, -0.44, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata); + } + else if (dir.offsetX == check.offsetZ) + { + RenderUtility.renderCube(0.44, -0.0501, -0.501, 0.501, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata); + } + } + if (dir.offsetZ != 0 && check.offsetX != 0) + { + if (dir.offsetZ == check.offsetX) + { + RenderUtility.renderCube(-0.501, -0.0501, -0.501, -0.44, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata); + } + else if (dir.offsetZ != check.offsetX) + { + RenderUtility.renderCube(0.44, -0.0501, -0.501, 0.501, 0.0501, 0.501, Archaic.blockMachinePart, null, metadata); + } + } + } + + GL11.glPopMatrix(); + } public static void render(PartMultimeter part, double x, double y, double z) { @@ -96,9 +142,9 @@ public class RenderMultimeter for (int i = 0; i < 1; i++) { - //TODO: Add other dispaly info support. + // TODO: Add other dispaly info support. String display = UnitDisplay.getDisplay(part.getNetwork().graph.get(0), Unit.JOULES); - + if (dir.offsetX == 0) RenderUtility.renderText(display, (float) (part.getNetwork().size.x * 0.9f), 0.5f); if (dir.offsetZ == 0) @@ -107,4 +153,5 @@ public class RenderMultimeter GL11.glPopMatrix(); } } + } \ No newline at end of file diff --git a/src/main/java/resonantinduction/electrical/transformer/PartTransformer.java b/src/main/java/resonantinduction/electrical/transformer/PartTransformer.java index 55cd9713..74a3d8a2 100644 --- a/src/main/java/resonantinduction/electrical/transformer/PartTransformer.java +++ b/src/main/java/resonantinduction/electrical/transformer/PartTransformer.java @@ -155,8 +155,9 @@ public class PartTransformer extends JCuboidPart implements JNormalOcclusion, TF public void load(NBTTagCompound nbt) { super.load(nbt); - this.placementSide = ForgeDirection.getOrientation(nbt.getByte("side")); - this.stepUp = nbt.getBoolean("stepUp"); + placementSide = ForgeDirection.getOrientation(nbt.getByte("side")); + stepUp = nbt.getBoolean("stepUp"); + multiplier = nbt.getByte("multiplier"); } @Override @@ -165,6 +166,7 @@ public class PartTransformer extends JCuboidPart implements JNormalOcclusion, TF super.save(nbt); nbt.setByte("side", (byte) this.placementSide.ordinal()); nbt.setBoolean("stepUp", this.stepUp); + nbt.setByte("multiplier", multiplier); } @Override