From 339709bed9e28270778f795fbc79f1dc3e885daf Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Sun, 17 Aug 2014 03:58:06 -0500 Subject: [PATCH] Performance Change for Facade Lighting Calculations. --- facade/FacadePart.java | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/facade/FacadePart.java b/facade/FacadePart.java index d6a00f4f..b18083cf 100644 --- a/facade/FacadePart.java +++ b/facade/FacadePart.java @@ -19,11 +19,13 @@ import net.minecraftforge.common.util.ForgeDirection; import org.lwjgl.opengl.GL11; import appeng.api.AEApi; +import appeng.api.parts.IBoxProvider; import appeng.api.parts.IFacadeContainer; import appeng.api.parts.IFacadePart; import appeng.api.parts.IPartCollsionHelper; import appeng.api.parts.IPartHost; import appeng.api.parts.IPartRenderHelper; +import appeng.api.parts.ISimplifiedBundle; import appeng.client.render.BusRenderHelper; import appeng.client.render.RenderBlocksWorkaround; import appeng.core.AELog; @@ -34,13 +36,16 @@ import appeng.util.Platform; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class FacadePart implements IFacadePart +public class FacadePart implements IFacadePart, IBoxProvider { public final ItemStack facade; public final ForgeDirection side; public int thickness = 2; + @SideOnly(Side.CLIENT) + ISimplifiedBundle prevLight; + public FacadePart(ItemStack facade, ForgeDirection side) { if ( facade == null ) throw new RuntimeException( "Facade Part constructed on null item." ); @@ -70,6 +75,13 @@ public class FacadePart implements IFacadePart } } + @Override + public void getBoxes(IPartCollsionHelper bch) + { + getBoxes( bch, null ); + + } + public static boolean isFacade(ItemStack is) { if ( is.getItem() instanceof IFacadeItem ) @@ -183,9 +195,15 @@ public class FacadePart implements IFacadePart rbw.calculations = true; rbw.faces = EnumSet.noneOf( ForgeDirection.class ); - instance.setRenderColor( color ); - rbw.renderStandardBlock( instance.getBlock(), x, y, z ); - instance.setRenderColor( 0xffffff ); + if ( prevLight != null && rbw.similarLighting( blk, rbw.blockAccess, x, y, z, prevLight ) ) + rbw.populate( prevLight ); + else + { + instance.setRenderColor( color ); + rbw.renderStandardBlock( instance.getBlock(), x, y, z ); + instance.setRenderColor( 0xffffff ); + prevLight = rbw.getLightingCache(); + } rbw.calculations = false; rbw.faces = calculateFaceOpenFaces( rbw.blockAccess, fc, x, y, z, side ); @@ -516,4 +534,5 @@ public class FacadePart implements IFacadePart return false; } + }