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 "EndermanModel.h"
3#include "ModelPart.h"
4
5EndermanModel::EndermanModel() : HumanoidModel(0, -14, 64, 32)
6{
7 carrying = false;
8 creepy = false;
9
10 float yOffset = -14.0f;
11 float g = 0;
12
13 delete hair;
14 hair = new ModelPart(this, 0, 16);
15 hair->addBox(-4.0f, -8.0f, -4.0f, 8, 8, 8, g - 0.5f); // Head
16 hair->setPos(0.0f, 0.0f + yOffset, 0.0f);
17
18 delete body;
19 body = new ModelPart(this, 32, 16);
20 body->addBox(-4.0f, 0.0f, -2.0f, 8, 12, 4, g); // Body
21 body->setPos(0.0f, 0.0f + yOffset, 0.0f);
22
23
24 delete arm0;
25 arm0 = new ModelPart(this, 56, 0);
26 arm0->addBox(-1.0f, -2.0f, -1.0f, 2, 30, 2, g); // Arm0
27 arm0->setPos(-3.0f, 2.0f + yOffset, 0.0f);
28
29
30 delete arm1;
31 arm1 = new ModelPart(this, 56, 0);
32 arm1->bMirror = true;
33 arm1->addBox(-1.0f, -2.0f, -1.0f, 2, 30, 2, g); // Arm1
34 arm1->setPos(5.0f, 2.0f + yOffset, 0.0f);
35
36 delete leg0;
37 leg0 = new ModelPart(this, 56, 0);
38 leg0->addBox(-1.0f, 0.0f, -1.0f, 2, 30, 2, g); // Leg0
39 leg0->setPos(-2.0f, 12.0f + yOffset, 0.0f);
40
41 delete leg1;
42 leg1 = new ModelPart(this, 56, 0);
43 leg1->bMirror = true;
44 leg1->addBox(-1.0f, 0.0f, -1.0f, 2, 30, 2, g); // Leg1
45 leg1->setPos(2.0f, 12.0f + yOffset, 0.0f);
46
47 // 4J added - compile now to avoid random performance hit first time cubes are rendered
48 body->compile(1.0f/16.0f);
49 arm0->compile(1.0f/16.0f);
50 arm1->compile(1.0f/16.0f);
51 leg0->compile(1.0f/16.0f);
52 leg1->compile(1.0f/16.0f);
53 hair->compile(1.0f/16.0f);
54}
55
56void EndermanModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim)
57{
58 HumanoidModel::setupAnim(time, r, bob, yRot, xRot, scale, entity, uiBitmaskOverrideAnim);
59
60 head->visible = true;
61
62 float yOffs = -14.0f;
63 body->xRot = 0.0f;
64 body->y = yOffs;
65 body->z = -0.0f;
66
67 leg0->xRot -= 0.0f;
68 leg1->xRot -= 0.0f;
69
70 arm0->xRot *= 0.5f;
71 arm1->xRot *= 0.5f;
72 leg0->xRot *= 0.5f;
73 leg1->xRot *= 0.5f;
74
75 float max = 0.4f;
76 if (arm0->xRot > +max) arm0->xRot = +max;
77 if (arm1->xRot > +max) arm1->xRot = +max;
78 if (arm0->xRot < -max) arm0->xRot = -max;
79 if (arm1->xRot < -max) arm1->xRot = -max;
80 if (leg0->xRot > +max) leg0->xRot = +max;
81 if (leg1->xRot > +max) leg1->xRot = +max;
82 if (leg0->xRot < -max) leg0->xRot = -max;
83 if (leg1->xRot < -max) leg1->xRot = -max;
84
85
86 if (carrying)
87 {
88 arm0->xRot = -0.5f;
89 arm1->xRot = -0.5f;
90 arm0->zRot = 0.05f;
91 arm1->zRot = -0.05f;
92 }
93
94 arm0->z = -0.0f;
95 arm1->z = -0.0f;
96 leg0->z = -0.0f;
97 leg1->z = -0.0f;
98
99 arm0->y = 2.0f + yOffs;
100 arm1->y = 2.0f + yOffs;
101
102 leg0->y = +9.0f + yOffs;
103 leg1->y = +9.0f + yOffs;
104
105 head->z = -0.0f;
106 head->y = +yOffs + 1;
107
108 hair->x = head->x;
109 hair->y = head->y;
110 hair->z = head->z;
111 hair->xRot = head->xRot;
112 hair->yRot = head->yRot;
113 hair->zRot = head->zRot;
114
115 if (creepy)
116 {
117 float amt = 1;
118 head->y -= (float) (amt * 5);
119 }
120}