the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 112 lines 3.0 kB view raw
1#include "stdafx.h" 2#include "SilverfishModel.h" 3#include "Cube.h" 4#include "..\Minecraft.World\Mth.h" 5#include "ModelPart.h" 6 7const int SilverfishModel::BODY_SIZES[BODY_COUNT][3] = { 8 { 9 3, 2, 2 10 }, { 11 4, 3, 2 12 }, { 13 6, 4, 3 14 }, { 15 3, 3, 3 16 }, { 17 2, 2, 3 18 }, { 19 2, 1, 2 20 }, { 21 1, 1, 2 22 }, 23}; 24 25const int SilverfishModel::BODY_TEXS[BODY_COUNT][2] = { 26 { 27 0, 0 28 }, { 29 0, 4 30 }, { 31 0, 9 32 }, { 33 0, 16 34 }, { 35 0, 22 36 }, { 37 11, 0 38 }, { 39 13, 4 40 }, 41}; 42 43SilverfishModel::SilverfishModel() 44{ 45 bodyParts = ModelPartArray(BODY_COUNT); 46 float placement = -3.5f; 47 for (unsigned int i = 0; i < bodyParts.length; i++) 48 { 49 bodyParts[i] = new ModelPart(this, BODY_TEXS[i][0], BODY_TEXS[i][1]); 50 bodyParts[i]->addBox(BODY_SIZES[i][0] * -0.5f, 0, BODY_SIZES[i][2] * -0.5f, BODY_SIZES[i][0], BODY_SIZES[i][1], BODY_SIZES[i][2]); 51 bodyParts[i]->setPos(0.0f, 24.0f - (float)BODY_SIZES[i][1], placement); 52 zPlacement[i] = placement; 53 if (i < bodyParts.length - 1) 54 { 55 placement += (BODY_SIZES[i][2] + BODY_SIZES[i + 1][2]) * .5f; 56 } 57 } 58 59 bodyLayers = ModelPartArray(3); 60 bodyLayers[0] = new ModelPart(this, 20, 0); 61 bodyLayers[0]->addBox(-5, 0, BODY_SIZES[2][2] * -0.5f, 10, 8, BODY_SIZES[2][2]); 62 bodyLayers[0]->setPos(0, 24 - 8, zPlacement[2]); 63 bodyLayers[1] = new ModelPart(this, 20, 11); 64 bodyLayers[1]->addBox(-3, 0, BODY_SIZES[4][2] * -0.5f, 6, 4, BODY_SIZES[4][2]); 65 bodyLayers[1]->setPos(0, 24 - 4, zPlacement[4]); 66 bodyLayers[2] = new ModelPart(this, 20, 18); 67 bodyLayers[2]->addBox(-3, 0, BODY_SIZES[4][2] * -0.5f, 6, 5, BODY_SIZES[1][2]); 68 bodyLayers[2]->setPos(0, 24 - 5, zPlacement[1]); 69 70 // 4J added - compile now to avoid random performance hit first time cubes are rendered 71 for (unsigned int i = 0; i < bodyParts.length; i++) 72 { 73 bodyParts[i]->compile(1.0f/16.0f); 74 } 75 bodyLayers[0]->compile(1.0f/16.0f); 76 bodyLayers[1]->compile(1.0f/16.0f); 77 bodyLayers[2]->compile(1.0f/16.0f); 78} 79 80int SilverfishModel::modelVersion() 81{ 82 return 38; 83} 84 85void SilverfishModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled) 86{ 87 setupAnim(time, r, bob, yRot, xRot, scale, entity); 88 89 for (unsigned int i = 0; i < bodyParts.length; i++) 90 { 91 bodyParts[i]->render(scale, usecompiled); 92 } 93 for (unsigned int i = 0; i < bodyLayers.length; i++) 94 { 95 bodyLayers[i]->render(scale, usecompiled); 96 } 97} 98 99void SilverfishModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim) 100{ 101 for (unsigned int i = 0; i < bodyParts.length; i++) 102 { 103 bodyParts[i]->yRot = Mth::cos(bob * .9f + i * .15f * PI) * PI * .05f * (1 + abs((int)i - 2)); 104 bodyParts[i]->x = Mth::sin(bob * .9f + i * .15f * PI) * PI * .2f * abs((int)i - 2); 105 } 106 107 bodyLayers[0]->yRot = bodyParts[2]->yRot; 108 bodyLayers[1]->yRot = bodyParts[4]->yRot; 109 bodyLayers[1]->x = bodyParts[4]->x; 110 bodyLayers[2]->yRot = bodyParts[1]->yRot; 111 bodyLayers[2]->x = bodyParts[1]->x; 112}