Fix some rendering bugs
This commit is contained in:
parent
f2a3923c18
commit
bbbd5dea73
5 changed files with 66 additions and 10 deletions
|
@ -23,6 +23,7 @@ import mekanism.common.util.MekanismUtils.ResourceType;
|
||||||
import mekanism.common.util.TransporterUtils;
|
import mekanism.common.util.TransporterUtils;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.client.renderer.entity.RenderItem;
|
import net.minecraft.client.renderer.entity.RenderItem;
|
||||||
import net.minecraft.client.renderer.entity.RenderManager;
|
import net.minecraft.client.renderer.entity.RenderManager;
|
||||||
import net.minecraft.client.renderer.texture.IconRegister;
|
import net.minecraft.client.renderer.texture.IconRegister;
|
||||||
|
@ -42,13 +43,17 @@ import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import codechicken.lib.colour.Colour;
|
import codechicken.lib.colour.Colour;
|
||||||
import codechicken.lib.colour.ColourRGBA;
|
import codechicken.lib.colour.ColourRGBA;
|
||||||
|
import codechicken.lib.lighting.LazyLightMatrix;
|
||||||
|
import codechicken.lib.lighting.LightMatrix;
|
||||||
import codechicken.lib.lighting.LightModel;
|
import codechicken.lib.lighting.LightModel;
|
||||||
import codechicken.lib.render.CCModel;
|
import codechicken.lib.render.CCModel;
|
||||||
import codechicken.lib.render.CCRenderState;
|
import codechicken.lib.render.CCRenderState;
|
||||||
import codechicken.lib.render.ColourMultiplier;
|
import codechicken.lib.render.ColourMultiplier;
|
||||||
|
import codechicken.lib.render.IVertexModifier;
|
||||||
import codechicken.lib.render.IconTransformation;
|
import codechicken.lib.render.IconTransformation;
|
||||||
import codechicken.lib.render.TextureUtils;
|
import codechicken.lib.render.TextureUtils;
|
||||||
import codechicken.lib.render.TextureUtils.IIconRegister;
|
import codechicken.lib.render.TextureUtils.IIconRegister;
|
||||||
|
import codechicken.lib.render.UV;
|
||||||
import codechicken.lib.vec.Translation;
|
import codechicken.lib.vec.Translation;
|
||||||
import codechicken.lib.vec.Vector3;
|
import codechicken.lib.vec.Vector3;
|
||||||
|
|
||||||
|
@ -458,7 +463,7 @@ public class RenderPartTransmitter implements IIconRegister
|
||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderStatic(PartSidedPipe transmitter)
|
public void renderStatic(PartSidedPipe transmitter, LazyLightMatrix olm)
|
||||||
{
|
{
|
||||||
TextureUtils.bindAtlas(0);
|
TextureUtils.bindAtlas(0);
|
||||||
CCRenderState.reset();
|
CCRenderState.reset();
|
||||||
|
@ -467,11 +472,11 @@ public class RenderPartTransmitter implements IIconRegister
|
||||||
|
|
||||||
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
for(ForgeDirection side : ForgeDirection.VALID_DIRECTIONS)
|
||||||
{
|
{
|
||||||
renderSide(side, transmitter);
|
renderSide(side, transmitter, olm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderSide(ForgeDirection side, PartSidedPipe transmitter)
|
public void renderSide(ForgeDirection side, PartSidedPipe transmitter, LazyLightMatrix olm)
|
||||||
{
|
{
|
||||||
boolean connected = PartTransmitter.connectionMapContainsSide(transmitter.getAllCurrentConnections(), side);
|
boolean connected = PartTransmitter.connectionMapContainsSide(transmitter.getAllCurrentConnections(), side);
|
||||||
Icon renderIcon = transmitter.getIconForSide(side);
|
Icon renderIcon = transmitter.getIconForSide(side);
|
||||||
|
@ -483,7 +488,7 @@ public class RenderPartTransmitter implements IIconRegister
|
||||||
c = new ColourRGBA(transmitter.getRenderColor().getColor(0), transmitter.getRenderColor().getColor(1), transmitter.getRenderColor().getColor(2), 1);
|
c = new ColourRGBA(transmitter.getRenderColor().getColor(0), transmitter.getRenderColor().getColor(1), transmitter.getRenderColor().getColor(2), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderPart(renderIcon, transmitter.getModelForSide(side, false), transmitter.x(), transmitter.y(), transmitter.z(), c);
|
renderPart(renderIcon, transmitter.getModelForSide(side, false), transmitter.x(), transmitter.y(), transmitter.z(), c, olm);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderEnergySide(ForgeDirection side, PartUniversalCable cable)
|
public void renderEnergySide(ForgeDirection side, PartUniversalCable cable)
|
||||||
|
@ -498,9 +503,9 @@ public class RenderPartTransmitter implements IIconRegister
|
||||||
renderTransparency(tube.getTransmitterNetwork().refGas.getIcon(), tube.getModelForSide(side, true), new ColourRGBA(1.0, 1.0, 1.0, tube.currentScale));
|
renderTransparency(tube.getTransmitterNetwork().refGas.getIcon(), tube.getModelForSide(side, true), new ColourRGBA(1.0, 1.0, 1.0, tube.currentScale));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderPart(Icon icon, CCModel cc, double x, double y, double z, Colour color)
|
public void renderPart(Icon icon, CCModel cc, double x, double y, double z, Colour color, LazyLightMatrix olm)
|
||||||
{
|
{
|
||||||
cc.render(0, cc.verts.length, new Translation(x, y, z), new IconTransformation(icon), color != null ? new ColourMultiplier(color) : null);
|
cc.render(0, cc.verts.length, new Translation(x, y, z), new IconTransformation(icon), new TransmitterTransformation(color, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void renderTransparency(Icon icon, CCModel cc, Colour colour)
|
public void renderTransparency(Icon icon, CCModel cc, Colour colour)
|
||||||
|
@ -658,4 +663,43 @@ public class RenderPartTransmitter implements IIconRegister
|
||||||
|
|
||||||
return display;
|
return display;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class TransmitterTransformation implements IVertexModifier
|
||||||
|
{
|
||||||
|
public ColourMultiplier colour;
|
||||||
|
public LightMatrix lightMatrix;
|
||||||
|
|
||||||
|
public TransmitterTransformation(Colour color, LazyLightMatrix olm)
|
||||||
|
{
|
||||||
|
if(color != null)
|
||||||
|
{
|
||||||
|
colour = new ColourMultiplier(color);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(olm != null)
|
||||||
|
{
|
||||||
|
lightMatrix = olm.lightMatrix();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void applyModifiers(CCModel m, Tessellator tess, Vector3 vec, UV uv, Vector3 normal, int i)
|
||||||
|
{
|
||||||
|
if(colour != null)
|
||||||
|
{
|
||||||
|
colour.applyModifiers(m, tess, vec, uv, normal, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lightMatrix != null)
|
||||||
|
{
|
||||||
|
lightMatrix.applyModifiers(m, tess, vec, uv, normal, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean needsNormals()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,10 @@ public class PartLogisticalTransporter extends PartSidedPipe implements ILogisti
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void renderDynamic(Vector3 pos, float f, int pass)
|
public void renderDynamic(Vector3 pos, float f, int pass)
|
||||||
{
|
{
|
||||||
RenderPartTransmitter.getInstance().renderContents(this, f, pos);
|
if(pass == 1)
|
||||||
|
{
|
||||||
|
RenderPartTransmitter.getInstance().renderContents(this, f, pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -201,7 +201,10 @@ public class PartMechanicalPipe extends PartTransmitter<FluidNetwork> implements
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void renderDynamic(Vector3 pos, float f, int pass)
|
public void renderDynamic(Vector3 pos, float f, int pass)
|
||||||
{
|
{
|
||||||
RenderPartTransmitter.getInstance().renderContents(this, pos);
|
if(pass == 1)
|
||||||
|
{
|
||||||
|
RenderPartTransmitter.getInstance().renderContents(this, pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -207,7 +207,10 @@ public class PartPressurizedTube extends PartTransmitter<GasNetwork>
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void renderDynamic(Vector3 pos, float f, int pass)
|
public void renderDynamic(Vector3 pos, float f, int pass)
|
||||||
{
|
{
|
||||||
RenderPartTransmitter.getInstance().renderContents(this, pos);
|
if(pass == 1)
|
||||||
|
{
|
||||||
|
RenderPartTransmitter.getInstance().renderContents(this, pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -291,7 +291,10 @@ public abstract class PartSidedPipe extends TMultiPart implements TSlottedPart,
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void renderStatic(Vector3 pos, LazyLightMatrix olm, int pass)
|
public void renderStatic(Vector3 pos, LazyLightMatrix olm, int pass)
|
||||||
{
|
{
|
||||||
RenderPartTransmitter.getInstance().renderStatic(this);
|
if(pass == 1)
|
||||||
|
{
|
||||||
|
RenderPartTransmitter.getInstance().renderStatic(this, olm);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue