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. * If the screen is not a perfect rectangle, don't render.
*/ */
public boolean isEnabled = true; public boolean isEnabled = true;
public PartMultimeter primaryRenderer = null; public PartMultimeter primaryMultimeter = null;
public MultimeterNetwork() public MultimeterNetwork()
{ {
@ -65,6 +65,11 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
graphs.add(fluidGraph); graphs.add(fluidGraph);
} }
public boolean isPrimary(PartMultimeter check)
{
return primaryMultimeter == check;
}
@Override @Override
public void addConnector(PartMultimeter connector) public void addConnector(PartMultimeter connector)
{ {
@ -111,6 +116,7 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
{ {
if (getConnectors().size() > 0) if (getConnectors().size() > 0)
{ {
primaryMultimeter = null;
upperBound = null; upperBound = null;
lowerBound = null; lowerBound = null;
super.reconstruct(); super.reconstruct();
@ -146,6 +152,9 @@ public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter
{ {
node.setNetwork(this); node.setNetwork(this);
if (primaryMultimeter == null)
primaryMultimeter = node;
if (upperBound == null) if (upperBound == null)
{ {
upperBound = node.getPosition().translate(1); 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 DetectMode detectMode = DetectMode.NONE;
private long redstoneTriggerLimit; private long redstoneTriggerLimit;
// TODO: Move warn settings over.
public boolean redstoneOn; public boolean redstoneOn;
private byte side; private byte side;
private int ticks; private int ticks;
private MultimeterNetwork network; private MultimeterNetwork network;
boolean isPrimary;
public void preparePlacement(int side, int itemDamage) public void preparePlacement(int side, int itemDamage)
{ {
this.side = (byte) (side); this.side = (byte) (side);
@ -122,10 +125,6 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
getNetwork().reconstruct(); getNetwork().reconstruct();
} }
else
{
getNetwork().primaryRenderer = null;
}
} }
} }
@ -342,7 +341,11 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
public void writeGraph(MCDataOutput packet) public void writeGraph(MCDataOutput packet)
{ {
packet.writeByte(2); packet.writeByte(2);
packet.writeNBTTagCompound(getNetwork().save()); isPrimary = getNetwork().isPrimary(this);
packet.writeBoolean(isPrimary);
if (isPrimary)
packet.writeNBTTagCompound(getNetwork().save());
} }
@Override @Override
@ -368,7 +371,10 @@ public class PartMultimeter extends JCuboidPart implements IConnector<Multimeter
} }
else if (packetID == 2) 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()); 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 @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public Cuboid6 getRenderBounds() public Cuboid6 getRenderBounds()
{ {
if (isPrimaryRendering()) if (isPrimary)
return Cuboid6.full.copy().expand(Double.POSITIVE_INFINITY); return Cuboid6.full.copy().expand(Double.POSITIVE_INFINITY);
return Cuboid6.full; return Cuboid6.full;

View file

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