81 lines
2.0 KiB
C++
Executable File
81 lines
2.0 KiB
C++
Executable File
#pragma once
|
|
|
|
//package net.minecraft.client.model;
|
|
|
|
#include "Model.h"
|
|
|
|
#include "geom/ModelPart.h"
|
|
#include "../../world/entity/Entity.h"
|
|
|
|
class CreeperModel: public Model
|
|
{
|
|
typedef Model super;
|
|
public:
|
|
ModelPart head, /*hair,*/ body, leg0, leg1, leg2, leg3;
|
|
|
|
CreeperModel(float g = 0)
|
|
: head(0, 0),
|
|
//hair(32, 0),
|
|
body(16, 16),
|
|
leg0(0, 16),
|
|
leg1(0, 16),
|
|
leg2(0, 16),
|
|
leg3(0, 16)
|
|
{
|
|
float yo = 4;
|
|
|
|
head.setModel(this);
|
|
//hair.setModel(this);
|
|
body.setModel(this);
|
|
leg0.setModel(this);
|
|
leg1.setModel(this);
|
|
leg2.setModel(this);
|
|
leg3.setModel(this);
|
|
|
|
head.addBox(-4, -8, -4, 8, 8, 8, g); // Head
|
|
head.setPos(0, yo, 0);
|
|
|
|
// hair.addBox(-4, -8, -4, 8, 8, 8, g + 0.5f); // Head
|
|
// hair.setPos(0, yo, 0);
|
|
|
|
body.addBox(-4, 0, -2, 8, 12, 4, g); // Body
|
|
body.setPos(0, yo, 0);
|
|
|
|
leg0.addBox(-2, 0, -2, 4, 6, 4, g); // Leg0
|
|
leg0.setPos(-2, 12 + yo, 4);
|
|
|
|
leg1.addBox(-2, 0, -2, 4, 6, 4, g); // Leg1
|
|
leg1.setPos(2, 12 + yo, 4);
|
|
|
|
leg2.addBox(-2, 0, -2, 4, 6, 4, g); // Leg2
|
|
leg2.setPos(-2, 12 + yo, -4);
|
|
|
|
leg3.addBox(-2, 0, -2, 4, 6, 4, g); // Leg3
|
|
leg3.setPos(2, 12 + yo, -4);
|
|
}
|
|
|
|
/*@Override*/
|
|
void render(Entity* entity, float time, float r, float bob, float yRot, float xRot, float scale) {
|
|
setupAnim(time, r, bob, yRot, xRot, scale);
|
|
|
|
head.render(scale);
|
|
body.render(scale);
|
|
leg0.render(scale);
|
|
leg1.render(scale);
|
|
leg2.render(scale);
|
|
leg3.render(scale);
|
|
}
|
|
|
|
void setupAnim(float time, float r, float bob, float yRot, float xRot, float scale) {
|
|
head.yRot = yRot / (float) (180 / Mth::PI);
|
|
head.xRot = xRot / (float) (180 / Mth::PI);
|
|
|
|
const float pend = (Mth::cos(time * 0.6662f) * 1.4f) * r;
|
|
leg0.xRot = pend;
|
|
leg1.xRot = -pend;
|
|
leg2.xRot = -pend;
|
|
leg3.xRot = pend;
|
|
}
|
|
};
|
|
|