diff --git a/indra/newview/fsfloaterposer.cpp b/indra/newview/fsfloaterposer.cpp index 0ccd53c6c0..02202e34ee 100644 --- a/indra/newview/fsfloaterposer.cpp +++ b/indra/newview/fsfloaterposer.cpp @@ -518,7 +518,8 @@ bool FSFloaterPoser::savePoseToXml(LLVOAvatar* avatar, const std::string& poseFi record["version"]["value"] = (S32)7; record["startFromTeePose"]["value"] = !savingDiff; - mPoserAnimator.savePosingState(avatar, &record); + if (savingDiff) + mPoserAnimator.savePosingState(avatar, &record); LLVector3 rotation, position, scale, zeroVector; bool baseRotationIsZero; @@ -902,6 +903,7 @@ void FSFloaterPoser::onPoseMenuAction(const LLSD& param) loadType = SELECTIVE_ROT; mLoadPoseTimer->tryLoading(poseName, loadType); + setLoadingProgress(true); } void FSFloaterPoser::timedReload() @@ -1171,7 +1173,7 @@ bool FSFloaterPoser::loadPoseFromXml(LLVOAvatar* avatar, const std::string& pose mPoserAnimator.setRotationIsMirrored(avatar, *poserJoint, mirroredJoint); } - if (version > 6) + if (version > 6 && !startFromZeroRot) loadSuccess = mPoserAnimator.loadPosingState(avatar, pose); } } diff --git a/indra/newview/fsposeranimator.cpp b/indra/newview/fsposeranimator.cpp index fe7953c0e5..067c4dbdd0 100644 --- a/indra/newview/fsposeranimator.cpp +++ b/indra/newview/fsposeranimator.cpp @@ -937,7 +937,6 @@ void FSPoserAnimator::loadJointPosition(LLVOAvatar* avatar, const FSPoserJoint* { jointPose->setJointPriority(LLJoint::LOW_PRIORITY); jointPose->setBasePosition(position, LLJoint::LOW_PRIORITY); - jointPose->setPublicPosition(LLVector3::zero); } } diff --git a/indra/newview/fsposingmotion.cpp b/indra/newview/fsposingmotion.cpp index 7f47c2b86d..9c4772d309 100644 --- a/indra/newview/fsposingmotion.cpp +++ b/indra/newview/fsposingmotion.cpp @@ -298,16 +298,10 @@ bool FSPosingMotion::loadOtherMotionToBaseOfThisMotion(LLKeyframeMotion* motionT poserJoint_iter->setBaseRotation(rot, priority); if (hasPosition) - { poserJoint_iter->setBasePosition(position, priority); - poserJoint_iter->setPublicPosition(LLVector3::zero); - } if (hasScale) - { poserJoint_iter->setBaseScale(scale, priority); - poserJoint_iter->setPublicScale(LLVector3::zero); - } } return true;