Merge branch 'master' of https://github.com/singularity-viewer/SingularityViewer
This commit is contained in:
@@ -484,9 +484,12 @@ BOOL LLManipRotate::handleMouseUp(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
LLSelectNode* selectNode = *iter;
|
||||
LLViewerObject* object = selectNode->getObject();
|
||||
LLViewerObject* root_object = (object == NULL) ? NULL : object->getRootEdit();
|
||||
|
||||
// have permission to move and object is root of selection or individually selected
|
||||
if (object->permMove() && (object->isRootEdit() || selectNode->mIndividualSelection))
|
||||
if (object->permMove() && !object->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()) &&
|
||||
(object->isRootEdit() || selectNode->mIndividualSelection))
|
||||
{
|
||||
object->mUnselectedChildrenPositions.clear() ;
|
||||
}
|
||||
@@ -572,9 +575,12 @@ void LLManipRotate::drag( S32 x, S32 y )
|
||||
{
|
||||
LLSelectNode* selectNode = *iter;
|
||||
LLViewerObject* object = selectNode->getObject();
|
||||
LLViewerObject* root_object = (object == NULL) ? NULL : object->getRootEdit();
|
||||
|
||||
// have permission to move and object is root of selection or individually selected
|
||||
if (object->permMove() && (object->isRootEdit() || selectNode->mIndividualSelection))
|
||||
if (object->permMove() && !object->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()) &&
|
||||
(object->isRootEdit() || selectNode->mIndividualSelection))
|
||||
{
|
||||
if (!object->isRootEdit())
|
||||
{
|
||||
@@ -626,9 +632,11 @@ void LLManipRotate::drag( S32 x, S32 y )
|
||||
{
|
||||
LLSelectNode* selectNode = *iter;
|
||||
LLViewerObject* object = selectNode->getObject();
|
||||
LLViewerObject* root_object = (object == NULL) ? NULL : object->getRootEdit();
|
||||
|
||||
// to avoid cumulative position changes we calculate the objects new position using its saved position
|
||||
if (object && object->permMove())
|
||||
if (object && object->permMove() && !object->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()))
|
||||
{
|
||||
LLVector3 center = gAgent.getPosAgentFromGlobal( mRotationCenter );
|
||||
|
||||
@@ -709,7 +717,10 @@ void LLManipRotate::drag( S32 x, S32 y )
|
||||
{
|
||||
LLSelectNode* selectNode = *iter;
|
||||
LLViewerObject*cur = selectNode->getObject();
|
||||
if( cur->permModify() && cur->permMove() && !cur->isAvatar())
|
||||
LLViewerObject *root_object = (cur == NULL) ? NULL : cur->getRootEdit();
|
||||
if( cur->permModify() && cur->permMove() && !cur->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()) &&
|
||||
!cur->isAvatar())
|
||||
{
|
||||
selectNode->mLastRotation = cur->getRotation();
|
||||
selectNode->mLastPositionLocal = cur->getPosition();
|
||||
@@ -1876,7 +1887,10 @@ BOOL LLManipRotate::canAffectSelection()
|
||||
{
|
||||
virtual bool apply(LLViewerObject* objectp)
|
||||
{
|
||||
return objectp->permMove() && (objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
|
||||
LLViewerObject *root_object = (objectp == NULL) ? NULL : objectp->getRootEdit();
|
||||
return objectp->permMove() && !objectp->isPermanentEnforced() &&
|
||||
((root_object == NULL) || !root_object->isPermanentEnforced()) &&
|
||||
(objectp->permModify() || !gSavedSettings.getBOOL("EditLinkedParts"));
|
||||
}
|
||||
} func;
|
||||
can_rotate = mObjectSelection->applyToObjects(&func);
|
||||
|
||||
Reference in New Issue
Block a user