Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 21 additions & 13 deletions Minecraft.Client/HumanoidModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,10 @@ HumanoidModel::HumanoidModel(float g, float yOffset, int texWidth, int texHeight
_init(g,yOffset,texWidth,texHeight);
}

bool HumanoidModel::bitmaskEnabled(unsigned int uiBitmask, animbits bit)
{
return (uiBitmask&(1<<bit))>0;
}
void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled)
{
if(entity != nullptr)
Expand Down Expand Up @@ -185,6 +189,7 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
//bool bIsAttacking = (attackTime > -9990.0f);

{

head->yRot = yRot / (float) (180.0f / PI);
head->xRot = xRot / (float) (180.0f / PI);
hair->yRot = head->yRot;
Expand All @@ -193,30 +198,30 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float

// Does the skin have an override for anim?

if(uiBitmaskOverrideAnim&(1<<eAnim_ArmsDown))
if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_ArmsDown))
{
arm0->xRot=0.0f;
arm1->xRot=0.0f;
arm0->zRot = 0.0f;
arm1->zRot = 0.0f;

}
else if(uiBitmaskOverrideAnim&(1<<eAnim_ArmsOutFront))
else if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_ArmsOutFront))
{
arm0->xRot=-HALF_PI;
arm1->xRot=-HALF_PI;
arm0->zRot = 0.0f;
arm1->zRot = 0.0f;
}
else if(uiBitmaskOverrideAnim&(1<<eAnim_SingleArms))
else if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_SingleArms))
{
arm0->xRot = (Mth::cos(time * 0.6662f + PI) * 2.0f) * r * 0.5f;
arm1->xRot = (Mth::cos(time * 0.6662f + PI) * 2.0f) * r * 0.5f;
arm0->zRot = 0.0f;
arm1->zRot = 0.0f;
}
// 4J-PB - Weeping Angel - does't look good holding something in the arm that's up
else if((uiBitmaskOverrideAnim&(1<<eAnim_StatueOfLiberty)) && (holdingRightHand==0) && (attackTime==0.0f))
else if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_StatueOfLiberty) && (holdingRightHand==0) && (attackTime==0.0f))
{
arm0->xRot = -PI;
arm0->zRot = -0.3f;
Expand All @@ -241,21 +246,24 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float

if (riding)
{
if(uiBitmaskOverrideAnim&(1<<eAnim_SmallModel) == 0)
//Fix this later
if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_SmallModel) || bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_SingleLegs))
{
arm0->xRot += -HALF_PI * 0.4f;
arm1->xRot += -HALF_PI * 0.4f;
leg0->xRot = -HALF_PI * 0.8f;
leg1->xRot = -HALF_PI * 0.8f;
leg0->yRot = HALF_PI * 0.2f;
leg1->yRot = -HALF_PI * 0.2f;
}
else
{
//New
arm0->xRot += -HALF_PI * 0.4f;
arm1->xRot += -HALF_PI * 0.4f;
leg0->xRot = -HALF_PI * 0.4f;
leg1->xRot = -HALF_PI * 0.4f;
leg0->xRot = -HALF_PI * 0.8f;
leg1->xRot = -HALF_PI * 0.8f;
leg0->yRot = HALF_PI * 0.2f;
leg1->yRot = -HALF_PI * 0.2f;

}
}
else if(idle && !sneaking )
Expand All @@ -265,7 +273,7 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
leg0->yRot = HALF_PI * 0.2f;
leg1->yRot = -HALF_PI * 0.2f;
}
else if(uiBitmaskOverrideAnim&(1<<eAnim_NoLegAnim))
else if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_NoLegAnim))
{
leg0->xRot=0.0f;
leg0->zRot=0.0f;
Expand All @@ -274,7 +282,7 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
leg0->yRot = 0.0f;
leg1->yRot = 0.0f;
}
else if(uiBitmaskOverrideAnim&(1<<eAnim_SingleLegs))
else if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_SingleLegs))
{
leg0->xRot = ( Mth::cos(time * 0.6662f) * 1.4f) * r;
leg1->xRot = ( Mth::cos(time * 0.6662f) * 1.4f) * r;
Expand Down Expand Up @@ -318,7 +326,7 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
arm0->xRot -= aa * 1.2f + bb; // 4J - changed 1.2 -> 1.2f
arm0->yRot += body->yRot * 2.0f;

if((uiBitmaskOverrideAnim&(1<<eAnim_StatueOfLiberty))&& (holdingRightHand==0) && (attackTime==0.0f))
if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_StatueOfLiberty) && (holdingRightHand==0) && (attackTime==0.0f))
{
arm0->zRot -= Mth::sin(attackTime * PI) * -0.4f;
}
Expand All @@ -345,7 +353,7 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float

if (sneaking)
{
if(uiBitmaskOverrideAnim&(1<<eAnim_SmallModel))
if(bitmaskEnabled(uiBitmaskOverrideAnim, eAnim_SmallModel))
{
body->xRot = -0.5f;
leg0->xRot -= 0.0f;
Expand Down
1 change: 1 addition & 0 deletions Minecraft.Client/HumanoidModel.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ class HumanoidModel : public Model
void renderEars(float scale, bool usecompiled);
void renderCloak(float scale, bool usecompiled);
void render(HumanoidModel *model, float scale, bool usecompiled);
static bool bitmaskEnabled(unsigned int uiBitmask, animbits bit);

// Add new bits to models
ModelPart * AddOrRetrievePart(SKIN_BOX *pBox);
Expand Down
11 changes: 11 additions & 0 deletions Minecraft.Client/ItemInHandRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,17 @@ void ItemInHandRenderer::renderItem(shared_ptr<LivingEntity> mob, shared_ptr<Ite
float xo = 0.0f;
float yo = 0.3f;


//Re position height of held item if skin is small
if (HumanoidModel::bitmaskEnabled(mob->getAnimOverrideBitmask(), HumanoidModel::eAnim_SmallModel)) {
if (mob->isRiding()) {
std::shared_ptr<Entity> ridingEntity = mob->riding;
if (ridingEntity != nullptr) //Safety check;
{
yo += 0.3f; //reverts the change in Boat.cpp for smaller models.
}
}
}
glEnable(GL_RESCALE_NORMAL);
glTranslatef(-xo, -yo, 0);
float s = 1.5f;
Expand Down
19 changes: 16 additions & 3 deletions Minecraft.Client/PlayerRenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,11 +199,24 @@ void PlayerRenderer::render(shared_ptr<Entity> _mob, double x, double y, double
armorParts1->sneaking = armorParts2->sneaking = humanoidModel->sneaking = mob->isSneaking();

double yp = y - mob->heightOffset;
if (mob->isSneaking() && !mob->instanceof(eTYPE_LOCALPLAYER))
if (mob->isSneaking())
{
yp -= 2 / 16.0f;
yp -= 2 / 16.0f; //Added more
}
//For some reason the bitmask is zero here
unsigned int uiBitmaskOverrideAnim = mob->getSkinAnimOverrideBitmask(mob->getCustomSkin());

if (HumanoidModel::bitmaskEnabled(uiBitmaskOverrideAnim, HumanoidModel::eAnim_SmallModel)) {
if (mob->isRiding()) {
std::shared_ptr<Entity> ridingEntity = mob->riding;
if (ridingEntity != nullptr) //Safety check;
{
if (ridingEntity->instanceof(eTYPE_BOAT)) {
yp += 0.25f; //reverts the change in Boat.cpp for smaller models.
}
}
}
}
// Check if an idle animation is needed
if(mob->getAnimOverrideBitmask()&(1<<HumanoidModel::eAnim_HasIdle))
{
Expand Down Expand Up @@ -515,7 +528,7 @@ void PlayerRenderer::renderHand()
humanoidModel->attackTime = 0;
humanoidModel->setupAnim(0, 0, 0, 0, 0, 1 / 16.0f, Minecraft::GetInstance()->player);
// 4J-PB - does this skin have its arm0 disabled? (Dalek, etc)
if((humanoidModel->m_uiAnimOverrideBitmask&(1<<HumanoidModel::eAnim_DisableRenderArm0))==0)
if(HumanoidModel::bitmaskEnabled(humanoidModel->m_uiAnimOverrideBitmask, HumanoidModel::eAnim_DisableRenderArm0)==0)
{
humanoidModel->arm0->render(1 / 16.0f,true);
}
Expand Down
4 changes: 2 additions & 2 deletions Minecraft.World/Boat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ void Boat::_init()
lxd = lyd = lzd = 0.0;

blocksBuilding = true;
setSize(1.5f, 0.6f);
setSize(1.5f, 0.6f);
heightOffset = (bbHeight / 2.0f) + 0.2f;

// 4J Stu - This function call had to be moved here from the Entity ctor to ensure that
Expand Down Expand Up @@ -87,7 +87,7 @@ Boat::Boat(Level *level, double x, double y, double z) : Entity( level )

double Boat::getRideHeight()
{
return heightOffset;
return heightOffset - 0.5;
}

bool Boat::hurt(DamageSource *source, float hurtDamage)
Expand Down
Loading