use of buildcraft.transport.PipeTransportPower in project BuildCraft by BuildCraft.
the class PipeTransportRendererPower method render.
@Override
public void render(Pipe<PipeTransportPower> pipe, double x, double y, double z, float f) {
PipeTransportPower pow = pipe.transport;
GL11.glPushMatrix();
GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
GlStateManager.disableLighting();
// GL11.glEnable(GL11.GL_BLEND);
GL11.glTranslatef((float) x, (float) y, (float) z);
Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
// Used for the centre rendering
double centerPower = 0;
double[] power = new double[6];
short[] flow = pow.displayFlow;
for (int i = 0; i < 6; i++) {
power[i] = pow.displayPowerAverage[i].getAverage();
double d = power[i];
if (d > centerPower) {
centerPower = d;
}
}
if (centerPower > 0) {
long ms = System.currentTimeMillis();
long diff = ms - pow.clientLastDisplayTime;
if (pow.clientLastDisplayTime == 0 || diff <= 0) {
diff = 1;
}
pow.clientLastDisplayTime = ms;
for (int i = 0; i < 6; i++) {
EnumFacing face = EnumFacing.values()[i];
if (!pipe.getTile().isPipeConnected(face)) {
continue;
}
double actualDiff = flow[i] * diff * FLOW_MULTIPLIER;
double connectionDiff = face.getAxisDirection() == AxisDirection.POSITIVE ? actualDiff : -actualDiff;
pow.clientDisplayFlow[i] += connectionDiff;
while (pow.clientDisplayFlow[i] < 0) {
pow.clientDisplayFlow[i] += 16;
}
while (pow.clientDisplayFlow[i] > 16) {
pow.clientDisplayFlow[i] -= 16;
}
pow.clientDisplayFlowCentre = pow.clientDisplayFlowCentre.add(Utils.convert(face, actualDiff / 2));
renderSidePower(face, power[i], pow.clientDisplayFlow[i], centerPower);
}
for (Axis axis : Axis.values()) {
double value = VecUtil.getValue(pow.clientDisplayFlowCentre, axis);
while (value < 0) {
value += 16;
}
while (value > 16) {
value -= 16;
}
pow.clientDisplayFlowCentre = VecUtil.replaceValue(pow.clientDisplayFlowCentre, axis, value);
}
renderCenterPower(centerPower, pow.clientDisplayFlowCentre);
}
GlStateManager.enableLighting();
GL11.glPopAttrib();
GL11.glPopMatrix();
}
use of buildcraft.transport.PipeTransportPower in project BuildCraft by BuildCraft.
the class PacketPowerUpdate method applyData.
@Override
public void applyData(World world, EntityPlayer player) {
if (!world.isBlockLoaded(pos)) {
return;
}
TileEntity entity = world.getTileEntity(pos);
if (!(entity instanceof TileGenericPipe)) {
return;
}
TileGenericPipe pipe = (TileGenericPipe) entity;
if (pipe.pipe == null) {
return;
}
if (!(pipe.pipe.transport instanceof PipeTransportPower)) {
return;
}
((PipeTransportPower) pipe.pipe.transport).handlePowerPacket(this);
}
Aggregations