diff --git a/Minecraft.Client/HumanoidModel.cpp b/Minecraft.Client/HumanoidModel.cpp index bbe1a6ba..033f0d59 100644 --- a/Minecraft.Client/HumanoidModel.cpp +++ b/Minecraft.Client/HumanoidModel.cpp @@ -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* 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; diff --git a/Minecraft.Client/HumanoidModel.h b/Minecraft.Client/HumanoidModel.h index 504c1d18..9193acc8 100644 --- a/Minecraft.Client/HumanoidModel.h +++ b/Minecraft.Client/HumanoidModel.h @@ -85,6 +85,7 @@ public: HumanoidModel(float g, float yOffset, int texWidth, int texHeight, bool slimHands); virtual void render(shared_ptr 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, 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); diff --git a/Minecraft.Client/PlayerRenderer.cpp b/Minecraft.Client/PlayerRenderer.cpp index 7e20908c..8aecc6a1 100644 --- a/Minecraft.Client/PlayerRenderer.cpp +++ b/Minecraft.Client/PlayerRenderer.cpp @@ -273,6 +273,23 @@ void PlayerRenderer::render(shared_ptr _mob, double x, double y, double } } + vector* 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; diff --git a/Minecraft.World/Entity.cpp b/Minecraft.World/Entity.cpp index 143a1d55..1aabc350 100644 --- a/Minecraft.World/Entity.cpp +++ b/Minecraft.World/Entity.cpp @@ -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 *skinOffsets) -{ - m_skinOffsets=skinOffsets; - //app.DebugPrintf("!!! Setting skin offsets to %d\n",skinOffsets); -} -vector *Entity::getSkinOffsets() -{ - return m_skinOffsets; } \ No newline at end of file diff --git a/Minecraft.World/Entity.h b/Minecraft.World/Entity.h index 20e129c2..a738c2ba 100644 --- a/Minecraft.World/Entity.h +++ b/Minecraft.World/Entity.h @@ -422,12 +422,9 @@ public: private: unsigned int m_uiAnimOverrideBitmask; - vector *m_skinOffsets; public: void setAnimOverrideBitmask(unsigned int uiBitmask); unsigned int getAnimOverrideBitmask(); - void setSkinOffsets(vector *skinOffsets); - vector *getSkinOffsets(); // 4J added virtual bool isDespawnProtected() { return false; } diff --git a/Minecraft.World/Player.cpp b/Minecraft.World/Player.cpp index 5dfc23b1..f5b531d6 100644 --- a/Minecraft.World/Player.cpp +++ b/Minecraft.World/Player.cpp @@ -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 *Player::GetModelOffsets() m_bCheckedForModelOffsets=true; } } - - if(m_bCheckedForModelOffsets) setSkinOffsets(getSkinModelOffsets(m_dwSkinId)); } return m_ppModelOffsets; }