Fix mirrored animations

This commit is contained in:
Brad Davis 2017-01-02 14:41:35 -08:00
parent 171440f70b
commit 4b4523579a

View file

@ -32,10 +32,10 @@ AnimSkeleton::AnimSkeleton(const std::vector<FBXJoint>& joints) {
int AnimSkeleton::nameToJointIndex(const QString& jointName) const { int AnimSkeleton::nameToJointIndex(const QString& jointName) const {
auto itr = _jointIndicesByName.find(jointName); auto itr = _jointIndicesByName.find(jointName);
if (_jointIndicesByName.end() == itr) { if (_jointIndicesByName.end() != itr) {
return -1; return itr.value();
} }
return itr.value(); return -1;
} }
int AnimSkeleton::getNumJoints() const { int AnimSkeleton::getNumJoints() const {
@ -202,6 +202,10 @@ void AnimSkeleton::buildSkeletonFromJoints(const std::vector<FBXJoint>& joints)
} }
} }
for (int i = 0; i < _jointsSize; i++) {
_jointIndicesByName[_joints[i].name] = i;
}
// build mirror map. // build mirror map.
_nonMirroredIndices.clear(); _nonMirroredIndices.clear();
_mirrorMap.reserve(_jointsSize); _mirrorMap.reserve(_jointsSize);
@ -225,10 +229,6 @@ void AnimSkeleton::buildSkeletonFromJoints(const std::vector<FBXJoint>& joints)
_mirrorMap.push_back(i); _mirrorMap.push_back(i);
} }
} }
for (int i = 0; i < _jointsSize; i++) {
_jointIndicesByName[_joints[i].name] = i;
}
} }
void AnimSkeleton::dump(bool verbose) const { void AnimSkeleton::dump(bool verbose) const {