the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "..\Minecraft.World\Mth.h"
3#include "ChickenModel.h"
4#include "ModelPart.h"
5
6ChickenModel::ChickenModel() : Model()
7{
8 int yo = 16;
9 head = new ModelPart(this, 0, 0);
10 head->addBox(-2.0f, -6.0f, -2.0f, 4, 6, 3, 0.0f); // Head
11 head->setPos(0, (float)(-1 + yo), -4);
12
13 beak = new ModelPart(this, 14, 0);
14 beak->addBox(-2.0f, -4.0f, -4.0f, 4, 2, 2, 0.0f); // Beak
15 beak->setPos(0, (float)(-1 + yo), -4);
16
17 redThing = new ModelPart(this, 14, 4);
18 redThing->addBox(-1.0f, -2.0f, -3.0f, 2, 2, 2, 0.0f); // Beak
19 redThing->setPos(0, (float)(-1 + yo), -4);
20
21 body = new ModelPart(this, 0, 9);
22 body->addBox(-3.0f, -4.0f, -3.0f, 6, 8, 6, 0.0f); // Body
23 body->setPos(0, (float)(0 + yo), 0);
24
25 leg0 = new ModelPart(this, 26, 0);
26 leg0->addBox(-1.0f, 0.0f, -3.0f, 3, 5, 3); // Leg0
27 leg0->setPos(-2, (float)(3 + yo), 1);
28
29 leg1 = new ModelPart(this, 26, 0);
30 leg1->addBox(-1.0f, 0.0f, -3.0f, 3, 5, 3); // Leg1
31 leg1->setPos(1, (float)(3 + yo), 1);
32
33 wing0 = new ModelPart(this, 24, 13);
34 wing0->addBox(0.0f, 0.0f, -3.0f, 1, 4, 6); // Wing0
35 wing0->setPos(-4, (float)(-3 + yo), 0);
36
37 wing1 = new ModelPart(this, 24, 13);
38 wing1->addBox(-1.0f, 0.0f, -3.0f, 1, 4, 6); // Wing1
39 wing1->setPos(4, (float)(-3 + yo), 0);
40
41 // 4J added - compile now to avoid random performance hit first time cubes are rendered
42 head->compile(1.0f/16.0f);
43 beak->compile(1.0f/16.0f);
44 redThing->compile(1.0f/16.0f);
45 body->compile(1.0f/16.0f);
46 leg0->compile(1.0f/16.0f);
47 leg1->compile(1.0f/16.0f);
48 wing0->compile(1.0f/16.0f);
49 wing1->compile(1.0f/16.0f);
50}
51
52void ChickenModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled)
53{
54 setupAnim(time, r, bob, yRot, xRot, scale, entity);
55 if (young)
56 {
57 float ss = 2;
58 glPushMatrix();
59 glTranslatef(0, 5 * scale, 2 * scale);
60 head->render(scale,usecompiled);
61 beak->render(scale,usecompiled);
62 redThing->render(scale,usecompiled);
63 glPopMatrix();
64 glPushMatrix();
65 glScalef(1 / ss, 1 / ss, 1 / ss);
66 glTranslatef(0, 24 * scale, 0);
67 body->render(scale,usecompiled);
68 leg0->render(scale,usecompiled);
69 leg1->render(scale,usecompiled);
70 wing0->render(scale,usecompiled);
71 wing1->render(scale,usecompiled);
72 glPopMatrix();
73 }
74 else
75 {
76 head->render(scale,usecompiled);
77 beak->render(scale,usecompiled);
78 redThing->render(scale,usecompiled);
79 body->render(scale,usecompiled);
80 leg0->render(scale,usecompiled);
81 leg1->render(scale,usecompiled);
82 wing0->render(scale,usecompiled);
83 wing1->render(scale,usecompiled);
84 }
85}
86
87void ChickenModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim)
88{
89 head->xRot = xRot / (float) (180 / PI);
90 head->yRot = yRot / (float) (180 / PI);
91
92 beak->xRot = head->xRot;
93 beak->yRot = head->yRot;
94
95 redThing->xRot = head->xRot;
96 redThing->yRot = head->yRot;
97
98 body->xRot = 90 / (float) (180 / PI);
99
100 leg0->xRot = (Mth::cos(time * 0.6662f) * 1.4f) * r;
101 leg1->xRot = ( Mth::cos(time * 0.6662f + PI) * 1.4f) * r;
102 wing0->zRot = bob;
103 wing1->zRot = -bob;
104}