#pragma once #include "..\Minecraft.World\ArrayWithLength.h" #include "Vertex.h" #include "Polygon.h" #include "Model.h" #include "..\Minecraft.Client\SkinBox.h" class Cube; class ModelPart { public: float xTexSize; float yTexSize; float x, y, z; float xRot, yRot, zRot; bool bMirror; bool visible; bool neverRender; vector cubes; vector children; static const float RAD; private: wstring id; int xTexOffs, yTexOffs; boolean compiled; int list; Model *model; public: void _init(); // 4J added ModelPart(); ModelPart(Model *model, const wstring &id); ModelPart(Model *model); ModelPart(Model *model, int xTexOffs, int yTexOffs); // MGH - had to add these for PS3, as calling constructors from others was only introduced in c++11 - https://en.wikipedia.org/wiki/C++11#Object_construction_improvement void construct(Model *model, const wstring &id); void construct(Model *model); void construct(Model *model, int xTexOffs, int yTexOffs); void addChild(ModelPart *child); ModelPart * retrieveChild(SKIN_BOX *pBox); ModelPart *mirror(); ModelPart *texOffs(int xTexOffs, int yTexOffs); ModelPart *addBox(wstring id, float x0, float y0, float z0, int w, int h, int d); ModelPart *addBox(float x0, float y0, float z0, int w, int h, int d); ModelPart *addBoxWithMask(float x0, float y0, float z0, int w, int h, int d, int faceMask); // 4J added void addBox(float x0, float y0, float z0, int w, int h, int d, float g); void addHumanoidBox(float x0, float y0, float z0, int w, int h, int d, float g); // 4J - to flip the poly 3 uvs so the skin maps correctly void addTexBox(float x0, float y0, float z0, int w, int h, int d, int tex); void setPos(float x, float y, float z); void render(float scale, bool usecompiled,bool bHideParentBodyPart=false); void renderRollable(float scale, bool usecompiled); void translateTo(float scale); ModelPart *setTexSize(int xs, int ys); void mimic(ModelPart *o); void compile(float scale); int getfU() {return xTexOffs;} int getfV() {return yTexOffs;} };