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 "SpiderModel.h"
3#include "..\Minecraft.World\Mth.h"
4#include "ModelPart.h"
5
6SpiderModel::SpiderModel() : Model()
7{
8 float g = 0;
9
10 int yo = 18+6-9;
11
12 head = new ModelPart(this, 32, 4);
13 head->addBox(-4, -4, -8, 8, 8, 8, g); // Head
14 head->setPos(0, (float)(0+yo), -3);
15
16 body0 = new ModelPart(this, 0, 0);
17 body0->addBox(-3, -3, -3, 6, 6, 6, g); // Body
18 body0->setPos(0,(float)(yo), 0);
19
20 body1 = new ModelPart(this, 0, 12);
21 body1->addBox(-5, -4, -6, 10, 8, 12, g); // Body
22 body1->setPos(0, (float)(0+yo), 3 + 6);
23
24
25 leg0 = new ModelPart(this, 18, 0);
26 leg0->addBox(-15, -1, -1, 16, 2, 2, g); // Leg0
27 leg0->setPos(-4, (float)(0+yo), 2);
28
29 leg1 = new ModelPart(this, 18, 0);
30 leg1->addBox(-1, -1, -1, 16, 2, 2, g); // Leg1
31 leg1->setPos(4, (float)(0+yo), 2);
32
33 leg2 = new ModelPart(this, 18, 0);
34 leg2->addBox(-15, -1, -1, 16, 2, 2, g); // Leg2
35 leg2->setPos(-4, (float)(0+yo), 1);
36
37 leg3 = new ModelPart(this, 18, 0);
38 leg3->addBox(-1, -1, -1, 16, 2, 2, g); // Leg3
39 leg3->setPos(4, (float)(0+yo), 1);
40
41 leg4 = new ModelPart(this, 18, 0);
42 leg4->addBox(-15, -1, -1, 16, 2, 2, g); // Leg0
43 leg4->setPos(-4, (float)(0+yo), 0);
44
45 leg5 = new ModelPart(this, 18, 0);
46 leg5->addBox(-1, -1, -1, 16, 2, 2, g); // Leg1
47 leg5->setPos(4, (float)(0+yo), 0);
48
49 leg6 = new ModelPart(this, 18, 0);
50 leg6->addBox(-15, -1, -1, 16, 2, 2, g); // Leg2
51 leg6->setPos(-4, (float)(0+yo), -1);
52
53 leg7 = new ModelPart(this, 18, 0);
54 leg7->addBox(-1, -1, -1, 16, 2, 2, g); // Leg3
55 leg7->setPos(4, (float)(0+yo), -1);
56
57 // 4J added - compile now to avoid random performance hit first time cubes are rendered
58 head->compile(1.0f/16.0f);
59 body0->compile(1.0f/16.0f);
60 body1->compile(1.0f/16.0f);
61 leg0->compile(1.0f/16.0f);
62 leg1->compile(1.0f/16.0f);
63 leg2->compile(1.0f/16.0f);
64 leg3->compile(1.0f/16.0f);
65 leg4->compile(1.0f/16.0f);
66 leg5->compile(1.0f/16.0f);
67 leg6->compile(1.0f/16.0f);
68 leg7->compile(1.0f/16.0f);
69}
70
71void SpiderModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled)
72{
73 setupAnim(time, r, bob, yRot, xRot, scale, entity);
74
75 head->render(scale,usecompiled);
76 body0->render(scale,usecompiled);
77 body1->render(scale,usecompiled);
78 leg0->render(scale,usecompiled);
79 leg1->render(scale,usecompiled);
80 leg2->render(scale,usecompiled);
81 leg3->render(scale,usecompiled);
82 leg4->render(scale,usecompiled);
83 leg5->render(scale,usecompiled);
84 leg6->render(scale,usecompiled);
85 leg7->render(scale,usecompiled);
86}
87
88void SpiderModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim)
89{
90 head->yRot = yRot / (float) (180 / PI);
91 head->xRot = xRot / (float) (180 / PI);
92
93 float sr = (float) PI / 4.0f;
94 leg0->zRot = -sr;
95 leg1->zRot = sr;
96
97 leg2->zRot = -sr * 0.74f;
98 leg3->zRot = sr * 0.74f;
99
100 leg4->zRot = -sr * 0.74f;
101 leg5->zRot = sr * 0.74f;
102
103 leg6->zRot = -sr;
104 leg7->zRot = sr;
105
106 float ro = -(float) PI / 2.0f * 0;
107 float ur = (float) PI / 8.0f;
108 leg0->yRot = +ur * 2.0f + ro;
109 leg1->yRot = -ur * 2.0f - ro;
110 leg2->yRot = +ur * 1.0f + ro;
111 leg3->yRot = -ur * 1.0f - ro;
112 leg4->yRot = -ur * 1.0f + ro;
113 leg5->yRot = +ur * 1.0f - ro;
114 leg6->yRot = -ur * 2.0f + ro;
115 leg7->yRot = +ur * 2.0f - ro;
116
117
118 float c0 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 0 / 4.0f) * 0.4f) * r;
119 float c1 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 2 / 4.0f) * 0.4f) * r;
120 float c2 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 1 / 4.0f) * 0.4f) * r;
121 float c3 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 3 / 4.0f) * 0.4f) * r;
122
123 float s0 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 0 / 4.0f) * 0.4f) * r;
124 float s1 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 2 / 4.0f) * 0.4f) * r;
125 float s2 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 1 / 4.0f) * 0.4f) * r;
126 float s3 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 3 / 4.0f) * 0.4f) * r;
127
128 leg0->yRot += +c0;
129 leg1->yRot += -c0;
130 leg2->yRot += +c1;
131 leg3->yRot += -c1;
132 leg4->yRot += +c2;
133 leg5->yRot += -c2;
134 leg6->yRot += +c3;
135 leg7->yRot += -c3;
136
137 leg0->zRot += +s0;
138 leg1->zRot += -s0;
139 leg2->zRot += +s1;
140 leg3->zRot += -s1;
141 leg4->zRot += +s2;
142 leg5->zRot += -s2;
143 leg6->zRot += +s3;
144 leg7->zRot += -s3;
145}