MAINT-2047 FIXED Avatar follows the object only once if change object's location in Edit mode

master
Mnikolenko Productengine 2017-09-07 18:13:12 +03:00
parent 3f072ceca0
commit e057efb599
3 changed files with 13 additions and 10 deletions

View File

@ -1712,7 +1712,7 @@ void LLPanelObject::sendPosition(BOOL btn_down)
if (mObject->isRootEdit())
{
// only offset by parent's translation
mObject->resetChildrenPosition(LLVector3(-delta), TRUE) ;
mObject->resetChildrenPosition(LLVector3(-delta), TRUE, TRUE) ;
}
if(!btn_down)

View File

@ -6216,7 +6216,7 @@ void LLViewerObject::resetChildrenRotationAndPosition(const std::vector<LLQuater
}
//counter-translation
void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplified)
void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplified, BOOL skip_avatar_child)
{
if(mChildList.empty())
{
@ -6246,6 +6246,7 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif
iter != mChildList.end(); iter++)
{
LLViewerObject* childp = *iter;
if (!childp->isSelected() && childp->mDrawable.notNull())
{
if (childp->getPCode() != LL_PCODE_LEGACY_AVATAR)
@ -6255,14 +6256,16 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif
}
else //avatar
{
LLVector3 reset_pos = ((LLVOAvatar*)childp)->mDrawable->mXform.getPosition() + child_offset ;
if(!skip_avatar_child)
{
LLVector3 reset_pos = ((LLVOAvatar*)childp)->mDrawable->mXform.getPosition() + child_offset ;
((LLVOAvatar*)childp)->mDrawable->mXform.setPosition(reset_pos);
((LLVOAvatar*)childp)->mDrawable->getVObj()->setPosition(reset_pos);
LLManip::rebuild(childp);
}
}
((LLVOAvatar*)childp)->mDrawable->mXform.setPosition(reset_pos);
((LLVOAvatar*)childp)->mDrawable->getVObj()->setPosition(reset_pos);
LLManip::rebuild(childp);
}
}
}
}
return ;

View File

@ -575,7 +575,7 @@ public:
public:
//counter-translation
void resetChildrenPosition(const LLVector3& offset, BOOL simplified = FALSE) ;
void resetChildrenPosition(const LLVector3& offset, BOOL simplified = FALSE, BOOL skip_avatar_child = FALSE) ;
//counter-rotation
void resetChildrenRotationAndPosition(const std::vector<LLQuaternion>& rotations,
const std::vector<LLVector3>& positions) ;