aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs19
1 files changed, 16 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index c49edd1..fc90d60 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -377,8 +377,21 @@ namespace OpenSim.Region.Framework.Scenes
377 if (part == null) 377 if (part == null)
378 return; 378 return;
379 379
380 SceneObjectGroup obj = part.ParentGroup; 380 SceneObjectGroup group = part.ParentGroup;
381 if(group == null || group.IsDeleted)
382 return;
383
384 if (Permissions.CanMoveObject(group.UUID, remoteClient.AgentId))// && PermissionsMngr.)
385 {
386 group.GrabMovement(objectID, offset, pos, remoteClient);
387 }
381 388
389 // This is outside the above permissions condition
390 // so that if the object is locked the client moving the object
391 // get's it's position on the simulator even if it was the same as before
392 // This keeps the moving user's client in sync with the rest of the world.
393 group.SendGroupTerseUpdate();
394
382 SurfaceTouchEventArgs surfaceArg = null; 395 SurfaceTouchEventArgs surfaceArg = null;
383 if (surfaceArgs != null && surfaceArgs.Count > 0) 396 if (surfaceArgs != null && surfaceArgs.Count > 0)
384 surfaceArg = surfaceArgs[0]; 397 surfaceArg = surfaceArgs[0];
@@ -391,9 +404,9 @@ namespace OpenSim.Region.Framework.Scenes
391 // or if we're meant to pass on touches anyway. Don't send to root prim 404 // or if we're meant to pass on touches anyway. Don't send to root prim
392 // if prim touched is the root prim as we just did it 405 // if prim touched is the root prim as we just did it
393 if (((part.ScriptEvents & scriptEvents.touch) == 0) || 406 if (((part.ScriptEvents & scriptEvents.touch) == 0) ||
394 (part.PassTouches && (part.LocalId != obj.RootPart.LocalId))) 407 (part.PassTouches && (part.LocalId != group.RootPart.LocalId)))
395 { 408 {
396 EventManager.TriggerObjectGrabbing(obj.RootPart.LocalId, part.LocalId, part.OffsetPosition, remoteClient, surfaceArg); 409 EventManager.TriggerObjectGrabbing(group.RootPart.LocalId, part.LocalId, part.OffsetPosition, remoteClient, surfaceArg);
397 } 410 }
398 } 411 }
399 412