Fixed #245 - Multimeter rendering twice

This commit is contained in:
Calclavia 2014-02-20 10:30:24 +08:00
parent 5db13056dd
commit aa86e9bf34
3 changed files with 24 additions and 27 deletions

View file

@ -54,7 +54,7 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
* If the screen is not a perfect rectangle, don't render.
*/
public boolean isEnabled = true;
public PartMultimeter primaryRenderer = null;
public PartMultimeter primaryMultimeter = null;
public MultimeterNetwork()
{
@ -65,6 +65,11 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
graphs.add(fluidGraph);
}
public boolean isPrimary(PartMultimeter check)
{
return primaryMultimeter == check;
}
@Override
public void addConnector(PartMultimeter connector)
{
@ -111,6 +116,7 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
{
if (getConnectors().size() > 0)
{
primaryMultimeter = null;
upperBound = null;
lowerBound = null;
super.reconstruct();
@ -146,6 +152,9 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
{
node.setNetwork(this);
if (primaryMultimeter == null)
primaryMultimeter = node;
if (upperBound == null)
{
upperBound = node.getPosition().translate(1);

View file

@ -83,12 +83,15 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
private DetectMode detectMode = DetectMode.NONE;
private long redstoneTriggerLimit;
// TODO: Move warn settings over.
public boolean redstoneOn;
private byte side;
private int ticks;
private MultimeterNetwork network;
boolean isPrimary;
public void preparePlacement(int side, int itemDamage)
{
this.side = (byte) (side);
@ -122,10 +125,6 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
getNetwork().reconstruct();
}
else
{
getNetwork().primaryRenderer = null;
}
}
}
@ -342,7 +341,11 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
public void writeGraph(MCDataOutput packet)
{
packet.writeByte(2);
packet.writeNBTTagCompound(getNetwork().save());
isPrimary = getNetwork().isPrimary(this);
packet.writeBoolean(isPrimary);
if (isPrimary)
packet.writeNBTTagCompound(getNetwork().save());
}
@Override
@ -368,7 +371,10 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
}
else if (packetID == 2)
{
getNetwork().load(packet.readNBTTagCompound());
isPrimary = packet.readBoolean();
if (isPrimary)
getNetwork().load(packet.readNBTTagCompound());
}
}
@ -607,28 +613,11 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
return new universalelectricity.api.vector.Vector3(x(), y(), z());
}
/**
* Only one multimeter renders the text.
*/
public boolean isPrimaryRendering()
{
if (getNetwork().primaryRenderer == null || !getNetwork().isValidConnector(getNetwork().primaryRenderer))
{
for (PartMultimeter m : getNetwork().getConnectors())
{
getNetwork().primaryRenderer = m;
break;
}
}
return getNetwork().primaryRenderer == this;
}
@Override
@SideOnly(Side.CLIENT)
public Cuboid6 getRenderBounds()
{
if (isPrimaryRendering())
if (isPrimary)
return Cuboid6.full.copy().expand(Double.POSITIVE_INFINITY);
return Cuboid6.full;

View file

@ -145,7 +145,7 @@ public class RenderMultimeter implements ISimpleItemRenderer
* Only one block renders this text.
* Render all the multimeter text
*/
if (part.getNetwork().isEnabled && part.isPrimaryRendering())
if (part.getNetwork().isEnabled && part.isPrimary)
{
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5);
@ -213,5 +213,4 @@ public class RenderMultimeter implements ISimpleItemRenderer
}
}
}