Rendering cleanup

Replaces the reflexive instantiation of the Renderes with a factory
method.

Some optimizations to the renderers to no longer push the whole OpenGL state to the stack.

General cleanup of duplicate code, etc
This commit is contained in:
yueh
2015-09-16 18:03:07 +02:00
parent 824ec1eccb
commit d5dfc31210
69 changed files with 435 additions and 343 deletions
+11 -16
View File
@@ -61,6 +61,7 @@ import appeng.core.features.IAEFeature;
import appeng.core.features.IFeatureHandler;
import appeng.helpers.AEGlassMaterial;
import appeng.helpers.ICustomCollision;
import appeng.tile.AEBaseTile;
import appeng.util.LookDirection;
import appeng.util.Platform;
@@ -132,27 +133,21 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
return this.renderInfo;
}
try
{
final BaseBlockRender renderer = this.getRenderer().newInstance();
this.renderInfo = new BlockRenderInfo( renderer );
final BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> renderer = this.getRenderer();
this.renderInfo = new BlockRenderInfo( renderer );
return this.renderInfo;
}
catch( final InstantiationException e )
{
throw new IllegalStateException( "Failed to create a new instance of an illegal class " + this.getRenderer(), e );
}
catch( final IllegalAccessException e )
{
throw new IllegalStateException( "Failed to create a new instance of " + this.getRenderer() + " because of permissions.", e );
}
return this.renderInfo;
}
/**
* Factory method to create a new render instance.
*
* @return the newly created instance.
*/
@SideOnly( Side.CLIENT )
protected Class<? extends BaseBlockRender> getRenderer()
protected BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> getRenderer()
{
return BaseBlockRender.class;
return new BaseBlockRender<AEBaseBlock, AEBaseTile>();
}
IIcon unmappedGetIcon( final IBlockAccess w, final int x, final int y, final int z, final int s )
@@ -32,7 +32,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCraftingCPUMonitor;
import appeng.client.texture.ExtraBlockTextures;
import appeng.tile.crafting.TileCraftingMonitorTile;
@@ -46,9 +45,10 @@ public class BlockCraftingMonitor extends BlockCraftingUnit
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockCraftingCPUMonitor getRenderer()
{
return RenderBlockCraftingCPUMonitor.class;
return new RenderBlockCraftingCPUMonitor();
}
@Override
@@ -36,7 +36,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCraftingCPU;
import appeng.client.texture.ExtraBlockTextures;
import appeng.core.features.AEFeature;
@@ -59,9 +58,10 @@ public class BlockCraftingUnit extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockCraftingCPU<? extends BlockCraftingUnit, ? extends TileCraftingTile> getRenderer()
{
return RenderBlockCraftingCPU.class;
return new RenderBlockCraftingCPU<BlockCraftingUnit, TileCraftingTile>();
}
@Override
@@ -30,7 +30,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockAssembler;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -68,9 +67,9 @@ public class BlockMolecularAssembler extends AEBaseTileBlock
@Override
@SideOnly( Side.CLIENT )
public Class<? extends BaseBlockRender> getRenderer()
public RenderBlockAssembler getRenderer()
{
return RenderBlockAssembler.class;
return new RenderBlockAssembler();
}
@Override
@@ -31,9 +31,11 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.implementations.tiles.ICrankable;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCrank;
import appeng.core.features.AEFeature;
import appeng.core.stats.Stats;
@@ -56,9 +58,10 @@ public class BlockCrank extends AEBaseTileBlock
}
@Override
public Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
public RenderBlockCrank getRenderer()
{
return RenderBlockCrank.class;
return new RenderBlockCrank();
}
@Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCharger;
import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig;
@@ -63,9 +62,10 @@ public class BlockCharger extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockCharger getRenderer()
{
return RenderBlockCharger.class;
return new RenderBlockCharger();
}
@Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockInscriber;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -49,9 +51,10 @@ public class BlockInscriber extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockInscriber getRenderer()
{
return RenderBlockInscriber.class;
return new RenderBlockInscriber();
}
@Override
@@ -26,9 +26,11 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientable;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockInterface;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -48,9 +50,10 @@ public class BlockInterface extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockInterface getRenderer()
{
return RenderBlockInterface.class;
return new RenderBlockInterface();
}
@Override
@@ -91,9 +91,10 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl
}
@Override
protected Class<? extends RenderQuartzTorch> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderQuartzTorch getRenderer()
{
return RenderQuartzTorch.class;
return new RenderQuartzTorch();
}
@Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockPaint;
import appeng.core.features.AEFeature;
import appeng.tile.misc.TilePaint;
@@ -59,9 +58,10 @@ public class BlockPaint extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockPaint getRenderer()
{
return RenderBlockPaint.class;
return new RenderBlockPaint();
}
@Override
@@ -33,7 +33,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientableBlock;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockQuartzAccelerator;
import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig;
@@ -55,9 +54,10 @@ public class BlockQuartzGrowthAccelerator extends AEBaseTileBlock implements IOr
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockQuartzAccelerator getRenderer()
{
return RenderBlockQuartzAccelerator.class;
return new RenderBlockQuartzAccelerator();
}
@Override
@@ -39,7 +39,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientable;
import appeng.api.util.IOrientableBlock;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzTorch;
import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig;
@@ -63,9 +62,10 @@ public class BlockQuartzTorch extends AEBaseBlock implements IOrientableBlock, I
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderQuartzTorch getRenderer()
{
return RenderQuartzTorch.class;
return new RenderQuartzTorch();
}
@Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RendererSecurity;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -47,9 +49,10 @@ public class BlockSecurity extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RendererSecurity getRenderer()
{
return RendererSecurity.class;
return new RendererSecurity();
}
@Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockSkyCompass;
import appeng.core.features.AEFeature;
import appeng.helpers.ICustomCollision;
@@ -57,9 +56,10 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockSkyCompass getRenderer()
{
return RenderBlockSkyCompass.class;
return new RenderBlockSkyCompass();
}
@Override
@@ -40,9 +40,10 @@ import net.minecraft.world.Explosion;
import net.minecraft.world.World;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderTinyTNT;
import appeng.client.texture.FullIcon;
import appeng.core.AppEng;
@@ -70,9 +71,10 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderTinyTNT getRenderer()
{
return RenderTinyTNT.class;
return new RenderTinyTNT();
}
@Override
@@ -54,7 +54,6 @@ import appeng.api.parts.PartItemStack;
import appeng.api.parts.SelectedPart;
import appeng.api.util.AEColor;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.BusRenderHelper;
import appeng.client.render.blocks.RendererCableBus;
import appeng.client.texture.ExtraBlockTextures;
@@ -414,9 +413,10 @@ public class BlockCableBus extends AEBaseTileBlock implements IRedNetConnection
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RendererCableBus getRenderer()
{
return RendererCableBus.class;
return new RendererCableBus();
}
@Override
@@ -25,8 +25,10 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockController;
import appeng.core.features.AEFeature;
import appeng.tile.networking.TileController;
@@ -54,8 +56,9 @@ public class BlockController extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockController getRenderer()
{
return RenderBlockController.class;
return new RenderBlockController();
}
}
@@ -34,7 +34,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseItemBlock;
import appeng.block.AEBaseItemBlockChargeable;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockEnergyCube;
import appeng.client.texture.ExtraBlockTextures;
import appeng.core.features.AEFeature;
@@ -55,9 +54,10 @@ public class BlockEnergyCell extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockEnergyCube getRenderer()
{
return RenderBlockEnergyCube.class;
return new RenderBlockEnergyCube();
}
@Override
@@ -29,8 +29,10 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockWireless;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -54,9 +56,10 @@ public class BlockWireless extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockWireless getRenderer()
{
return RenderBlockWireless.class;
return new RenderBlockWireless();
}
@Override
@@ -25,6 +25,9 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.blocks.RenderQNB;
import appeng.core.features.AEFeature;
@@ -69,9 +72,10 @@ public abstract class BlockQuantumBase extends AEBaseTileBlock implements ICusto
}
@Override
protected Class<? extends RenderQNB> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderQNB getRenderer()
{
return RenderQNB.class;
return new RenderQNB();
}
}
@@ -28,7 +28,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzGlass;
import appeng.core.features.AEFeature;
import appeng.helpers.AEGlassMaterial;
@@ -46,9 +45,9 @@ public class BlockQuartzGlass extends AEBaseBlock
@Override
@SideOnly( Side.CLIENT )
public Class<? extends BaseBlockRender> getRenderer()
public RenderQuartzGlass getRenderer()
{
return RenderQuartzGlass.class;
return new RenderQuartzGlass();
}
@Override
@@ -31,10 +31,12 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.api.exceptions.MissingDefinition;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzOre;
import appeng.core.features.AEFeature;
@@ -57,9 +59,10 @@ public class OreQuartz extends AEBaseBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderQuartzOre getRenderer()
{
return RenderQuartzOre.class;
return new RenderQuartzOre();
}
@Override
@@ -38,7 +38,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderNull;
import appeng.core.features.AEFeature;
import appeng.helpers.ICustomCollision;
@@ -58,9 +57,10 @@ public class BlockMatrixFrame extends AEBaseBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderNull getRenderer()
{
return RenderNull.class;
return new RenderNull();
}
@Override
@@ -25,8 +25,10 @@ import net.minecraft.block.Block;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderSpatialPylon;
import appeng.core.features.AEFeature;
import appeng.helpers.AEGlassMaterial;
@@ -65,8 +67,9 @@ public class BlockSpatialPylon extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderSpatialPylon getRenderer()
{
return RenderSpatialPylon.class;
return new RenderSpatialPylon();
}
}
@@ -27,10 +27,12 @@ import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.api.storage.ICellHandler;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderMEChest;
import appeng.core.features.AEFeature;
import appeng.core.localization.PlayerMessages;
@@ -50,9 +52,10 @@ public class BlockChest extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderMEChest getRenderer()
{
return RenderMEChest.class;
return new RenderMEChest();
}
@Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderDrive;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -46,9 +48,10 @@ public class BlockDrive extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderDrive getRenderer()
{
return RenderDrive.class;
return new RenderDrive();
}
@Override
@@ -43,7 +43,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockSkyChest;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -83,9 +82,10 @@ public class BlockSkyChest extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockSkyChest getRenderer()
{
return RenderBlockSkyChest.class;
return new RenderBlockSkyChest();
}
@Override