4jcraft/Minecraft.Client/Rendering/Models/ModelPart.h
MatthewBeshay 28d68befd4 Replace remaining WinAPI types with standard C++ equivalents
DWORD→uint32_t, BYTE→uint8_t, HRESULT→int32_t, HANDLE→void*, UINT→uint32_t, INT→int32_t, WORD→uint16_t, LONG→int32_t, SHORT→int16_t, LONGLONG→int64_t, ULONG_PTR→uintptr_t, PBYTE→uint8_t*, LPWSTR/PWSTR→wchar_t*, FLOAT→float, CHAR→char, boolean→bool, CONST→const, TRUE→true, FALSE→false across 176 files (excluding vendor libs and Linux stubs).
2026-03-30 17:36:15 +11:00

70 lines
2.3 KiB
C++

#pragma once
#include "../../../Minecraft.World/Util/ArrayWithLength.h"
#include "../Vertex.h"
#include "../Polygon.h"
#include "Model.h"
#include "./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;
std::vector<Cube*> cubes;
std::vector<ModelPart*> children;
static const float RAD;
float translateX, translateY, translateZ;
private:
std::wstring id;
int xTexOffs, yTexOffs;
bool compiled;
int list;
Model* model;
public:
void _init(); // 4J added
ModelPart();
ModelPart(Model* model, const std::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 std::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(std::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; }
};