diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 0a1a226c36..866a43c1a9 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2672,20 +2672,27 @@ namespace OpenSim.Region.Framework.Scenes
}
else
{
- //NonPhysicalGrabMovement(pos);
+ NonPhysicalGrabMovement(pos);
}
}
else
{
- //NonPhysicalGrabMovement(pos);
+ NonPhysicalGrabMovement(pos);
}
}
}
+ ///
+ /// Apply possition for grabbing non-physical linksets (Ctrl+Drag)
+ /// This MUST be blocked for linksets that contain touch scripts because the viewer triggers grab on the touch
+ /// event (Viewer Bug?) This would allow anyone to drag a linkset with a touch script. SL behaviour is also to
+ /// block grab on prims with touch events.
+ ///
+ /// New Position
public void NonPhysicalGrabMovement(Vector3 pos)
{
- AbsolutePosition = pos;
- m_rootPart.SendTerseUpdateToAllClients();
+ if(!IsAttachment && ScriptCount() == 0)
+ UpdateGroupPosition(pos);
}
///
@@ -2781,16 +2788,27 @@ namespace OpenSim.Region.Framework.Scenes
}
else
{
- //NonPhysicalSpinMovement(pos);
+ NonPhysicalSpinMovement(newOrientation);
}
}
else
{
- //NonPhysicalSpinMovement(pos);
+ NonPhysicalSpinMovement(newOrientation);
}
}
}
+ ///
+ /// Apply rotation for spinning non-physical linksets (Ctrl+Shift+Drag)
+ /// As with dragging, scripted objects must be blocked from spinning
+ ///
+ /// New Rotation
+ private void NonPhysicalSpinMovement(Quaternion newOrientation)
+ {
+ if(!IsAttachment && ScriptCount() == 0)
+ UpdateGroupRotationR(newOrientation);
+ }
+
///
/// Set the name of a prim
///