Implemented skin offsets in UI

Added code to render skin offsets in the skin select UI.
This commit is contained in:
Langtanium
2026-04-15 19:59:46 -07:00
parent a8384d9840
commit b40530fa5e
3 changed files with 59 additions and 57 deletions

View File

@@ -366,7 +366,7 @@ void UIControl_PlayerSkinPreview::render(EntityRenderer *renderer, double x, dou
glEnable(GL_ALPHA_TEST);
//model->prepareMobModel(mob, wp, ws, a);
model->render(nullptr, wp, ws, bob, headRot - bodyRot, headRotx, _scale, true);
model->render(nullptr, wp, ws, bob, headRot - bodyRot, headRotx, _scale, true, m_pvModelOffsets);
/*for (int i = 0; i < MAX_ARMOR_LAYERS; i++)
{
if (prepareArmor(mob, i, a))

View File

@@ -355,7 +355,7 @@ HumanoidModel::HumanoidModel(float g, float yOffset, int texWidth, int texHeight
_init(g,yOffset,texWidth,texHeight, slim, false);
}
void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled)
void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled, vector<SKIN_OFFSET *> *modelOffsets)
{
if(entity != nullptr)
{
@@ -392,9 +392,11 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
vector<float> arm1Offsets = {0, 0, 0};
vector<float> leg0Offsets = {0, 0, 0};
vector<float> leg1Offsets = {0, 0, 0};
vector<SKIN_OFFSET *>* pModelOffsets = nullptr;
if (player != nullptr)
{
vector<SKIN_OFFSET *>* pModelOffsets=player->GetModelOffsets();
pModelOffsets = player->GetModelOffsets();
else if (modelOffsets != nullptr)
pModelOffsets = modelOffsets;
if (pModelOffsets != nullptr)
{
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
@@ -452,7 +454,7 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
}
}
}
}
glPushMatrix();
glTranslatef(headOffsets[0]/16.0f, headOffsets[1]/16.0f, headOffsets[2]/16.0f);
head->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHead))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorHead))>0||!m_isArmor));

View File

@@ -83,7 +83,7 @@ public:
HumanoidModel(float g, bool isArmor);
HumanoidModel(float g, float yOffset, int texWidth, int texHeight);
HumanoidModel(float g, float yOffset, int texWidth, int texHeight, bool slim);
virtual void render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled);
virtual void render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled, vector<SKIN_OFFSET *> *modelOffsets = nullptr);
virtual void setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim = 0);
void renderHair(float scale, bool usecompiled);
void renderEars(float scale, bool usecompiled);