Renamed and added functions

Renamed functions with skin offset or model offset in there name to have skin adjustment instead. Added two functions in Player.cpp and Player.h to handle model types for player. Altered getModel() function in EntityRenderer.h and moved fuctionallity to EntityRenderer.cpp. Optimized write() function in TextureAndGeometryPacket.cpp with __fastcall (prevents crashes in multiplayer when instances are running on the same PC).
This commit is contained in:
Langtanium 2026-05-06 12:01:37 -07:00
parent 878547dec8
commit e8064d2ee3
21 changed files with 280 additions and 294 deletions

View file

@ -391,62 +391,62 @@ 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;
vector<SKIN_OFFSET *>* pSkinAdjustments = nullptr;
if (player != nullptr)
pModelOffsets = player->GetModelOffsets();
if (pModelOffsets != nullptr)
pSkinAdjustments = player->GetSkinAdjustments();
if (pSkinAdjustments != nullptr)
{
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
for( SKIN_OFFSET *pSkinAdjustment : *pSkinAdjustments )
{
switch (pModelOffset->ePart)
switch (pSkinAdjustment->ePart)
{
case eBodyOffset_Head:
if(pModelOffset->fD == 1)
headOffsets[0] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
headOffsets[1] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
headOffsets[2] += pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
headOffsets[0] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
headOffsets[1] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
headOffsets[2] += pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Body:
if(pModelOffset->fD == 1)
bodyOffsets[0] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
bodyOffsets[1] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
bodyOffsets[2] += pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
bodyOffsets[0] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
bodyOffsets[1] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
bodyOffsets[2] += pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Arm0:
if(pModelOffset->fD == 1)
arm0Offsets[0] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
arm0Offsets[1] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
arm0Offsets[2] += pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
arm0Offsets[0] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
arm0Offsets[1] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
arm0Offsets[2] += pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Arm1:
if(pModelOffset->fD == 1)
arm1Offsets[0] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
arm1Offsets[1] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
arm1Offsets[2] += pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
arm1Offsets[0] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
arm1Offsets[1] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
arm1Offsets[2] += pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Leg0:
if(pModelOffset->fD == 1)
leg0Offsets[0] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
leg0Offsets[1] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
leg0Offsets[2] += pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
leg0Offsets[0] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
leg0Offsets[1] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
leg0Offsets[2] += pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Leg1:
if(pModelOffset->fD == 1)
leg1Offsets[0] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
leg1Offsets[1] += pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
leg1Offsets[2] += pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
leg1Offsets[0] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
leg1Offsets[1] += pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
leg1Offsets[2] += pSkinAdjustment->fO / 16.0f;
break;
}
}
@ -581,7 +581,7 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
}
// This code is the same as above but allows for skin offsets to work in the skin select menu - Langtanium
void HumanoidModel::renderUIOffset(float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled, vector<SKIN_OFFSET *> *modelOffsets)
void HumanoidModel::renderUIAdjustments(float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled, vector<SKIN_OFFSET *> *skinAdjustments)
{
setupAnim(time, r, bob, yRot, xRot, scale, nullptr, m_uiAnimOverrideBitmask);
@ -591,62 +591,62 @@ void HumanoidModel::renderUIOffset(float time, float r, float bob, float yRot, f
vector<float> arm1Offsets = {0, 0, 0};
vector<float> leg0Offsets = {0, 0, 0};
vector<float> leg1Offsets = {0, 0, 0};
vector<SKIN_OFFSET *>* pModelOffsets = nullptr;
if (modelOffsets != nullptr)
pModelOffsets = modelOffsets;
if (pModelOffsets != nullptr)
vector<SKIN_OFFSET *>* pSkinAdjustments = nullptr;
if (skinAdjustments != nullptr)
pSkinAdjustments = skinAdjustments;
if (pSkinAdjustments != nullptr)
{
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
for( SKIN_OFFSET *pSkinAdjustment : *pSkinAdjustments )
{
switch (pModelOffset->ePart)
switch (pSkinAdjustment->ePart)
{
case eBodyOffset_Head:
if(pModelOffset->fD == 1)
headOffsets[0] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
headOffsets[1] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
headOffsets[2] = pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
headOffsets[0] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
headOffsets[1] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
headOffsets[2] = pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Body:
if(pModelOffset->fD == 1)
bodyOffsets[0] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
bodyOffsets[1] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
bodyOffsets[2] = pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
bodyOffsets[0] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
bodyOffsets[1] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
bodyOffsets[2] = pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Arm0:
if(pModelOffset->fD == 1)
arm0Offsets[0] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
arm0Offsets[1] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
arm0Offsets[2] = pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
arm0Offsets[0] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
arm0Offsets[1] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
arm0Offsets[2] = pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Arm1:
if(pModelOffset->fD == 1)
arm1Offsets[0] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
arm1Offsets[1] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
arm1Offsets[2] = pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
arm1Offsets[0] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
arm1Offsets[1] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
arm1Offsets[2] = pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Leg0:
if(pModelOffset->fD == 1)
leg0Offsets[0] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
leg0Offsets[1] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
leg0Offsets[2] = pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
leg0Offsets[0] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
leg0Offsets[1] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
leg0Offsets[2] = pSkinAdjustment->fO / 16.0f;
break;
case eBodyOffset_Leg1:
if(pModelOffset->fD == 1)
leg1Offsets[0] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 2)
leg1Offsets[1] = pModelOffset->fO / 16.0f;
else if(pModelOffset->fD == 3)
leg1Offsets[2] = pModelOffset->fO / 16.0f;
if(pSkinAdjustment->fD == 1)
leg1Offsets[0] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 2)
leg1Offsets[1] = pSkinAdjustment->fO / 16.0f;
else if(pSkinAdjustment->fD == 3)
leg1Offsets[2] = pSkinAdjustment->fO / 16.0f;
break;
}
}
@ -797,80 +797,80 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
if (m_isArmor)
{
shared_ptr<Player> player = dynamic_pointer_cast<Player>(entity);
vector<SKIN_OFFSET *>* pModelOffsets = nullptr;
vector<SKIN_OFFSET *>* pSkinAdjustments = nullptr;
if (player != nullptr)
pModelOffsets = player->GetModelOffsets();
if (pModelOffsets != nullptr)
pSkinAdjustments = player->GetSkinAdjustments();
if (pSkinAdjustments != nullptr)
{
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
for( SKIN_OFFSET *pSkinAdjustment : *pSkinAdjustments )
{
switch (pModelOffset->ePart)
switch (pSkinAdjustment->ePart)
{
case eBodyOffset_Helmet:
if(pModelOffset->fD == 1)
headOffsets[0] += pModelOffset->fO;
else if(pModelOffset->fD == 2)
headOffsets[1] += pModelOffset->fO;
else if(pModelOffset->fD == 3)
headOffsets[2] += pModelOffset->fO;
if(pSkinAdjustment->fD == 1)
headOffsets[0] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 2)
headOffsets[1] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 3)
headOffsets[2] += pSkinAdjustment->fO;
case eBodyOffset_Belt:
if (!body->isArmorPart1)
{
if(pModelOffset->fD == 1)
bodyOffsets[0] += pModelOffset->fO;
else if(pModelOffset->fD == 2)
bodyOffsets[1] += pModelOffset->fO;
else if(pModelOffset->fD == 3)
bodyOffsets[2] += pModelOffset->fO;
if(pSkinAdjustment->fD == 1)
bodyOffsets[0] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 2)
bodyOffsets[1] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 3)
bodyOffsets[2] += pSkinAdjustment->fO;
}
break;
case eBodyOffset_BodyArmor:
if (body->isArmorPart1)
{
if(pModelOffset->fD == 1)
bodyOffsets[0] += pModelOffset->fO;
else if(pModelOffset->fD == 2)
bodyOffsets[1] += pModelOffset->fO;
else if(pModelOffset->fD == 3)
bodyOffsets[2] += pModelOffset->fO;
if(pSkinAdjustment->fD == 1)
bodyOffsets[0] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 2)
bodyOffsets[1] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 3)
bodyOffsets[2] += pSkinAdjustment->fO;
}
break;
case eBodyOffset_ArmArmor0:
if(pModelOffset->fD == 1)
arm0Offsets[0] += pModelOffset->fO;
else if(pModelOffset->fD == 2)
arm0Offsets[1] += pModelOffset->fO;
else if(pModelOffset->fD == 3)
arm0Offsets[2] += pModelOffset->fO;
if(pSkinAdjustment->fD == 1)
arm0Offsets[0] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 2)
arm0Offsets[1] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 3)
arm0Offsets[2] += pSkinAdjustment->fO;
break;
case eBodyOffset_ArmArmor1:
if(pModelOffset->fD == 1)
arm1Offsets[0] += pModelOffset->fO;
else if(pModelOffset->fD == 2)
arm1Offsets[1] += pModelOffset->fO;
else if(pModelOffset->fD == 3)
arm1Offsets[2] += pModelOffset->fO;
if(pSkinAdjustment->fD == 1)
arm1Offsets[0] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 2)
arm1Offsets[1] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 3)
arm1Offsets[2] += pSkinAdjustment->fO;
break;
case eBodyOffset_Boot0:
if (leg0->isArmorPart1)
{
if(pModelOffset->fD == 1)
leg0Offsets[0] += pModelOffset->fO;
else if(pModelOffset->fD == 2)
leg0Offsets[1] += pModelOffset->fO;
else if(pModelOffset->fD == 3)
leg0Offsets[2] += pModelOffset->fO;
if(pSkinAdjustment->fD == 1)
leg0Offsets[0] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 2)
leg0Offsets[1] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 3)
leg0Offsets[2] += pSkinAdjustment->fO;
}
break;
case eBodyOffset_Boot1:
if (leg1->isArmorPart1)
{
if(pModelOffset->fD == 1)
leg1Offsets[0] += pModelOffset->fO;
else if(pModelOffset->fD == 2)
leg1Offsets[1] += pModelOffset->fO;
else if(pModelOffset->fD == 3)
leg1Offsets[2] += pModelOffset->fO;
if(pSkinAdjustment->fD == 1)
leg1Offsets[0] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 2)
leg1Offsets[1] += pSkinAdjustment->fO;
else if(pSkinAdjustment->fD == 3)
leg1Offsets[2] += pSkinAdjustment->fO;
}
break;
}