|
|
|
@ -85,7 +85,6 @@ namespace
|
|
|
|
|
|
|
|
|
|
namespace MWRender
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
class HeadAnimationTime : public SceneUtil::ControllerSource
|
|
|
|
|
{
|
|
|
|
|
private:
|
|
|
|
@ -761,12 +760,6 @@ namespace MWRender
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool NpcAnimation::isFirstPersonPart(const ESM::BodyPart* bodypart)
|
|
|
|
|
{
|
|
|
|
|
std::string_view partName = bodypart->mId.getRefIdString();
|
|
|
|
|
return partName.size() >= 3 && partName.substr(partName.size() - 3, 3) == "1st";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool NpcAnimation::isFemalePart(const ESM::BodyPart* bodypart)
|
|
|
|
|
{
|
|
|
|
|
return bodypart->mData.mFlags & ESM::BodyPart::BPF_Female;
|
|
|
|
@ -1220,7 +1213,7 @@ namespace MWRender
|
|
|
|
|
if (!(bodypart.mRace == race))
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
bool partFirstPerson = isFirstPersonPart(&bodypart);
|
|
|
|
|
const bool partFirstPerson = ESM::isFirstPersonBodyPart(bodypart);
|
|
|
|
|
|
|
|
|
|
bool isHand = bodypart.mData.mPart == ESM::BodyPart::MP_Hand
|
|
|
|
|
|| bodypart.mData.mPart == ESM::BodyPart::MP_Wrist
|
|
|
|
@ -1277,7 +1270,7 @@ namespace MWRender
|
|
|
|
|
parts[bIt->second] = &bodypart;
|
|
|
|
|
|
|
|
|
|
// If we have 3d person fallback bodypart for hand and 1st person fallback found (2)
|
|
|
|
|
else if (isHand && !isFirstPersonPart(parts[bIt->second]) && partFirstPerson)
|
|
|
|
|
else if (isHand && !ESM::isFirstPersonBodyPart(*parts[bIt->second]) && partFirstPerson)
|
|
|
|
|
parts[bIt->second] = &bodypart;
|
|
|
|
|
|
|
|
|
|
++bIt;
|
|
|
|
|