/*******************************************************************************
* 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.model.entity;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.Entity;
import net.minecraft.util.EnumHandSide;
import net.minecraft.util.math.MathHelper;
public class ModelDG extends ModelBase
{
public ModelRenderer Head;
public ModelRenderer jaw;
public ModelRenderer tooth1;
public ModelRenderer tooth2;
public ModelRenderer tooth3;
public ModelRenderer tooth4;
public ModelRenderer tooth5;
public ModelRenderer Spine1;
public ModelRenderer Spine2;
public ModelRenderer lrib1;
public ModelRenderer lrib2;
public ModelRenderer lrib3;
public ModelRenderer rrib1;
public ModelRenderer rrib2;
public ModelRenderer rrib3;
public ModelRenderer pelvis;
public ModelRenderer Spine3;
public ModelRenderer larm1;
public ModelRenderer larm2;
public ModelRenderer clawl1;
public ModelRenderer clawl2;
public ModelRenderer clawl3;
public ModelRenderer clawl4;
public ModelRenderer rarm1;
public ModelRenderer rarm2;
public ModelRenderer clawr1;
public ModelRenderer clawr2;
public ModelRenderer clawr3;
public ModelRenderer clawr4;
public ModelRenderer lleg;
public ModelRenderer rleg;
public ModelRenderer back;
public ModelRenderer lside;
public ModelRenderer rside;
public ModelDG()
{
this(0.0F);
}
public ModelDG(float f)
{
textureWidth = 128;
textureHeight = 64;
Head = new ModelRenderer(this, 0, 0);
Head.setTextureSize(128, 64);
Head.addBox(-4.5F, -9.5F, -4.5F, 9, 9, 9, f);
Head.setRotationPoint(0F, -17F, 1F);
jaw = new ModelRenderer(this, 36, 0);
jaw.setTextureSize(128, 64);
jaw.addBox(-4.5F, -0.5F, -4.5F, 9, 1, 9, f);
jaw.setRotationPoint(0F, 1F, 0F);
setRotation(jaw, 0.2365561F, 0, 0);
Head.addChild(jaw);
tooth1 = new ModelRenderer(this, 48, 11);
tooth1.setTextureSize(128, 64);
tooth1.addBox(-0.5F, -1F, -0.5F, 1, 2, 1, f);
tooth1.setRotationPoint(-4F, -1.5F, -4F);
jaw.addChild(tooth1);
tooth2 = new ModelRenderer(this, 48, 11);
tooth2.setTextureSize(128, 64);
tooth2.addBox(-0.5F, -1F, -0.5F, 1, 2, 1, f);
tooth2.setRotationPoint(-2F, -1.5F, -4F);
jaw.addChild(tooth2);
tooth3 = new ModelRenderer(this, 48, 11);
tooth3.setTextureSize(128, 64);
tooth3.addBox(-0.5F, -1F, -0.5F, 1, 2, 1, f);
tooth3.setRotationPoint(0F, -1.5F, -4F);
jaw.addChild(tooth3);
tooth4 = new ModelRenderer(this, 48, 11);
tooth4.setTextureSize(128, 64);
tooth4.addBox(-0.5F, -1F, -0.5F, 1, 2, 1, f);
tooth4.setRotationPoint(2F, -1.5F, -4F);
jaw.addChild(tooth4);
tooth5 = new ModelRenderer(this, 48, 11);
tooth5.setTextureSize(128, 64);
tooth5.addBox(-0.5F, -1F, -0.5F, 1, 2, 1, f);
tooth5.setRotationPoint(4F, -1.5F, -4F);
jaw.addChild(tooth5);
Spine1 = new ModelRenderer(this, 0, 42);
Spine1.setTextureSize(128, 64);
Spine1.addBox(-2.5F, -4F, -3F, 5, 8, 6, f);
Spine1.setRotationPoint(0F, -14F, 2F);
setRotation(Spine1, 0.2590069F, 0, 0);
Spine2 = new ModelRenderer(this, 0, 42);
Spine2.setTextureSize(128, 64);
Spine2.addBox(-2.5F, -8F, -3F, 5, 16, 6, f);
Spine2.setRotationPoint(0F, -2.854666F, 2.884038F);
lrib1 = new ModelRenderer(this, 101, 47);
lrib1.setTextureSize(128, 64);
lrib1.addBox(-1.5F, -1F, -1F, 3, 2, 2, f);
lrib1.setRotationPoint(4F, -6.977365F, 2.8262F);
setRotation(lrib1, -0.07023507F, 0, 0);
lrib2 = new ModelRenderer(this, 101, 47);
lrib2.setTextureSize(128, 64);
lrib2.addBox(-1.5F, -1F, -1F, 3, 2, 2, f);
lrib2.setRotationPoint(4F, -3.821312F, 2.627918F);
setRotation(lrib2, -0.07023507F, 0, 0);
lrib3 = new ModelRenderer(this, 101, 47);
lrib3.setTextureSize(128, 64);
lrib3.addBox(-1.5F, -1F, -1F, 3, 2, 2, f);
lrib3.setRotationPoint(4F, -0.6646652F, 2.434038F);
setRotation(lrib3, -0.07023507F, 0, 0);
rrib1 = new ModelRenderer(this, 101, 47);
rrib1.setTextureSize(128, 64);
rrib1.addBox(-1.5F, -1F, -1F, 3, 2, 2, f);
rrib1.setRotationPoint(-4F, -6.977365F, 2.826201F);
setRotation(rrib1, -0.07023507F, 0, 0);
rrib2 = new ModelRenderer(this, 101, 47);
rrib2.setTextureSize(128, 64);
rrib2.addBox(-1.5F, -1F, -1F, 3, 2, 2, f);
rrib2.setRotationPoint(-4F, -3.82131F, 2.627918F);
setRotation(rrib2, -0.07023507F, 0, 0);
rrib3 = new ModelRenderer(this, 101, 47);
rrib3.setTextureSize(128, 64);
rrib3.addBox(-1.5F, -1F, -1F, 3, 2, 2, f);
rrib3.setRotationPoint(-4F, -0.6652546F, 2.429635F);
setRotation(rrib3, -0.07023507F, 0, 0);
pelvis = new ModelRenderer(this, 80, 14);
pelvis.setTextureSize(128, 64);
pelvis.addBox(-6F, -1F, -3F, 12, 2, 6, f);
pelvis.setRotationPoint(0F, 5.390734F, 2.999714F);
setRotation(pelvis, -1.637653E-07F, 0, 0);
Spine3 = new ModelRenderer(this, 76, 28);
Spine3.setTextureSize(128, 64);
Spine3.addBox(-9F, -2F, -2F, 18, 4, 4, f);
Spine3.setRotationPoint(0F, -11.10007F, 2.768362F);
setRotation(Spine3, 0.1290269F, 0, 0);
larm1 = new ModelRenderer(this, 46, 48);
larm1.setTextureSize(128, 64);
larm1.addBox(0F, -2F, -2F, 4, 12, 4, f);
larm1.setRotationPoint(9F, -11F, 2F);
setRotation(larm1, -0.5595525F, 0, 0);
larm2 = new ModelRenderer(this, 64, 52);
larm2.setTextureSize(128, 64);
larm2.addBox(-2F, 1F, 3F, 4, 8, 4, f);
larm2.setRotationPoint(2F,4F,-2F);
setRotation(larm2, -1.44967F - larm1.rotateAngleX, 0, 0);
clawl1 = new ModelRenderer(this, 110, 57);
clawl1.setTextureSize(128, 64);
clawl1.addBox(-0.5F, -0.5F, -1F, 1, 5, 1, f);
clawl1.setRotationPoint(-1F,8F,3F);
clawl2 = new ModelRenderer(this, 110, 57);
clawl2.setTextureSize(128, 64);
clawl2.addBox(-0.5F, -0.5F, -1F, 1, 5, 1, f);
clawl2.setRotationPoint(1F,8F,3F);
clawl3 = new ModelRenderer(this, 110, 57);
clawl3.setTextureSize(128, 64);
clawl3.addBox(-1F, -0.5F, -1F, 1, 5, 1, f);
clawl3.setRotationPoint(-2F,8F,5F);
clawl4 = new ModelRenderer(this, 110, 57);
clawl4.setTextureSize(128, 64);
clawl4.addBox(0F, -0.5F, -1F, 1, 5, 1, f);
clawl4.setRotationPoint(2F,8F,5F);
rarm1 = new ModelRenderer(this, 46, 48);
rarm1.setTextureSize(128, 64);
rarm1.addBox(-4F, -2F, -2F, 4, 12, 4, f);
rarm1.setRotationPoint(-9F, -11F, 2F);
setRotation(rarm1, -0.559472F, 0, 0);
rarm2 = new ModelRenderer(this, 64, 52);
rarm2.setTextureSize(128, 64);
rarm2.addBox(-2F, 1F, 3F, 4, 8, 4, f);
rarm2.setRotationPoint(-2F,4F,-2F);
setRotation(rarm2, -1.449542F - rarm1.rotateAngleX, 0, 0);
clawr1 = new ModelRenderer(this, 110, 57);
clawr1.setTextureSize(128, 64);
clawr1.addBox(-0.5F, -0.5F, -1F, 1, 5, 1, f);
clawr1.setRotationPoint(-1F,8F,3F);
clawr2 = new ModelRenderer(this, 110, 57);
clawr2.setTextureSize(128, 64);
clawr2.addBox(-0.5F, -0.5F, -1F, 1, 5, 1, f);
clawr2.setRotationPoint(1F,8F,3F);
clawr3 = new ModelRenderer(this, 110, 57);
clawr3.setTextureSize(128, 64);
clawr3.addBox(0F, -0.5F, -1F, 1, 5, 1, f);
clawr3.setRotationPoint(-3F,8F,5F);
clawr4 = new ModelRenderer(this, 110, 57);
clawr4.setTextureSize(128, 64);
clawr4.addBox(-1F, -0.5F, -1F, 1, 5, 1, f);
clawr4.setRotationPoint(3F,8F,5F);
lleg = new ModelRenderer(this, 22, 40);
lleg.setTextureSize(128, 64);
lleg.addBox(-3F, -1F, -3F, 6, 18, 6, f);
lleg.setRotationPoint(3F, 7F, 3F);
rleg = new ModelRenderer(this, 22, 40);
rleg.setTextureSize(128, 64);
rleg.addBox(-3F, -1F, -3F, 6, 18, 6, f);
rleg.setRotationPoint(-3F, 7F, 3F);
back = new ModelRenderer(this, 0, 18);
back.setTextureSize(128, 64);
back.addBox(-6F, -7.5F, 0F, 12, 15, 0, f);
back.setRotationPoint(0F, -3F, 6F);
lside = new ModelRenderer(this, 30, 12);
lside.setTextureSize(128, 64);
lside.addBox(0F, -7.5F, -3F, 0, 15, 6, f);
lside.setRotationPoint(6F, -3F, 3F);
rside = new ModelRenderer(this, 42, 12);
rside.setTextureSize(128, 64);
rside.addBox(0F, -7.5F, -3F, 0, 15, 6, f);
rside.setRotationPoint(-6F, -3F, 3F);
larm1.addChild(larm2);
rarm1.addChild(rarm2);
larm2.addChild(clawl1);
larm2.addChild(clawl2);
larm2.addChild(clawl3);
larm2.addChild(clawl4);
rarm2.addChild(clawr1);
rarm2.addChild(clawr2);
rarm2.addChild(clawr3);
rarm2.addChild(clawr4);
}
@Override
public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
{
super.render(par1Entity, par2, par3, par4, par5, par6, par7);
setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity);
if (isChild)
{
float f6 = 2.0F;
GlStateManager.pushMatrix();
GlStateManager.scale(1.5F / f6, 1.5F / f6, 1.5F / f6);
GlStateManager.translate(0.0F, 21.0F * par7, 0.0F);
Head.render(par7);
GlStateManager.popMatrix();
GlStateManager.pushMatrix();
GlStateManager.scale(1.0F / f6, 1.0F / f6, 1.0F / f6);
GlStateManager.translate(0.0F, 24.0F * par7, 0.0F);
Spine1.render(par7);
Spine2.render(par7);
lrib1.render(par7);
lrib2.render(par7);
lrib3.render(par7);
rrib1.render(par7);
rrib2.render(par7);
rrib3.render(par7);
pelvis.render(par7);
Spine3.render(par7);
larm1.render(par7);
rarm1.render(par7);
lleg.render(par7);
rleg.render(par7);
back.render(par7);
lside.render(par7);
rside.render(par7);
GlStateManager.popMatrix();
} else{
Head.render(par7);
Spine1.render(par7);
Spine2.render(par7);
lrib1.render(par7);
lrib2.render(par7);
lrib3.render(par7);
rrib1.render(par7);
rrib2.render(par7);
rrib3.render(par7);
pelvis.render(par7);
Spine3.render(par7);
larm1.render(par7);
rarm1.render(par7);
lleg.render(par7);
rleg.render(par7);
back.render(par7);
lside.render(par7);
rside.render(par7);
}
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
@Override
public void setRotationAngles(float par1, float par2, float par3, float par4, float par5, float par6, Entity par7Entity) {
Head.rotateAngleY = par4 / (180F / (float)Math.PI);
Head.rotateAngleX = par5 / (180F / (float)Math.PI);
rleg.rotateAngleX = MathHelper.cos(par1 * 0.6662F) * 1.4F * par2;
rleg.rotateAngleY = 0.0F;
lleg.rotateAngleX = MathHelper.cos(par1 * 0.6662F + (float)Math.PI) * 1.4F * par2;
lleg.rotateAngleY = 0.0F;
if (isRiding){
rarm1.rotateAngleX += -((float)Math.PI / 5F);
larm1.rotateAngleX += -((float)Math.PI / 5F);
rleg.rotateAngleX = -((float)Math.PI * 2F / 5F);
lleg.rotateAngleX = -((float)Math.PI * 2F / 5F);
rleg.rotateAngleY = (float)Math.PI / 10F;
lleg.rotateAngleY = -((float)Math.PI / 10F);
}
float f6 = MathHelper.sin(swingProgress * (float)Math.PI);
float f7 = MathHelper.sin((1.0F - (1.0F - swingProgress) * (1.0F - swingProgress)) * (float)Math.PI);
rarm1.rotateAngleZ = 0.0F;
larm1.rotateAngleZ = 0.0F;
rarm1.rotateAngleY = -(0.1F - f6 * 0.6F);
larm1.rotateAngleY = 0.1F - f6 * 0.6F;
rarm1.rotateAngleX = -((float)Math.PI / 3.7F);
larm1.rotateAngleX = -((float)Math.PI / 3.7F);
rarm1.rotateAngleX -= f6 * 1.2F - f7 * 0.4F;
larm1.rotateAngleX -= f6 * 1.2F - f7 * 0.4F;
rarm1.rotateAngleZ += MathHelper.cos(par3 * 0.09F) * 0.05F + 0.05F;
larm1.rotateAngleZ -= MathHelper.cos(par3 * 0.09F) * 0.05F + 0.05F;
rarm1.rotateAngleX += MathHelper.sin(par3 * 0.067F) * 0.05F;
larm1.rotateAngleX -= MathHelper.sin(par3 * 0.067F) * 0.05F;
}
public void setInvisible(boolean invisible)
{
Head.showModel = invisible;
Spine1.showModel = invisible;
Spine2.showModel = invisible;
lrib1.showModel = invisible;
lrib2.showModel = invisible;
lrib3.showModel = invisible;
rrib1.showModel = invisible;
rrib2.showModel = invisible;
rrib3.showModel = invisible;
pelvis.showModel = invisible;
Spine3.showModel = invisible;
larm1.showModel = invisible;
rarm1.showModel = invisible;
lleg.showModel = invisible;
rleg.showModel = invisible;
back.showModel = invisible;
lside.showModel = invisible;
rside.showModel = invisible;
}
public void postRenderArm(float scale, EnumHandSide side){
getArmForSide(side).postRender(scale);
}
protected ModelRenderer getArmForSide(EnumHandSide side)
{
return side == EnumHandSide.LEFT ? larm1 : rarm1;
}
}