public void GrabMovement(Vector3 offset, Vector3 pos, IClientAPI remoteClient)
{
if (m_scene.EventManager.TriggerGroupMove(UUID, pos))
{
if (m_rootPart.PhysActor != null)
{
if (m_rootPart.PhysActor.IsPhysical)
{
if (!m_rootPart.BlockGrab && !m_rootPart.BlockGrabObject)
{
Vector3 grabforce = pos - AbsolutePosition;
grabforce = grabforce*m_rootPart.PhysActor.Mass;
m_rootPart.PhysActor.AddForce(grabforce, true);
// This is outside the above permissions condition
// so that if the object is locked the client moving the object
// get's it's position on the simulator even if it was the same as before
// This keeps the moving user's client in sync with the rest of the world.
ScheduleGroupTerseUpdate();
}
}
}
}
}