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

@ -100,9 +100,9 @@ void Player::_init()
m_ppAdditionalModelParts=nullptr;
m_bCheckedForModelParts=false;
m_bCheckedDLCForModelParts=false;
m_ppModelOffsets=nullptr;
m_bCheckedForModelOffsets=false;
m_bCheckedDLCForModelOffsets=false;
m_ppSkinAdjustments=nullptr;
m_bCheckedForSkinAdjustments=false;
m_bCheckedDLCForSkinAdjustments=false;
#if defined(__PS3__) || defined(__ORBIS__)
m_ePlayerNameValidState=ePlayerNameValid_NotSet;
@ -716,10 +716,10 @@ void Player::setCustomSkin(DWORD skinId)
// reset the check for model parts
m_bCheckedForModelParts=false;
m_bCheckedDLCForModelParts=false;
m_bCheckedForModelOffsets=false;
m_bCheckedDLCForModelOffsets=false;
m_bCheckedForSkinAdjustments=false;
m_bCheckedDLCForSkinAdjustments=false;
this->SetAdditionalModelParts(nullptr);
this->SetModelOffsets(nullptr);
this->SetSkinAdjustments(nullptr);
}
@ -765,10 +765,10 @@ unsigned int Player::getSkinAnimOverrideBitmask(DWORD skinId)
return bitmask;
}
vector<SKIN_OFFSET *> *Player::getSkinModelOffsets(DWORD skinId)
vector<SKIN_OFFSET *> *Player::getSkinAdjustments(DWORD skinId)
{
vector<SKIN_OFFSET *> *skinOffsets = app.GetModelOffsets(skinId);
return skinOffsets;
vector<SKIN_OFFSET *> *skinAdjustments = app.GetSkinAdjustments(skinId);
return skinAdjustments;
}
void Player::setXuid(PlayerUID xuid)
@ -3164,45 +3164,59 @@ vector<ModelPart *> *Player::GetAdditionalModelParts()
return m_ppAdditionalModelParts;
}
vector<SKIN_OFFSET *> *Player::GetModelOffsets()
vector<SKIN_OFFSET *> *Player::GetSkinAdjustments()
{
if(m_ppModelOffsets==nullptr && !m_bCheckedForModelOffsets)
if(m_ppSkinAdjustments==nullptr && !m_bCheckedForSkinAdjustments)
{
bool hasCustomTexture = !customTextureUrl.empty();
bool customTextureIsDefaultSkin = customTextureUrl.substr(0,3).compare(L"def") == 0;
// see if we can find the parts
m_ppModelOffsets=app.GetModelOffsets(m_dwSkinId);
m_ppSkinAdjustments=app.GetSkinAdjustments(m_dwSkinId);
// If it's a default texture (which has no parts), we have the parts, or we already have the texture (in which case we should have parts if there are any) then we are done
if(!hasCustomTexture || customTextureIsDefaultSkin || m_ppModelOffsets != nullptr || app.IsFileInMemoryTextures(customTextureUrl))
if(!hasCustomTexture || customTextureIsDefaultSkin || m_ppSkinAdjustments != nullptr || app.IsFileInMemoryTextures(customTextureUrl))
{
m_bCheckedForModelOffsets=true;
m_bCheckedForSkinAdjustments=true;
}
if(m_ppModelOffsets == nullptr && !m_bCheckedDLCForModelOffsets)
if(m_ppSkinAdjustments == nullptr && !m_bCheckedDLCForSkinAdjustments)
{
m_bCheckedDLCForModelOffsets = true;
m_bCheckedDLCForSkinAdjustments = true;
// we don't have the data from the dlc skin yet
app.DebugPrintf("m_bCheckedForModelOffsets Couldn't get model offsets for skin %X\n",m_dwSkinId);
app.DebugPrintf("m_bCheckedForModelOffsets Couldn't get skin adjustments for skin %X\n",m_dwSkinId);
// do we have it from the DLC pack?
DLCSkinFile *pDLCSkinFile = app.m_dlcManager.getSkinFile(this->customTextureUrl);
if(pDLCSkinFile!=nullptr)
{
DWORD dwBoxC=pDLCSkinFile->getOffsetsCount();
if(dwBoxC!=0)
DWORD dwOffsetC=pDLCSkinFile->getOffsetsCount();
if(dwOffsetC!=0)
{
app.DebugPrintf("m_bCheckedForModelOffsets Got model offsets from DLCskin for skin %X\n",m_dwSkinId);
m_ppModelOffsets=app.SetSkinOffsets(m_dwSkinId,pDLCSkinFile->getOffsets());
app.DebugPrintf("m_bCheckedForSkinAdjustments Got skin adjustments from DLCskin for skin %X\n",m_dwSkinId);
m_ppSkinAdjustments=app.SetSkinAdjustments(m_dwSkinId,pDLCSkinFile->getOffsets());
}
m_bCheckedForModelOffsets=true;
m_bCheckedForSkinAdjustments=true;
}
}
}
return m_ppModelOffsets;
return m_ppSkinAdjustments;
}
int Player::GetModelTypeFromAnimBitmask(unsigned int uiAnimOverrideBitmask)
{
if (uiAnimOverrideBitmask&(1<<HumanoidModel::eAnim_SlimModel)) return 2;
else if (uiAnimOverrideBitmask&(1<<HumanoidModel::eAnim_WideModel)) return 1;
return 0;
}
int Player::GetModelTypeFromTextureId(int textureId)
{
if (textureId > 44 && textureId < 54) return 2;
else if (textureId == 54) return 1;
else return 0;
}
void Player::SetAdditionalModelParts(vector<ModelPart *> *ppAdditionalModelParts)
@ -3210,9 +3224,9 @@ void Player::SetAdditionalModelParts(vector<ModelPart *> *ppAdditionalModelParts
m_ppAdditionalModelParts=ppAdditionalModelParts;
}
void Player::SetModelOffsets(vector<SKIN_OFFSET *> *ppModelOffsets)
void Player::SetSkinAdjustments(vector<SKIN_OFFSET *> *ppSkinAdjustments)
{
m_ppModelOffsets=ppModelOffsets;
m_ppSkinAdjustments=ppSkinAdjustments;
}
#if defined(__PS3__) || defined(__ORBIS__)