Fixed crashes
Fixed code for offsets preventing crashes. The amount of offsets is correctly obtain, but lacks the actual data.
This commit is contained in:
@@ -687,25 +687,6 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||
arm1->xRot -= ((float) (Mth::sin(bob * 0.067f)) * 0.05f);
|
||||
}
|
||||
|
||||
vector<SKIN_OFFSET *>* pModelOffsets=entity->getSkinOffsets();
|
||||
if (pModelOffsets!=nullptr)
|
||||
{
|
||||
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
|
||||
{
|
||||
switch (pModelOffset->ePart)
|
||||
{
|
||||
case eBodyOffset_Head:
|
||||
if (pModelOffset->fD == L'Y')
|
||||
head->y += pModelOffset->fO;
|
||||
break;
|
||||
case eBodyOffset_Body:
|
||||
if (pModelOffset->fD == L'Y')
|
||||
body->y += pModelOffset->fO;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (jacket != 0)
|
||||
{
|
||||
jacket->x = body->x;
|
||||
@@ -853,6 +834,14 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||
}
|
||||
}
|
||||
|
||||
void HumanoidModel::setOffset(int part, wchar_t direction, float amount)
|
||||
{
|
||||
if (part == 1)
|
||||
head->y += amount;
|
||||
else if (part == 2)
|
||||
body->y += amount;
|
||||
}
|
||||
|
||||
void HumanoidModel::renderHair(float scale,bool usecompiled)
|
||||
{
|
||||
hair->yRot = head->yRot;
|
||||
|
||||
@@ -85,6 +85,7 @@ public:
|
||||
HumanoidModel(float g, float yOffset, int texWidth, int texHeight, bool slimHands);
|
||||
virtual void render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled);
|
||||
virtual void setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim = 0);
|
||||
virtual void setOffset(int part, wchar_t direction, float amount);
|
||||
void renderHair(float scale, bool usecompiled);
|
||||
void renderEars(float scale, bool usecompiled);
|
||||
void renderCloak(float scale, bool usecompiled);
|
||||
|
||||
@@ -273,6 +273,23 @@ void PlayerRenderer::render(shared_ptr<Entity> _mob, double x, double y, double
|
||||
}
|
||||
}
|
||||
|
||||
vector<SKIN_OFFSET *>* pModelOffsets=mob->GetModelOffsets();
|
||||
if (pModelOffsets!=nullptr)
|
||||
{
|
||||
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
|
||||
{
|
||||
switch (pModelOffset->ePart)
|
||||
{
|
||||
case eBodyOffset_Head:
|
||||
resModel->setOffset(1, pModelOffset->fD, pModelOffset->fO);
|
||||
break;
|
||||
case eBodyOffset_Body:
|
||||
resModel->setOffset(2, pModelOffset->fD, pModelOffset->fO);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
armorParts1->bowAndArrow = armorParts2->bowAndArrow = resModel->bowAndArrow = false;
|
||||
armorParts1->sneaking = armorParts2->sneaking = resModel->sneaking = false;
|
||||
armorParts1->holdingRightHand = armorParts2->holdingRightHand = resModel->holdingRightHand = 0;
|
||||
|
||||
@@ -353,7 +353,6 @@ void Entity::_init(bool useSmallId, Level *level)
|
||||
// 4J Added
|
||||
m_ignoreVerticalCollisions = false;
|
||||
m_uiAnimOverrideBitmask = 0L;
|
||||
m_skinOffsets = nullptr;
|
||||
m_ignorePortal = false;
|
||||
}
|
||||
|
||||
@@ -2144,14 +2143,4 @@ unsigned int Entity::getAnimOverrideBitmask()
|
||||
}
|
||||
|
||||
return m_uiAnimOverrideBitmask;
|
||||
}
|
||||
|
||||
void Entity::setSkinOffsets(vector<SKIN_OFFSET *> *skinOffsets)
|
||||
{
|
||||
m_skinOffsets=skinOffsets;
|
||||
//app.DebugPrintf("!!! Setting skin offsets to %d\n",skinOffsets);
|
||||
}
|
||||
vector<SKIN_OFFSET *> *Entity::getSkinOffsets()
|
||||
{
|
||||
return m_skinOffsets;
|
||||
}
|
||||
@@ -422,12 +422,9 @@ public:
|
||||
|
||||
private:
|
||||
unsigned int m_uiAnimOverrideBitmask;
|
||||
vector<SKIN_OFFSET *> *m_skinOffsets;
|
||||
public:
|
||||
void setAnimOverrideBitmask(unsigned int uiBitmask);
|
||||
unsigned int getAnimOverrideBitmask();
|
||||
void setSkinOffsets(vector<SKIN_OFFSET *> *skinOffsets);
|
||||
vector<SKIN_OFFSET *> *getSkinOffsets();
|
||||
|
||||
// 4J added
|
||||
virtual bool isDespawnProtected() { return false; }
|
||||
|
||||
@@ -653,7 +653,6 @@ void Player::setCustomSkin(DWORD skinId)
|
||||
setIsIdle(false);
|
||||
|
||||
setAnimOverrideBitmask(getSkinAnimOverrideBitmask(skinId));
|
||||
setSkinOffsets(getSkinModelOffsets(skinId));
|
||||
if( !GET_IS_DLC_SKIN_FROM_BITMASK(skinId) )
|
||||
{
|
||||
// GET_UGC_SKIN_ID_FROM_BITMASK will always be zero - this was for a possible custom skin editor skin
|
||||
@@ -3198,8 +3197,6 @@ vector<SKIN_OFFSET *> *Player::GetModelOffsets()
|
||||
m_bCheckedForModelOffsets=true;
|
||||
}
|
||||
}
|
||||
|
||||
if(m_bCheckedForModelOffsets) setSkinOffsets(getSkinModelOffsets(m_dwSkinId));
|
||||
}
|
||||
return m_ppModelOffsets;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user