diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index 55d2e32..9a01a28 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | |||
@@ -282,7 +282,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
282 | PermissionMask.Move | | 282 | PermissionMask.Move | |
283 | PermissionMask.Transfer) | 7; | 283 | PermissionMask.Transfer) | 7; |
284 | 284 | ||
285 | uint ownerMask = 0x7ffffff; | 285 | uint ownerMask = 0x7fffffff; |
286 | foreach (SceneObjectPart part in m_parts.Values) | 286 | foreach (SceneObjectPart part in m_parts.Values) |
287 | { | 287 | { |
288 | ownerMask &= part.OwnerMask; | 288 | ownerMask &= part.OwnerMask; |
@@ -296,12 +296,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
296 | if ((ownerMask & (uint)PermissionMask.Transfer) == 0) | 296 | if ((ownerMask & (uint)PermissionMask.Transfer) == 0) |
297 | perms &= ~(uint)PermissionMask.Transfer; | 297 | perms &= ~(uint)PermissionMask.Transfer; |
298 | 298 | ||
299 | if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Modify) == 0) | 299 | // If root prim permissions are applied here, this would screw |
300 | perms &= ~((uint)PermissionMask.Modify >> 13); | 300 | // with in-inventory manipulation of the next owner perms |
301 | if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Copy) == 0) | 301 | // in a major way. So, let's move this to the give itself. |
302 | perms &= ~((uint)PermissionMask.Copy >> 13); | 302 | // Yes. I know. Evil. |
303 | if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Transfer) == 0) | 303 | // if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Modify) == 0) |
304 | perms &= ~((uint)PermissionMask.Transfer >> 13); | 304 | // perms &= ~((uint)PermissionMask.Modify >> 13); |
305 | // if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Copy) == 0) | ||
306 | // perms &= ~((uint)PermissionMask.Copy >> 13); | ||
307 | // if ((ownerMask & RootPart.NextOwnerMask & (uint)PermissionMask.Transfer) == 0) | ||
308 | // perms &= ~((uint)PermissionMask.Transfer >> 13); | ||
305 | 309 | ||
306 | return perms; | 310 | return perms; |
307 | } | 311 | } |