mirror of
https://github.com/smartcmd/MinecraftConsoles.git
synced 2026-08-20 09:57:09 +00:00
Added more skin offset code
Added another offset enum for the helmet offset, fixed renderUIOffset() function not rendering skins that didn't have an offset, and added more code for offsets.
This commit is contained in:
parent
cef65c8df3
commit
e0cf6f23c1
|
|
@ -113,7 +113,7 @@ void DLCSkinFile::addParameter(DLCManager::EDLCParameterType type, const wstring
|
||||||
WCHAR wchBodyPart[10];
|
WCHAR wchBodyPart[10];
|
||||||
SKIN_BOX *pSkinBox = new SKIN_BOX;
|
SKIN_BOX *pSkinBox = new SKIN_BOX;
|
||||||
ZeroMemory(pSkinBox,sizeof(SKIN_BOX));
|
ZeroMemory(pSkinBox,sizeof(SKIN_BOX));
|
||||||
|
|
||||||
#ifdef __PS3__
|
#ifdef __PS3__
|
||||||
// 4J Stu - The Xbox version used swscanf_s which isn't available in GCC.
|
// 4J Stu - The Xbox version used swscanf_s which isn't available in GCC.
|
||||||
swscanf(value.c_str(), L"%10ls%f%f%f%f%f%f%f%f%f%f%f", wchBodyPart,
|
swscanf(value.c_str(), L"%10ls%f%f%f%f%f%f%f%f%f%f%f", wchBodyPart,
|
||||||
|
|
@ -305,6 +305,10 @@ void DLCSkinFile::addParameter(DLCManager::EDLCParameterType type, const wstring
|
||||||
{
|
{
|
||||||
pSkinOffset->ePart=eBodyOffset_Pants1;
|
pSkinOffset->ePart=eBodyOffset_Pants1;
|
||||||
}
|
}
|
||||||
|
else if(wcscmp(wchBodyPart,L"HELMET")==0)
|
||||||
|
{
|
||||||
|
pSkinOffset->ePart=eBodyOffset_Helmet;
|
||||||
|
}
|
||||||
else if(wcscmp(wchBodyPart,L"WAIST")==0)
|
else if(wcscmp(wchBodyPart,L"WAIST")==0)
|
||||||
{
|
{
|
||||||
pSkinOffset->ePart=eBodyOffset_Waist;
|
pSkinOffset->ePart=eBodyOffset_Waist;
|
||||||
|
|
|
||||||
|
|
@ -367,10 +367,8 @@ void UIControl_PlayerSkinPreview::render(EntityRenderer *renderer, double x, dou
|
||||||
glEnable(GL_ALPHA_TEST);
|
glEnable(GL_ALPHA_TEST);
|
||||||
|
|
||||||
//model->prepareMobModel(mob, wp, ws, a);
|
//model->prepareMobModel(mob, wp, ws, a);
|
||||||
if (m_pvModelOffsets != nullptr) // If the skin has offsets use a modified version of the render function
|
// Using a modified version of the render function to render offsts is skin select menu
|
||||||
model->renderUIOffset(wp, ws, bob, headRot - bodyRot, headRotx, _scale, true, m_pvModelOffsets);
|
model->renderUIOffset(wp, ws, bob, headRot - bodyRot, headRotx, _scale, true, m_pvModelOffsets);
|
||||||
else // If the skin has no offsets use the default render function (without this all skins that don't have an offset won't render)
|
|
||||||
model->render(nullptr, wp, ws, bob, headRot - bodyRot, headRotx, _scale, true);
|
|
||||||
/*for (int i = 0; i < MAX_ARMOR_LAYERS; i++)
|
/*for (int i = 0; i < MAX_ARMOR_LAYERS; i++)
|
||||||
{
|
{
|
||||||
if (prepareArmor(mob, i, a))
|
if (prepareArmor(mob, i, a))
|
||||||
|
|
|
||||||
|
|
@ -402,85 +402,54 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
|
||||||
{
|
{
|
||||||
case eBodyOffset_Head:
|
case eBodyOffset_Head:
|
||||||
if(pModelOffset->fD == 1)
|
if(pModelOffset->fD == 1)
|
||||||
headOffsets[0] = pModelOffset->fO / 16.0f;
|
headOffsets[0] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 2)
|
else if(pModelOffset->fD == 2)
|
||||||
headOffsets[1] = pModelOffset->fO / 16.0f;
|
headOffsets[1] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 3)
|
else if(pModelOffset->fD == 3)
|
||||||
headOffsets[2] = pModelOffset->fO / 16.0f;
|
headOffsets[2] += pModelOffset->fO / 16.0f;
|
||||||
break;
|
break;
|
||||||
case eBodyOffset_Body:
|
case eBodyOffset_Body:
|
||||||
if(pModelOffset->fD == 1)
|
if(pModelOffset->fD == 1)
|
||||||
bodyOffsets[0] = pModelOffset->fO / 16.0f;
|
bodyOffsets[0] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 2)
|
else if(pModelOffset->fD == 2)
|
||||||
bodyOffsets[1] = pModelOffset->fO / 16.0f;
|
bodyOffsets[1] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 3)
|
else if(pModelOffset->fD == 3)
|
||||||
bodyOffsets[2] = pModelOffset->fO / 16.0f;
|
bodyOffsets[2] += pModelOffset->fO / 16.0f;
|
||||||
break;
|
break;
|
||||||
case eBodyOffset_Arm0:
|
case eBodyOffset_Arm0:
|
||||||
if(pModelOffset->fD == 1)
|
if(pModelOffset->fD == 1)
|
||||||
arm0Offsets[0] = pModelOffset->fO / 16.0f;
|
arm0Offsets[0] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 2)
|
else if(pModelOffset->fD == 2)
|
||||||
arm0Offsets[1] = pModelOffset->fO / 16.0f;
|
arm0Offsets[1] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 3)
|
else if(pModelOffset->fD == 3)
|
||||||
arm0Offsets[2] = pModelOffset->fO / 16.0f;
|
arm0Offsets[2] += pModelOffset->fO / 16.0f;
|
||||||
break;
|
break;
|
||||||
case eBodyOffset_Arm1:
|
case eBodyOffset_Arm1:
|
||||||
if(pModelOffset->fD == 1)
|
if(pModelOffset->fD == 1)
|
||||||
arm1Offsets[0] = pModelOffset->fO / 16.0f;
|
arm1Offsets[0] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 2)
|
else if(pModelOffset->fD == 2)
|
||||||
arm1Offsets[1] = pModelOffset->fO / 16.0f;
|
arm1Offsets[1] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 3)
|
else if(pModelOffset->fD == 3)
|
||||||
arm1Offsets[2] = pModelOffset->fO / 16.0f;
|
arm1Offsets[2] += pModelOffset->fO / 16.0f;
|
||||||
break;
|
break;
|
||||||
case eBodyOffset_Leg0:
|
case eBodyOffset_Leg0:
|
||||||
if(pModelOffset->fD == 1)
|
if(pModelOffset->fD == 1)
|
||||||
leg0Offsets[0] = pModelOffset->fO / 16.0f;
|
leg0Offsets[0] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 2)
|
else if(pModelOffset->fD == 2)
|
||||||
leg0Offsets[1] = pModelOffset->fO / 16.0f;
|
leg0Offsets[1] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 3)
|
else if(pModelOffset->fD == 3)
|
||||||
leg0Offsets[2] = pModelOffset->fO / 16.0f;
|
leg0Offsets[2] += pModelOffset->fO / 16.0f;
|
||||||
break;
|
break;
|
||||||
case eBodyOffset_Leg1:
|
case eBodyOffset_Leg1:
|
||||||
if(pModelOffset->fD == 1)
|
if(pModelOffset->fD == 1)
|
||||||
leg1Offsets[0] = pModelOffset->fO / 16.0f;
|
leg1Offsets[0] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 2)
|
else if(pModelOffset->fD == 2)
|
||||||
leg1Offsets[1] = pModelOffset->fO / 16.0f;
|
leg1Offsets[1] += pModelOffset->fO / 16.0f;
|
||||||
else if(pModelOffset->fD == 3)
|
else if(pModelOffset->fD == 3)
|
||||||
leg1Offsets[2] = pModelOffset->fO / 16.0f;
|
leg1Offsets[2] += pModelOffset->fO / 16.0f;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_isArmor) // Set offsets for armor
|
|
||||||
{
|
|
||||||
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
|
|
||||||
{
|
|
||||||
switch (pModelOffset->ePart)
|
|
||||||
{
|
|
||||||
case eBodyOffset_Boot0:
|
|
||||||
if (leg0->isArmorPart1)
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case eBodyOffset_Boot1:
|
|
||||||
if (leg1->isArmorPart1)
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
|
@ -549,25 +518,65 @@ void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float
|
||||||
if (waist != 0)
|
if (waist != 0)
|
||||||
waist->render(scale, usecompiled);
|
waist->render(scale, usecompiled);
|
||||||
if (belt != 0)
|
if (belt != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
||||||
belt->render(scale, usecompiled);
|
belt->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
if (bodyArmor != 0)
|
if (bodyArmor != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
||||||
bodyArmor->render(scale, usecompiled);
|
bodyArmor->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
if (armArmor0 != 0)
|
if (armArmor0 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(arm0Offsets[0], arm0Offsets[1], arm0Offsets[2]);
|
||||||
armArmor0->render(scale, usecompiled);
|
armArmor0->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
if (armArmor1 != 0)
|
if (armArmor1 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(arm1Offsets[0], arm1Offsets[1], arm1Offsets[2]);
|
||||||
armArmor1->render(scale, usecompiled);
|
armArmor1->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
if (legging0 != 0)
|
if (legging0 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
||||||
legging0->render(scale, usecompiled);
|
legging0->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
if (legging1 != 0)
|
if (legging1 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg1Offsets[0], leg1Offsets[1], leg1Offsets[2]);
|
||||||
legging1->render(scale, usecompiled);
|
legging1->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
if (sock0 != 0)
|
if (sock0 != 0)
|
||||||
sock0->render(scale, usecompiled);
|
sock0->render(scale, usecompiled);
|
||||||
if (sock1 != 0)
|
if (sock1 != 0)
|
||||||
sock1->render(scale, usecompiled);
|
sock1->render(scale, usecompiled);
|
||||||
if (boot0 != 0)
|
if (boot0 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
||||||
boot0->render(scale, usecompiled);
|
boot0->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
if (boot1 != 0)
|
if (boot1 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg1Offsets[0], leg1Offsets[1], leg1Offsets[2]);
|
||||||
boot1->render(scale, usecompiled);
|
boot1->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -641,93 +650,134 @@ void HumanoidModel::renderUIOffset(float time, float r, float bob, float yRot, f
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(headOffsets[0], headOffsets[1], headOffsets[2]);
|
glTranslatef(headOffsets[0], headOffsets[1], headOffsets[2]);
|
||||||
head->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHead))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorHead))>0||!m_isArmor));
|
head->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHead))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorHead))>0||!m_isArmor));
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
||||||
|
body->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderTorso))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorTorso))>0||!m_isArmor));
|
||||||
|
glPopMatrix();
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(arm0Offsets[0], arm0Offsets[1], arm0Offsets[2]);
|
||||||
|
arm0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderArm0))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorArm0))>0||!m_isArmor));
|
||||||
|
glPopMatrix();
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(arm1Offsets[0], arm1Offsets[1], arm1Offsets[2]);
|
||||||
|
arm1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderArm1))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorArm1))>0||!m_isArmor));
|
||||||
|
glPopMatrix();
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
||||||
|
leg0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg0))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorLeg0))>0||!m_isArmor));
|
||||||
|
glPopMatrix();
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg1Offsets[0], leg1Offsets[1], leg1Offsets[2]);
|
||||||
|
leg1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg1))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorLeg1))>0||!m_isArmor));
|
||||||
|
glPopMatrix();
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(headOffsets[0], headOffsets[1], headOffsets[2]);
|
||||||
|
hair->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHair))>0);
|
||||||
|
glPopMatrix();
|
||||||
|
if (jacket != 0)
|
||||||
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
||||||
body->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderTorso))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorTorso))>0||!m_isArmor));
|
jacket->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderJacket))>0);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (sleeve0 != 0)
|
||||||
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(arm0Offsets[0], arm0Offsets[1], arm0Offsets[2]);
|
glTranslatef(arm0Offsets[0], arm0Offsets[1], arm0Offsets[2]);
|
||||||
arm0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderArm0))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorArm0))>0||!m_isArmor));
|
sleeve0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve0))>0);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (sleeve1 != 0)
|
||||||
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(arm1Offsets[0], arm1Offsets[1], arm1Offsets[2]);
|
glTranslatef(arm1Offsets[0], arm1Offsets[1], arm1Offsets[2]);
|
||||||
arm1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderArm1))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorArm1))>0||!m_isArmor));
|
sleeve1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve1))>0);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (pants0 != 0)
|
||||||
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
||||||
leg0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg0))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorLeg0))>0||!m_isArmor));
|
pants0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants0))>0);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (pants1 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
||||||
|
pants1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants1))>0);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (waist != 0)
|
||||||
|
waist->render(scale, usecompiled);
|
||||||
|
if (belt != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
||||||
|
belt->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (bodyArmor != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
||||||
|
bodyArmor->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (armArmor0 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(arm0Offsets[0], arm0Offsets[1], arm0Offsets[2]);
|
||||||
|
armArmor0->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (armArmor1 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(arm1Offsets[0], arm1Offsets[1], arm1Offsets[2]);
|
||||||
|
armArmor1->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (legging0 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
||||||
|
legging0->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (legging1 != 0)
|
||||||
|
{
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef(leg1Offsets[0], leg1Offsets[1], leg1Offsets[2]);
|
glTranslatef(leg1Offsets[0], leg1Offsets[1], leg1Offsets[2]);
|
||||||
leg1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderLeg1))>0&&(!(m_uiAnimOverrideBitmask&(1<<eAnim_RenderArmorLeg1))>0||!m_isArmor));
|
legging1->render(scale, usecompiled);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(headOffsets[0], headOffsets[1], headOffsets[2]);
|
|
||||||
hair->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderHair))>0);
|
|
||||||
glPopMatrix();
|
|
||||||
if (jacket != 0)
|
|
||||||
{
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(bodyOffsets[0], bodyOffsets[1], bodyOffsets[2]);
|
|
||||||
jacket->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderJacket))>0);
|
|
||||||
glPopMatrix();
|
|
||||||
}
|
|
||||||
if (sleeve0 != 0)
|
|
||||||
{
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(arm0Offsets[0], arm0Offsets[1], arm0Offsets[2]);
|
|
||||||
sleeve0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve0))>0);
|
|
||||||
glPopMatrix();
|
|
||||||
}
|
|
||||||
if (sleeve1 != 0)
|
|
||||||
{
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(arm1Offsets[0], arm1Offsets[1], arm1Offsets[2]);
|
|
||||||
sleeve1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderSleeve1))>0);
|
|
||||||
glPopMatrix();
|
|
||||||
}
|
|
||||||
if (pants0 != 0)
|
|
||||||
{
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
|
||||||
pants0->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants0))>0);
|
|
||||||
glPopMatrix();
|
|
||||||
}
|
|
||||||
if (pants1 != 0)
|
|
||||||
{
|
|
||||||
glPushMatrix();
|
|
||||||
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
|
||||||
pants1->render(scale, usecompiled,(m_uiAnimOverrideBitmask&(1<<eAnim_DisableRenderPants1))>0);
|
|
||||||
glPopMatrix();
|
|
||||||
}
|
|
||||||
if (waist != 0)
|
|
||||||
waist->render(scale, usecompiled);
|
|
||||||
if (belt != 0)
|
|
||||||
belt->render(scale, usecompiled);
|
|
||||||
if (bodyArmor != 0)
|
|
||||||
bodyArmor->render(scale, usecompiled);
|
|
||||||
if (armArmor0 != 0)
|
|
||||||
armArmor0->render(scale, usecompiled);
|
|
||||||
if (armArmor1 != 0)
|
|
||||||
armArmor1->render(scale, usecompiled);
|
|
||||||
if (legging0 != 0)
|
|
||||||
legging0->render(scale, usecompiled);
|
|
||||||
if (legging1 != 0)
|
|
||||||
legging1->render(scale, usecompiled);
|
|
||||||
if (sock0 != 0)
|
|
||||||
sock0->render(scale, usecompiled);
|
|
||||||
if (sock1 != 0)
|
|
||||||
sock1->render(scale, usecompiled);
|
|
||||||
if (boot0 != 0)
|
|
||||||
boot0->render(scale, usecompiled);
|
|
||||||
if (boot1 != 0)
|
|
||||||
boot1->render(scale, usecompiled);
|
|
||||||
}
|
}
|
||||||
|
if (sock0 != 0)
|
||||||
|
sock0->render(scale, usecompiled);
|
||||||
|
if (sock1 != 0)
|
||||||
|
sock1->render(scale, usecompiled);
|
||||||
|
if (boot0 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg0Offsets[0], leg0Offsets[1], leg0Offsets[2]);
|
||||||
|
boot0->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
if (boot1 != 0)
|
||||||
|
{
|
||||||
|
glPushMatrix();
|
||||||
|
glTranslatef(leg1Offsets[0], leg1Offsets[1], leg1Offsets[2]);
|
||||||
|
boot1->render(scale, usecompiled);
|
||||||
|
glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim)
|
void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim)
|
||||||
|
|
@ -735,6 +785,99 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
//bool bIsAttacking = (attackTime > -9990.0f);
|
//bool bIsAttacking = (attackTime > -9990.0f);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
/* Code to get armor offsets, not fully implemented yet. Directly applying the offsets
|
||||||
|
causes the armor pivot points to not aline with the player model pivot points. Some math
|
||||||
|
is requied to properly rotate the armor pivot points around the player model pivot points - Langtanium*/
|
||||||
|
vector<float> headOffsets = {0, 0, 0};
|
||||||
|
vector<float> bodyOffsets = {0, 0, 0};
|
||||||
|
vector<float> arm0Offsets = {0, 0, 0};
|
||||||
|
vector<float> arm1Offsets = {0, 0, 0};
|
||||||
|
vector<float> leg0Offsets = {0, 0, 0};
|
||||||
|
vector<float> leg1Offsets = {0, 0, 0};
|
||||||
|
if (m_isArmor)
|
||||||
|
{
|
||||||
|
shared_ptr<Player> player = dynamic_pointer_cast<Player>(entity);
|
||||||
|
vector<SKIN_OFFSET *>* pModelOffsets = nullptr;
|
||||||
|
if (player != nullptr)
|
||||||
|
pModelOffsets = player->GetModelOffsets();
|
||||||
|
if (pModelOffsets != nullptr)
|
||||||
|
{
|
||||||
|
for( SKIN_OFFSET *pModelOffset : *pModelOffsets )
|
||||||
|
{
|
||||||
|
switch (pModelOffset->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;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
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;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
head->yRot = yRot / (float) (180.0f / PI);
|
head->yRot = yRot / (float) (180.0f / PI);
|
||||||
head->xRot = xRot / (float) (180.0f / PI);
|
head->xRot = xRot / (float) (180.0f / PI);
|
||||||
hair->yRot = head->yRot;
|
hair->yRot = head->yRot;
|
||||||
|
|
@ -959,6 +1102,13 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
body->y = 0.0f;
|
body->y = 0.0f;
|
||||||
arm0->y = 2.0f;
|
arm0->y = 2.0f;
|
||||||
arm1->y = 2.0f;
|
arm1->y = 2.0f;
|
||||||
|
/*if (m_isArmor) // If armor apply helmet offset using some math, needs to be refined - Langtanium
|
||||||
|
{
|
||||||
|
head->x = headOffsets[1] * sin(yRot / (float) (180.0f / PI)) * sin(xRot / (float) (180.0f / PI));
|
||||||
|
head->y = headOffsets[1] * cos(xRot / (float) (180.0f / PI));
|
||||||
|
head->z = headOffsets[1] * sin(xRot / (float) (180.0f / PI)) - headOffsets[1] * abs(sin(yRot / (float) (180.0f / PI))) * sin(xRot / (float) (180.0f / PI));
|
||||||
|
}
|
||||||
|
else*/
|
||||||
head->y = 0.0f;
|
head->y = 0.0f;
|
||||||
hair->y = 0.0f;
|
hair->y = 0.0f;
|
||||||
ear->y = 1.0f;
|
ear->y = 1.0f;
|
||||||
|
|
@ -998,7 +1148,6 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
jacket->z = body->z;
|
jacket->z = body->z;
|
||||||
jacket->xRot = body->xRot;
|
jacket->xRot = body->xRot;
|
||||||
jacket->yRot = body->yRot;
|
jacket->yRot = body->yRot;
|
||||||
jacket->zRot = body->zRot;
|
|
||||||
}
|
}
|
||||||
if (sleeve0 != 0)
|
if (sleeve0 != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1043,7 +1192,6 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
waist->z = body->z;
|
waist->z = body->z;
|
||||||
waist->xRot = body->xRot;
|
waist->xRot = body->xRot;
|
||||||
waist->yRot = body->yRot;
|
waist->yRot = body->yRot;
|
||||||
waist->zRot = body->zRot;
|
|
||||||
}
|
}
|
||||||
if (belt != 0)
|
if (belt != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1052,7 +1200,6 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
belt->z = body->z;
|
belt->z = body->z;
|
||||||
belt->xRot = body->xRot;
|
belt->xRot = body->xRot;
|
||||||
belt->yRot = body->yRot;
|
belt->yRot = body->yRot;
|
||||||
belt->zRot = body->zRot;
|
|
||||||
}
|
}
|
||||||
if (bodyArmor != 0)
|
if (bodyArmor != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1061,7 +1208,6 @@ void HumanoidModel::setupAnim(float time, float r, float bob, float yRot, float
|
||||||
bodyArmor->z = body->z;
|
bodyArmor->z = body->z;
|
||||||
bodyArmor->xRot = body->xRot;
|
bodyArmor->xRot = body->xRot;
|
||||||
bodyArmor->yRot = body->yRot;
|
bodyArmor->yRot = body->yRot;
|
||||||
bodyArmor->zRot = body->zRot;
|
|
||||||
}
|
}
|
||||||
if (armArmor0 != 0)
|
if (armArmor0 != 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1178,18 +1324,22 @@ void HumanoidModel::render(HumanoidModel *model, float scale, bool usecompiled)
|
||||||
arm0->zRot = model->arm0->zRot;
|
arm0->zRot = model->arm0->zRot;
|
||||||
|
|
||||||
if (sleeve0 != 0)
|
if (sleeve0 != 0)
|
||||||
|
{
|
||||||
sleeve0->xRot = model->arm0->xRot;
|
sleeve0->xRot = model->arm0->xRot;
|
||||||
sleeve0->yRot = model->arm0->yRot;
|
sleeve0->yRot = model->arm0->yRot;
|
||||||
sleeve0->zRot = model->arm0->zRot;
|
sleeve0->zRot = model->arm0->zRot;
|
||||||
|
}
|
||||||
|
|
||||||
arm1->xRot = model->arm1->xRot;
|
arm1->xRot = model->arm1->xRot;
|
||||||
arm1->yRot = model->arm1->yRot;
|
arm1->yRot = model->arm1->yRot;
|
||||||
arm1->zRot = model->arm1->zRot;
|
arm1->zRot = model->arm1->zRot;
|
||||||
|
|
||||||
if (sleeve1 != 0)
|
if (sleeve1 != 0)
|
||||||
|
{
|
||||||
sleeve1->xRot = model->arm1->xRot;
|
sleeve1->xRot = model->arm1->xRot;
|
||||||
sleeve1->yRot = model->arm1->yRot;
|
sleeve1->yRot = model->arm1->yRot;
|
||||||
sleeve1->zRot = model->arm1->zRot;
|
sleeve1->zRot = model->arm1->zRot;
|
||||||
|
}
|
||||||
|
|
||||||
leg0->xRot = model->leg0->xRot;
|
leg0->xRot = model->leg0->xRot;
|
||||||
if (pants0 != 0)
|
if (pants0 != 0)
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ enum eBodyOffset
|
||||||
eBodyOffset_Sleeve1,
|
eBodyOffset_Sleeve1,
|
||||||
eBodyOffset_Pants0,
|
eBodyOffset_Pants0,
|
||||||
eBodyOffset_Pants1,
|
eBodyOffset_Pants1,
|
||||||
|
eBodyOffset_Helmet,
|
||||||
eBodyOffset_Waist,
|
eBodyOffset_Waist,
|
||||||
eBodyOffset_Legging0,
|
eBodyOffset_Legging0,
|
||||||
eBodyOffset_Legging1,
|
eBodyOffset_Legging1,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue