Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
4.6 kB · 145 lines
C++
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145#include "stdafx.h"#include "SpiderModel.h"#include "..\Minecraft.World\Mth.h"#include "ModelPart.h"
SpiderModel::SpiderModel() : Model(){ float g = 0; int yo = 18+6-9;
head = new ModelPart(this, 32, 4); head->addBox(-4, -4, -8, 8, 8, 8, g); // Head head->setPos(0, (float)(0+yo), -3);
body0 = new ModelPart(this, 0, 0); body0->addBox(-3, -3, -3, 6, 6, 6, g); // Body body0->setPos(0,(float)(yo), 0);
body1 = new ModelPart(this, 0, 12); body1->addBox(-5, -4, -6, 10, 8, 12, g); // Body body1->setPos(0, (float)(0+yo), 3 + 6);
leg0 = new ModelPart(this, 18, 0); leg0->addBox(-15, -1, -1, 16, 2, 2, g); // Leg0 leg0->setPos(-4, (float)(0+yo), 2);
leg1 = new ModelPart(this, 18, 0); leg1->addBox(-1, -1, -1, 16, 2, 2, g); // Leg1 leg1->setPos(4, (float)(0+yo), 2);
leg2 = new ModelPart(this, 18, 0); leg2->addBox(-15, -1, -1, 16, 2, 2, g); // Leg2 leg2->setPos(-4, (float)(0+yo), 1);
leg3 = new ModelPart(this, 18, 0); leg3->addBox(-1, -1, -1, 16, 2, 2, g); // Leg3 leg3->setPos(4, (float)(0+yo), 1);
leg4 = new ModelPart(this, 18, 0); leg4->addBox(-15, -1, -1, 16, 2, 2, g); // Leg0 leg4->setPos(-4, (float)(0+yo), 0);
leg5 = new ModelPart(this, 18, 0); leg5->addBox(-1, -1, -1, 16, 2, 2, g); // Leg1 leg5->setPos(4, (float)(0+yo), 0);
leg6 = new ModelPart(this, 18, 0); leg6->addBox(-15, -1, -1, 16, 2, 2, g); // Leg2 leg6->setPos(-4, (float)(0+yo), -1);
leg7 = new ModelPart(this, 18, 0); leg7->addBox(-1, -1, -1, 16, 2, 2, g); // Leg3 leg7->setPos(4, (float)(0+yo), -1);
// 4J added - compile now to avoid random performance hit first time cubes are rendered head->compile(1.0f/16.0f); body0->compile(1.0f/16.0f); body1->compile(1.0f/16.0f); leg0->compile(1.0f/16.0f); leg1->compile(1.0f/16.0f); leg2->compile(1.0f/16.0f); leg3->compile(1.0f/16.0f); leg4->compile(1.0f/16.0f); leg5->compile(1.0f/16.0f); leg6->compile(1.0f/16.0f); leg7->compile(1.0f/16.0f);}
void SpiderModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled){ setupAnim(time, r, bob, yRot, xRot, scale, entity);
head->render(scale,usecompiled); body0->render(scale,usecompiled); body1->render(scale,usecompiled); leg0->render(scale,usecompiled); leg1->render(scale,usecompiled); leg2->render(scale,usecompiled); leg3->render(scale,usecompiled); leg4->render(scale,usecompiled); leg5->render(scale,usecompiled); leg6->render(scale,usecompiled); leg7->render(scale,usecompiled);}
void SpiderModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim){ head->yRot = yRot / (float) (180 / PI); head->xRot = xRot / (float) (180 / PI);
float sr = (float) PI / 4.0f; leg0->zRot = -sr; leg1->zRot = sr; leg2->zRot = -sr * 0.74f; leg3->zRot = sr * 0.74f; leg4->zRot = -sr * 0.74f; leg5->zRot = sr * 0.74f; leg6->zRot = -sr; leg7->zRot = sr;
float ro = -(float) PI / 2.0f * 0; float ur = (float) PI / 8.0f; leg0->yRot = +ur * 2.0f + ro; leg1->yRot = -ur * 2.0f - ro; leg2->yRot = +ur * 1.0f + ro; leg3->yRot = -ur * 1.0f - ro; leg4->yRot = -ur * 1.0f + ro; leg5->yRot = +ur * 1.0f - ro; leg6->yRot = -ur * 2.0f + ro; leg7->yRot = +ur * 2.0f - ro;
float c0 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 0 / 4.0f) * 0.4f) * r; float c1 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 2 / 4.0f) * 0.4f) * r; float c2 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 1 / 4.0f) * 0.4f) * r; float c3 = -((float) Mth::cos(time * 0.6662f * 2 + PI * 2 * 3 / 4.0f) * 0.4f) * r;
float s0 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 0 / 4.0f) * 0.4f) * r; float s1 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 2 / 4.0f) * 0.4f) * r; float s2 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 1 / 4.0f) * 0.4f) * r; float s3 = abs((float)Mth::sin(time * 0.6662f + PI * 2 * 3 / 4.0f) * 0.4f) * r;
leg0->yRot += +c0; leg1->yRot += -c0; leg2->yRot += +c1; leg3->yRot += -c1; leg4->yRot += +c2; leg5->yRot += -c2; leg6->yRot += +c3; leg7->yRot += -c3;
leg0->zRot += +s0; leg1->zRot += -s0; leg2->zRot += +s1; leg3->zRot += -s1; leg4->zRot += +s2; leg5->zRot += -s2; leg6->zRot += +s3; leg7->zRot += -s3;}