redid BC wire model and renderer

Honestly i have to say this was done poorly but then again i think this
render is left over from when UE started. Also this will need to be
redone some more later to prevent issues were the client sees a
connection different then the server. A simple boolean array sent by
packet should solve this issue later on.
This commit is contained in:
DarkGuardsman 2013-08-26 14:54:24 -04:00
parent 842b0f69d5
commit b0493ec3ac
2 changed files with 48 additions and 108 deletions

View file

@ -2,7 +2,7 @@ package dark.client.models;
import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity; import net.minecraftforge.common.ForgeDirection;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -66,53 +66,37 @@ public class ModelCopperWire extends ModelBase
setRotation(Bottom, 0F, 0F, 0F); setRotation(Bottom, 0F, 0F, 0F);
} }
@Override public void renderSide(int i)
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{ {
super.render(entity, f, f1, f2, f3, f4, f5); this.renderSide(ForgeDirection.getOrientation(i));
this.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
this.renderMiddle();
this.renderBottom();
this.renderTop();
this.renderLeft();
this.renderRight();
this.renderBack();
this.renderFront();
} }
public void renderMiddle() public void renderSide(ForgeDirection side)
{ {
Middle.render(0.0625F); switch (side)
} {
case UP:
public void renderBottom() Top.render(0.0625F);
{ break;
Bottom.render(0.0625F); case DOWN:
} Bottom.render(0.0625F);
break;
public void renderTop() case NORTH:
{ Back.render(0.0625F);
Top.render(0.0625F); break;
} case SOUTH:
Front.render(0.0625F);
public void renderLeft() break;
{ case WEST:
Left.render(0.0625F); Left.render(0.0625F);
} break;
case EAST:
public void renderRight() Right.render(0.0625F);
{ break;
Right.render(0.0625F); default:
} Middle.render(0.0625F);
break;
public void renderBack() }
{
Back.render(0.0625F);
}
public void renderFront()
{
Front.render(0.0625F);
} }
private void setRotation(ModelRenderer model, float x, float y, float z) private void setRotation(ModelRenderer model, float x, float y, float z)
@ -121,10 +105,4 @@ public class ModelCopperWire extends ModelBase
model.rotateAngleY = y; model.rotateAngleY = y;
model.rotateAngleZ = z; model.rotateAngleZ = z;
} }
@Override
public void setRotationAngles(float x, float y, float z, float f3, float f4, float f5, Entity entity)
{
super.setRotationAngles(x, y, z, f3, f4, f5, entity);
}
} }

View file

@ -2,10 +2,6 @@ package dark.client.renders;
import ic2.api.energy.tile.IEnergyAcceptor; import ic2.api.energy.tile.IEnergyAcceptor;
import ic2.api.energy.tile.IEnergyTile; import ic2.api.energy.tile.IEnergyTile;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@ -32,7 +28,7 @@ public class RenderCopperWire extends TileEntitySpecialRenderer
public static final ModelCopperWire model = new ModelCopperWire(); public static final ModelCopperWire model = new ModelCopperWire();
public void renderModelAt(TileEntityWire tileEntity, double d, double d1, double d2, float f) public void renderModelAt(TileEntityWire wire, double d, double d1, double d2, float f)
{ {
// Texture file // Texture file
FMLClientHandler.instance().getClient().renderEngine.func_110577_a(copperWireTexture); FMLClientHandler.instance().getClient().renderEngine.func_110577_a(copperWireTexture);
@ -40,83 +36,49 @@ public class RenderCopperWire extends TileEntitySpecialRenderer
GL11.glTranslatef((float) d + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); GL11.glTranslatef((float) d + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F);
GL11.glScalef(1.0F, -1F, -1F); GL11.glScalef(1.0F, -1F, -1F);
List<TileEntity> adjecentConnections = new ArrayList<TileEntity>(); Boolean[] renderSide = new Boolean[6];
for (byte i = 0; i < 6; i++) for (byte i = 0; i < 6; i++)
{ {
ForgeDirection side = ForgeDirection.getOrientation(i); ForgeDirection dir = ForgeDirection.getOrientation(i);
TileEntity adjacentTile = VectorHelper.getTileEntityFromSide(tileEntity.worldObj, new Vector3(tileEntity), side); TileEntity ent = VectorHelper.getTileEntityFromSide(wire.worldObj, new Vector3(wire), dir);
if (adjacentTile instanceof IConnector) if (ent instanceof IConnector)
{ {
if (((IConnector) adjacentTile).canConnect(side.getOpposite())) if (((IConnector) ent).canConnect(dir.getOpposite()))
{ {
adjecentConnections.add(adjacentTile); renderSide[i] = true;
}
else
{
adjecentConnections.add(null);
} }
} }
else if (Compatibility.isIndustrialCraft2Loaded() && adjacentTile instanceof IEnergyTile) else if (Compatibility.isIndustrialCraft2Loaded() && ent instanceof IEnergyTile)
{ {
if (adjacentTile instanceof IEnergyAcceptor) if (ent instanceof IEnergyAcceptor)
{ {
if (((IEnergyAcceptor) adjacentTile).acceptsEnergyFrom(tileEntity, side.getOpposite())) if (((IEnergyAcceptor) ent).acceptsEnergyFrom(wire, dir.getOpposite()))
{ {
adjecentConnections.add(adjacentTile); renderSide[i] = true;
}
else
{
adjecentConnections.add(null);
} }
} }
else else
{ {
adjecentConnections.add(adjacentTile); renderSide[i] = true;
} }
} }
else if (Compatibility.isBuildcraftLoaded() && adjacentTile instanceof IPowerReceptor) else if (Compatibility.isBuildcraftLoaded() && ent instanceof IPowerReceptor)
{ {
adjecentConnections.add(adjacentTile); renderSide[i] = true;
}
else
{
adjecentConnections.add(null);
} }
} }
if (adjecentConnections.toArray()[0] != null)
{
model.renderBottom();
}
if (adjecentConnections.toArray()[1] != null) for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
{ {
model.renderTop(); if(renderSide[side.ordinal()])
{
model.renderSide(side);
}
} }
model.renderSide(ForgeDirection.UNKNOWN);
if (adjecentConnections.toArray()[2] != null)
{
model.renderBack();
}
if (adjecentConnections.toArray()[3] != null)
{
model.renderFront();
}
if (adjecentConnections.toArray()[4] != null)
{
model.renderLeft();
}
if (adjecentConnections.toArray()[5] != null)
{
model.renderRight();
}
model.renderMiddle();
GL11.glPopMatrix(); GL11.glPopMatrix();
} }