Revert "Fixed skin offset leak and removed skin item offset"

This reverts commit 25918293e8.
This commit is contained in:
Langtanium
2026-06-22 15:10:25 -07:00
parent 25918293e8
commit a4cc0659b5
2 changed files with 20 additions and 745 deletions

View File

@@ -78,8 +78,6 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
this->texWidth = texWidth;
this->texHeight = texHeight;
m_is64x64 = texHeight == 64;
jacket = nullptr;
sleeve0 = nullptr;
sleeve1 = nullptr;
@@ -123,7 +121,7 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
body->addHumanoidBox(-4, 0, -2, 8, 12, 4, g); // Body
body->setPos(0, 0 + yOffset, 0);
if (m_is64x64)
if ((texWidth == 64 && texHeight == 64) && !force32)
{
arm0 = new ModelPart(this, 24 + 16, 16);
arm1 = new ModelPart(this, 16 + 16, 48);
@@ -145,7 +143,7 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
sleeve0->setPos(-5, 2 + yOffset, 0);
sleeve1->setPos(5, 2 + yOffset, 0);
}
else if (!m_is64x64)
else if ((texWidth == 64 && texHeight == 32) || force32)
{
arm0 = new ModelPart(this, 24 + 16, 16);
arm1 = new ModelPart(this, 24 + 16, 16);
@@ -168,22 +166,7 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
if (mirror == true)
arm1->bMirror = true;
if (!slim)
{
arm0->addHumanoidBox(-3, -2, -2, 4, 12, 4, g); // Arm0
arm1->addHumanoidBox(-1, -2, -2, 4, 12, 4, g); // Arm1
}
else if (slim)
{
arm0->addHumanoidBox(-2, -2, -2, 3, 12, 4, g); // Arm0 Slim
arm1->addHumanoidBox(-1, -2, -2, 3, 12, 4, g); // Arm1 Slim
}
arm0->setPos(-5, 2 + yOffset, 0);
arm1->setPos(5, 2 + yOffset, 0);
leg0 = new ModelPart(this, 0, 16);
if (m_is64x64)
if ((texWidth == 64 && texHeight == 64) && !force32)
{
leg0 = new ModelPart(this, 0, 16);
leg1 = new ModelPart(this, 16, 48);
@@ -196,7 +179,7 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
pants1->addHumanoidBox(-2, 0, -2, 4, 12, 4, g + 0.5);
pants1->setPos(1.9, 12 + yOffset, 0);
}
else if (!m_is64x64)
else if ((texWidth == 64 && texHeight == 32) || force32)
{
leg0 = new ModelPart(this, 0, 16);
leg1 = new ModelPart(this, 0, 16);
@@ -225,25 +208,16 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
leg1->compile(1.0f/16.0f);
hair->compile(1.0f/16.0f);
if (m_is64x64)
{
if (jacket != 0)
jacket->compile(1.0f/16.0f);
if (sleeve0 != 0)
sleeve0->compile(1.0f/16.0f);
if (sleeve1 != 0)
sleeve1->compile(1.0f/16.0f);
if (pants0 != 0)
pants0->compile(1.0f/16.0f);
if (pants1 != 0)
pants1->compile(1.0f/16.0f);
waist->compile(1.0f/16.0f);
belt->compile(1.0f/16.0f);
bodyArmor->compile(1.0f/16.0f);
armArmor0->compile(1.0f/16.0f);
armArmor1->compile(1.0f/16.0f);
legging0->compile(1.0f/16.0f);
legging1->compile(1.0f/16.0f);
sock0->compile(1.0f/16.0f);
sock1->compile(1.0f/16.0f);
boot0->compile(1.0f/16.0f);
boot1->compile(1.0f/16.0f);
}
holdingLeftHand=0;
holdingRightHand=0;
@@ -297,400 +271,6 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
if(entity != nullptr)
{
m_uiAnimOverrideBitmask=entity->getAnimOverrideBitmask();
// Reset offsets so they don't leak onto other skins - Langtanium
head->translateX = 0;
head->translateY = 0;
head->translateZ = 0;
hair->translateX = 0;
hair->translateY = 0;
hair->translateZ = 0;
body->translateX = 0;
body->translateY = 0;
body->translateZ = 0;
arm0->translateX = 0;
arm0->translateY = 0;
arm0->translateZ = 0;
arm1->translateX = 0;
arm1->translateY = 0;
arm1->translateZ = 0;
leg0->translateX = 0;
leg0->translateY = 0;
leg0->translateZ = 0;
leg1->translateX = 0;
leg1->translateY = 0;
leg1->translateZ = 0;
if (m_is64x64)
{
jacket->translateX = 0;
jacket->translateY = 0;
jacket->translateZ = 0;
sleeve0->translateX = 0;
sleeve0->translateY = 0;
sleeve0->translateZ = 0;
sleeve1->translateX = 0;
sleeve1->translateY = 0;
sleeve1->translateZ = 0;
pants0->translateX = 0;
pants0->translateY = 0;
pants0->translateZ = 0;
pants1->translateX = 0;
pants1->translateY = 0;
pants1->translateZ = 0;
bodyArmor->translateX = 0;
bodyArmor->translateY = 0;
bodyArmor->translateZ = 0;
waist->translateX = 0;
waist->translateY = 0;
waist->translateZ = 0;
belt->translateX = 0;
belt->translateY = 0;
belt->translateZ = 0;
armArmor0->translateX = 0;
armArmor0->translateY = 0;
armArmor0->translateZ = 0;
armArmor1->translateX = 0;
armArmor1->translateY = 0;
armArmor1->translateZ = 0;
legging0->translateX = 0;
legging0->translateY = 0;
legging0->translateZ = 0;
legging1->translateX = 0;
legging1->translateY = 0;
legging1->translateZ = 0;
sock0->translateX = 0;
sock0->translateY = 0;
sock0->translateZ = 0;
sock1->translateX = 0;
sock1->translateY = 0;
sock1->translateZ = 0;
boot0->translateX = 0;
boot0->translateY = 0;
boot0->translateZ = 0;
boot1->translateX = 0;
boot1->translateY = 0;
boot1->translateZ = 0;
}
shared_ptr<Player> player = dynamic_pointer_cast<Player>(entity);
vector<SKIN_OFFSET *>* pSkinOffsets = nullptr;
if (player != nullptr)
pSkinOffsets = player->GetSkinOffsets();
if (pSkinOffsets != nullptr)
{
for( SKIN_OFFSET *pSkinOffset : *pSkinOffsets )
{
switch (pSkinOffset->ePart)
{
case eBodyOffset_Head:
if (pSkinOffset->fD == 1 && head->translateX == 0)
{
head->translateX = pSkinOffset->fO / 16.0f;
hair->translateX = pSkinOffset->fO / 16.0f;
headOffsets[0] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && head->translateY == 0)
{
head->translateY = pSkinOffset->fO / 16.0f;
hair->translateY = pSkinOffset->fO / 16.0f;
headOffsets[1] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && head->translateZ == 0)
{
head->translateZ = pSkinOffset->fO / 16.0f;
hair->translateZ = pSkinOffset->fO / 16.0f;
headOffsets[2] = pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Body:
if (pSkinOffset->fD == 1 && body->translateX == 0)
{
body->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
jacket->translateX = pSkinOffset->fO / 16.0f;
bodyArmor->translateX = pSkinOffset->fO / 16.0f;
waist->translateX = pSkinOffset->fO / 16.0f;
belt->translateX = pSkinOffset->fO / 16.0f;
}
bodyOffsets[0] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && body->translateY == 0)
{
body->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
jacket->translateY = pSkinOffset->fO / 16.0f;
bodyArmor->translateY = pSkinOffset->fO / 16.0f;
waist->translateY = pSkinOffset->fO / 16.0f;
belt->translateY = pSkinOffset->fO / 16.0f;
}
bodyOffsets[1] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && body->translateZ == 0)
{
body->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
jacket->translateZ = pSkinOffset->fO / 16.0f;
bodyArmor->translateZ = pSkinOffset->fO / 16.0f;
waist->translateZ = pSkinOffset->fO / 16.0f;
belt->translateZ = pSkinOffset->fO / 16.0f;
}
bodyOffsets[2] = pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Arm0:
if (pSkinOffset->fD == 1 && arm0->translateX == 0)
{
arm0->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve0->translateX = pSkinOffset->fO / 16.0f;
armArmor0->translateX = pSkinOffset->fO / 16.0f;
}
arm0Offsets[0] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && arm0->translateY == 0)
{
arm0->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve0->translateY = pSkinOffset->fO / 16.0f;
armArmor0->translateY = pSkinOffset->fO / 16.0f;
}
arm0Offsets[1] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && arm0->translateZ == 0)
{
arm0->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve0->translateZ = pSkinOffset->fO / 16.0f;
armArmor0->translateZ = pSkinOffset->fO / 16.0f;
}
arm0Offsets[2] = pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Arm1:
if (pSkinOffset->fD == 1 && arm1->translateX == 0)
{
arm1->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve1->translateX = pSkinOffset->fO / 16.0f;
armArmor1->translateX = pSkinOffset->fO / 16.0f;
}
arm1Offsets[0] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && arm1->translateY == 0)
{
arm1->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve1->translateY = pSkinOffset->fO / 16.0f;
armArmor1->translateY = pSkinOffset->fO / 16.0f;
}
arm1Offsets[1] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && arm1->translateZ == 0)
{
arm1->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve1->translateZ = pSkinOffset->fO / 16.0f;
armArmor1->translateZ = pSkinOffset->fO / 16.0f;
}
arm1Offsets[2] = pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Leg0:
if (pSkinOffset->fD == 1 && leg0->translateX == 0)
{
leg0->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants0->translateX = pSkinOffset->fO / 16.0f;
legging0->translateX = pSkinOffset->fO / 16.0f;
sock0->translateX = pSkinOffset->fO / 16.0f;
boot0->translateX = pSkinOffset->fO / 16.0f;
}
leg0Offsets[0] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && leg0->translateY == 0)
{
leg0->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants0->translateY = pSkinOffset->fO / 16.0f;
legging0->translateY = pSkinOffset->fO / 16.0f;
sock0->translateY = pSkinOffset->fO / 16.0f;
boot0->translateY = pSkinOffset->fO / 16.0f;
}
leg0Offsets[1] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && leg0->translateZ == 0)
{
leg0->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants0->translateZ = pSkinOffset->fO / 16.0f;
legging0->translateZ = pSkinOffset->fO / 16.0f;
sock0->translateZ = pSkinOffset->fO / 16.0f;
boot0->translateZ = pSkinOffset->fO / 16.0f;
}
leg0Offsets[2] = pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Leg1:
if (pSkinOffset->fD == 1 && leg1->translateX == 0)
{
leg1->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants1->translateX = pSkinOffset->fO / 16.0f;
legging1->translateX = pSkinOffset->fO / 16.0f;
sock1->translateX = pSkinOffset->fO / 16.0f;
boot1->translateX = pSkinOffset->fO / 16.0f;
}
leg1Offsets[0] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && leg1->translateY == 0)
{
leg1->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants1->translateY = pSkinOffset->fO / 16.0f;
legging1->translateY = pSkinOffset->fO / 16.0f;
sock1->translateY = pSkinOffset->fO / 16.0f;
boot1->translateY = pSkinOffset->fO / 16.0f;
}
leg1Offsets[1] = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && leg1->translateZ == 0)
{
leg1->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants1->translateZ = pSkinOffset->fO / 16.0f;
legging1->translateZ = pSkinOffset->fO / 16.0f;
sock1->translateZ = pSkinOffset->fO / 16.0f;
boot1->translateZ = pSkinOffset->fO / 16.0f;
}
leg1Offsets[2] = pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Helmet:
if (m_isArmor)
{
if (pSkinOffset->fD == 1 && head->translateX == headOffsets[0])
{
head->translateX += pSkinOffset->fO / 16.0f;
hair->translateX += pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && head->translateY == headOffsets[1])
{
head->translateY += pSkinOffset->fO / 16.0f;
hair->translateY += pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && head->translateZ == headOffsets[2])
{
head->translateZ += pSkinOffset->fO / 16.0f;
hair->translateZ += pSkinOffset->fO / 16.0f;
}
}
break;
case eBodyOffset_BodyArmor:
if (m_isArmor && !body->isArmorPart2)
{
if (pSkinOffset->fD == 1 && body->translateX == bodyOffsets[0])
body->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && body->translateY == bodyOffsets[1])
body->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && body->translateZ == bodyOffsets[2])
body->translateZ += pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_ArmArmor0:
if (m_isArmor)
{
if (pSkinOffset->fD == 1 && arm0->translateX == arm0Offsets[0])
arm0->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && arm0->translateY == arm0Offsets[1])
arm0->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && arm0->translateZ == arm0Offsets[2])
arm0->translateZ += pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_ArmArmor1:
if (m_isArmor)
{
if (pSkinOffset->fD == 1 && arm1->translateX == arm1Offsets[0])
arm1->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && arm1->translateY == arm1Offsets[1])
arm1->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && arm1->translateZ == arm1Offsets[2])
arm1->translateZ += pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Waist:
if (m_isArmor && body->isArmorPart2)
{
if (pSkinOffset->fD == 1 && body->translateX == bodyOffsets[0])
body->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && body->translateY == bodyOffsets[1])
body->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && body->translateZ == bodyOffsets[2])
body->translateZ += pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Legging0:
if (m_isArmor && leg0->isArmorPart2)
{
if (pSkinOffset->fD == 1 && leg0->translateX == leg0Offsets[0])
leg0->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && leg0->translateY == leg0Offsets[1])
leg0->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && leg0->translateZ == leg0Offsets[2])
leg0->translateZ += pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Legging1:
if (m_isArmor && leg1->isArmorPart2)
{
if (pSkinOffset->fD == 1 && leg1->translateX == leg1Offsets[0])
leg1->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && leg1->translateY == leg1Offsets[1])
leg1->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && leg1->translateZ == leg1Offsets[2])
leg1->translateZ += pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Boot0:
if (m_isArmor && !leg0->isArmorPart2)
{
if (pSkinOffset->fD == 1 && leg0->translateX == leg0Offsets[0])
leg0->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && leg0->translateY == leg0Offsets[1])
leg0->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && leg0->translateZ == leg0Offsets[2])
leg0->translateZ += pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Boot1:
if (m_isArmor && !leg1->isArmorPart2)
{
if (pSkinOffset->fD == 1 && leg1->translateX == leg1Offsets[0])
leg1->translateX += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 2 && leg1->translateY == leg1Offsets[1])
leg1->translateY += pSkinOffset->fO / 16.0f;
else if (pSkinOffset->fD == 3 && leg1->translateZ == leg1Offsets[2])
leg1->translateZ += pSkinOffset->fO / 16.0f;
}
break;
}
}
}
}
setupAnim(time, r, bob, yRot, xRot, scale, entity, m_uiAnimOverrideBitmask);
@@ -713,14 +293,16 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
leg1->render(scale, usecompiled);
hair->render(scale, usecompiled);
if (m_is64x64)
{
if (jacket)
jacket->render(scale, usecompiled);
if (sleeve0)
sleeve0->render(scale, usecompiled);
if (sleeve1)
sleeve1->render(scale, usecompiled);
if (pants0)
pants0->render(scale, usecompiled);
if (pants1)
pants1->render(scale, usecompiled);
}
glPopMatrix();
}
@@ -733,322 +315,17 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
leg0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg0))>0);
leg1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg1))>0);
hair->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHair))>0);
if (m_is64x64)
{
if (jacket)
jacket->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderJacket))>0);
if (sleeve0)
sleeve0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve0))>0);
if (sleeve1)
sleeve1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve1))>0);
if (pants0)
pants0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants0))>0);
if (pants1)
pants1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants1))>0);
waist->render(scale, usecompiled);
belt->render(scale, usecompiled);
bodyArmor->render(scale, usecompiled);
armArmor0->render(scale, usecompiled);
armArmor1->render(scale, usecompiled);
legging0->render(scale, usecompiled);
legging1->render(scale, usecompiled);
sock0->render(scale, usecompiled);
sock1->render(scale, usecompiled);
boot0->render(scale, usecompiled);
boot1->render(scale, usecompiled);
}
}
}
// This code is similar to what's above, but allows skin offsets to work in the skin select menu - Langtanium
void HumanoidModel::renderUI(float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled, vector<SKIN_OFFSET *> *skinOffsets)
{
// Reset offsets so they don't leak onto other skins - Langtanium
head->translateX = 0;
head->translateY = 0;
head->translateZ = 0;
hair->translateX = 0;
hair->translateY = 0;
hair->translateZ = 0;
body->translateX = 0;
body->translateY = 0;
body->translateZ = 0;
arm0->translateX = 0;
arm0->translateY = 0;
arm0->translateZ = 0;
arm1->translateX = 0;
arm1->translateY = 0;
arm1->translateZ = 0;
leg0->translateX = 0;
leg0->translateY = 0;
leg0->translateZ = 0;
leg1->translateX = 0;
leg1->translateY = 0;
leg1->translateZ = 0;
if (m_is64x64)
{
jacket->translateX = 0;
jacket->translateY = 0;
jacket->translateZ = 0;
sleeve0->translateX = 0;
sleeve0->translateY = 0;
sleeve0->translateZ = 0;
sleeve1->translateX = 0;
sleeve1->translateY = 0;
sleeve1->translateZ = 0;
pants0->translateX = 0;
pants0->translateY = 0;
pants0->translateZ = 0;
pants1->translateX = 0;
pants1->translateY = 0;
pants1->translateZ = 0;
bodyArmor->translateX = 0;
bodyArmor->translateY = 0;
bodyArmor->translateZ = 0;
waist->translateX = 0;
waist->translateY = 0;
waist->translateZ = 0;
belt->translateX = 0;
belt->translateY = 0;
belt->translateZ = 0;
armArmor0->translateX = 0;
armArmor0->translateY = 0;
armArmor0->translateZ = 0;
armArmor1->translateX = 0;
armArmor1->translateY = 0;
armArmor1->translateZ = 0;
legging0->translateX = 0;
legging0->translateY = 0;
legging0->translateZ = 0;
legging1->translateX = 0;
legging1->translateY = 0;
legging1->translateZ = 0;
sock0->translateX = 0;
sock0->translateY = 0;
sock0->translateZ = 0;
sock1->translateX = 0;
sock1->translateY = 0;
sock1->translateZ = 0;
boot0->translateX = 0;
boot0->translateY = 0;
boot0->translateZ = 0;
boot1->translateX = 0;
boot1->translateY = 0;
boot1->translateZ = 0;
}
if (skinOffsets != nullptr)
{
for( SKIN_OFFSET *pSkinOffset : *skinOffsets )
{
switch (pSkinOffset->ePart)
{
case eBodyOffset_Head:
if (pSkinOffset->fD == 1 && head->translateX == 0)
{
head->translateX = pSkinOffset->fO / 16.0f;
hair->translateX = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 2 && head->translateY == 0)
{
head->translateY = pSkinOffset->fO / 16.0f;
hair->translateY = pSkinOffset->fO / 16.0f;
}
else if (pSkinOffset->fD == 3 && head->translateZ == 0)
{
head->translateZ = pSkinOffset->fO / 16.0f;
hair->translateZ = pSkinOffset->fO / 16.0f;
}
break;
case eBodyOffset_Body:
if (pSkinOffset->fD == 1 && body->translateX == 0)
{
body->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
jacket->translateX = pSkinOffset->fO / 16.0f;
bodyArmor->translateX = pSkinOffset->fO / 16.0f;
waist->translateX = pSkinOffset->fO / 16.0f;
belt->translateX = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 2 && body->translateY == 0)
{
body->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
jacket->translateY = pSkinOffset->fO / 16.0f;
bodyArmor->translateY = pSkinOffset->fO / 16.0f;
waist->translateY = pSkinOffset->fO / 16.0f;
belt->translateY = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 3 && body->translateZ == 0)
{
body->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
jacket->translateZ = pSkinOffset->fO / 16.0f;
bodyArmor->translateZ = pSkinOffset->fO / 16.0f;
waist->translateZ = pSkinOffset->fO / 16.0f;
belt->translateZ = pSkinOffset->fO / 16.0f;
}
}
break;
case eBodyOffset_Arm0:
if (pSkinOffset->fD == 1 && arm0->translateX == 0)
{
arm0->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve0->translateX = pSkinOffset->fO / 16.0f;
armArmor0->translateX = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 2 && arm0->translateY == 0)
{
arm0->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve0->translateY = pSkinOffset->fO / 16.0f;
armArmor0->translateY = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 3 && arm0->translateZ == 0)
{
arm0->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve0->translateZ = pSkinOffset->fO / 16.0f;
armArmor0->translateZ = pSkinOffset->fO / 16.0f;
}
}
break;
case eBodyOffset_Arm1:
if (pSkinOffset->fD == 1 && arm1->translateX == 0)
{
arm1->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve1->translateX = pSkinOffset->fO / 16.0f;
armArmor1->translateX = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 2 && arm1->translateY == 0)
{
arm1->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve1->translateY = pSkinOffset->fO / 16.0f;
armArmor1->translateY = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 3 && arm1->translateZ == 0)
{
arm1->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
sleeve1->translateZ = pSkinOffset->fO / 16.0f;
armArmor1->translateZ = pSkinOffset->fO / 16.0f;
}
}
break;
case eBodyOffset_Leg0:
if (pSkinOffset->fD == 1 && leg0->translateX == 0)
{
leg0->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants0->translateX = pSkinOffset->fO / 16.0f;
legging0->translateX = pSkinOffset->fO / 16.0f;
sock0->translateX = pSkinOffset->fO / 16.0f;
boot0->translateX = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 2 && leg0->translateY == 0)
{
leg0->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants0->translateY = pSkinOffset->fO / 16.0f;
legging0->translateY = pSkinOffset->fO / 16.0f;
sock0->translateY = pSkinOffset->fO / 16.0f;
boot0->translateY = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 3 && leg0->translateZ == 0)
{
leg0->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants0->translateZ = pSkinOffset->fO / 16.0f;
legging0->translateZ = pSkinOffset->fO / 16.0f;
sock0->translateZ = pSkinOffset->fO / 16.0f;
boot0->translateZ = pSkinOffset->fO / 16.0f;
}
}
break;
case eBodyOffset_Leg1:
if (pSkinOffset->fD == 1 && leg1->translateX == 0)
{
leg1->translateX = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants1->translateX = pSkinOffset->fO / 16.0f;
legging1->translateX = pSkinOffset->fO / 16.0f;
sock1->translateX = pSkinOffset->fO / 16.0f;
boot1->translateX = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 2 && leg1->translateY == 0)
{
leg1->translateY = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants1->translateY = pSkinOffset->fO / 16.0f;
legging1->translateY = pSkinOffset->fO / 16.0f;
sock1->translateY = pSkinOffset->fO / 16.0f;
boot1->translateY = pSkinOffset->fO / 16.0f;
}
}
else if (pSkinOffset->fD == 3 && leg1->translateZ == 0)
{
leg1->translateZ = pSkinOffset->fO / 16.0f;
if (m_is64x64)
{
pants1->translateZ = pSkinOffset->fO / 16.0f;
legging1->translateZ = pSkinOffset->fO / 16.0f;
sock1->translateZ = pSkinOffset->fO / 16.0f;
boot1->translateZ = pSkinOffset->fO / 16.0f;
}
}
break;
}
}
}
setupAnim(time, r, bob, yRot, xRot, scale, nullptr, m_uiAnimOverrideBitmask);
head->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHead))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorHead))>0||!m_isArmor));
body->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderTorso))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorTorso))>0||!m_isArmor));
arm0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderArm0))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorArm0))>0||!m_isArmor));
arm1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderArm1))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorArm1))>0||!m_isArmor));
leg0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg0))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorLeg0))>0||!m_isArmor));
leg1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg1))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorLeg1))>0||!m_isArmor));
hair->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHair))>0);
if (m_is64x64)
{
jacket->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderJacket))>0);
sleeve0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve0))>0);
sleeve1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve1))>0);
pants0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants0))>0);
pants1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants1))>0);
waist->render(scale, usecompiled);
belt->render(scale, usecompiled);
bodyArmor->render(scale, usecompiled);
armArmor0->render(scale, usecompiled);
armArmor1->render(scale, usecompiled);
legging0->render(scale, usecompiled);
legging1->render(scale, usecompiled);
sock0->render(scale, usecompiled);
sock1->render(scale, usecompiled);
boot0->render(scale, usecompiled);
boot1->render(scale, usecompiled);
}
}

View File

@@ -15,8 +15,6 @@ public:
float eating_swing;
bool elytraFlying;
bool elytraCrouching;
bool m_isArmor;
bool m_is64x64;
unsigned int m_uiAnimOverrideBitmask;
float m_fYOffset;
enum animbits