/*******************************************************************************
* AbyssalCraft
* Copyright (c) 2012 - 2017 Shinoow.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Contributors:
* Shinoow - implementation
******************************************************************************/
package com.shinoow.abyssalcraft.client.render.entity;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import com.shinoow.abyssalcraft.client.model.entity.ModelAntiBat;
import com.shinoow.abyssalcraft.common.entity.anti.EntityAntiBat;
@SideOnly(Side.CLIENT)
public class RenderAntiBat extends RenderLiving
{
private static final ResourceLocation batTextures = new ResourceLocation("abyssalcraft:textures/model/anti/bat.png");
private int renderedBatSize;
public RenderAntiBat(RenderManager manager)
{
super(manager, new ModelAntiBat(), 0.25F);
renderedBatSize = ((ModelAntiBat)mainModel).getBatSize();
}
public void doRender(EntityAntiBat par1EntityBat, double par2, double par4, double par6, float par8, float par9)
{
int i = ((ModelAntiBat)mainModel).getBatSize();
if (i != renderedBatSize)
{
renderedBatSize = i;
mainModel = new ModelAntiBat();
}
super.doRender(par1EntityBat, par2, par4, par6, par8, par9);
}
protected ResourceLocation getEntityTexture(EntityAntiBat par1EntityBat)
{
return batTextures;
}
protected void preRenderCallback(EntityAntiBat par1EntityBat, float par2)
{
GlStateManager.scale(0.35F, 0.35F, 0.35F);
}
protected void renderLivingAt(EntityAntiBat par1EntityBat, double par2, double par4, double par6)
{
super.renderLivingAt(par1EntityBat, par2, par4, par6);
}
protected void applyRotations(EntityAntiBat par1EntityBat, float par2, float par3, float par4)
{
if (!par1EntityBat.getIsBatHanging())
GlStateManager.translate(0.0F, MathHelper.cos(par2 * 0.3F) * 0.1F, 0.0F);
else
GlStateManager.translate(0.0F, -0.1F, 0.0F);
super.applyRotations(par1EntityBat, par2, par3, par4);
}
@Override
protected void preRenderCallback(EntityLivingBase par1EntityLivingBase, float par2)
{
this.preRenderCallback((EntityAntiBat)par1EntityLivingBase, par2);
}
@Override
protected void applyRotations(EntityLivingBase par1EntityLivingBase, float par2, float par3, float par4)
{
this.applyRotations((EntityAntiBat)par1EntityLivingBase, par2, par3, par4);
}
@Override
protected void renderLivingAt(EntityLivingBase par1EntityLivingBase, double par2, double par4, double par6)
{
this.renderLivingAt((EntityAntiBat)par1EntityLivingBase, par2, par4, par6);
}
@Override
protected ResourceLocation getEntityTexture(Entity par1Entity)
{
return this.getEntityTexture((EntityAntiBat)par1Entity);
}
}