aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs42
1 files changed, 27 insertions, 15 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
index bba0138..cca8998 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
@@ -50,6 +50,12 @@ namespace OpenSim.Region.Environment.Scenes
50 /// <param name="west">Distance from the west border where the cursor is located</param> 50 /// <param name="west">Distance from the west border where the cursor is located</param>
51 public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, IClientAPI remoteUser) 51 public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, IClientAPI remoteUser)
52 { 52 {
53 // Do a permissions check before allowing terraforming.
54 // random users are now no longer allowed to terraform
55 // if permissions are enabled.
56 if (!PermissionsMngr.CanTerraform(remoteUser.AgentId, new LLVector3(north, west, 0)))
57 return;
58
53 // Shiny. 59 // Shiny.
54 double size = (double)(1 << brushsize); 60 double size = (double)(1 << brushsize);
55 61
@@ -240,15 +246,18 @@ namespace OpenSim.Region.Environment.Scenes
240 } 246 }
241 if (selectedEnt != null) 247 if (selectedEnt != null)
242 { 248 {
243 List<ScenePresence> avatars = this.RequestAvatarList(); 249 if (PermissionsMngr.CanDeRezObject(simClient.AgentId, selectedEnt.m_uuid))
244 foreach (ScenePresence avatar in avatars)
245 {
246 avatar.ControllingClient.SendKillObject(this.m_regionHandle, selectedEnt.LocalId);
247 }
248
249 lock (Entities)
250 { 250 {
251 Entities.Remove(selectedEnt.m_uuid); 251 List<ScenePresence> avatars = this.RequestAvatarList();
252 foreach (ScenePresence avatar in avatars)
253 {
254 avatar.ControllingClient.SendKillObject(this.m_regionHandle, selectedEnt.LocalId);
255 }
256
257 lock (Entities)
258 {
259 Entities.Remove(selectedEnt.m_uuid);
260 }
252 } 261 }
253 } 262 }
254 } 263 }
@@ -501,16 +510,19 @@ namespace OpenSim.Region.Environment.Scenes
501 510
502 public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) 511 public void MoveObject(LLUUID objectID, LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
503 { 512 {
504 bool hasPrim = false; 513 if (PermissionsMngr.CanEditObject(remoteClient.AgentId, objectID))
505 foreach (EntityBase ent in Entities.Values)
506 { 514 {
507 if (ent is SceneObjectGroup) 515 bool hasPrim = false;
516 foreach (EntityBase ent in Entities.Values)
508 { 517 {
509 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(objectID); 518 if (ent is SceneObjectGroup)
510 if (hasPrim != false)
511 { 519 {
512 ((SceneObjectGroup)ent).GrabMovement(offset, pos, remoteClient); 520 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(objectID);
513 break; 521 if (hasPrim != false)
522 {
523 ((SceneObjectGroup)ent).GrabMovement(offset, pos, remoteClient);
524 break;
525 }
514 } 526 }
515 } 527 }
516 } 528 }