aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs32
1 files changed, 12 insertions, 20 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
index b9fa8e4..ddb03c3 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
@@ -315,8 +315,7 @@ namespace OpenSim.Region.Framework.Scenes
315 const uint copytransfermast = (uint)(PermissionMask.Copy | PermissionMask.Transfer); 315 const uint copytransfermast = (uint)(PermissionMask.Copy | PermissionMask.Transfer);
316 316
317 uint basePerms = (RootPart.BaseMask & allmask) | (uint)PermissionMask.Move; 317 uint basePerms = (RootPart.BaseMask & allmask) | (uint)PermissionMask.Move;
318 bool noBaseTransfer = (RootPart.OwnerID != RootPart.GroupID && 318 bool noBaseTransfer = (basePerms & (uint)PermissionMask.Transfer) == 0;
319 (basePerms & (uint)PermissionMask.Transfer) == 0);
320 319
321 uint rootOwnerPerms = RootPart.OwnerMask; 320 uint rootOwnerPerms = RootPart.OwnerMask;
322 uint owner = rootOwnerPerms; 321 uint owner = rootOwnerPerms;
@@ -342,17 +341,17 @@ namespace OpenSim.Region.Framework.Scenes
342 341
343 owner &= basePerms; 342 owner &= basePerms;
344 m_EffectiveOwnerPerms = owner; 343 m_EffectiveOwnerPerms = owner;
344 uint ownertransfermask = owner & (uint)PermissionMask.Transfer;
345 345
346 // recover modify and move 346 // recover modify and move
347 rootGroupPerms &= movemodmask; 347 rootGroupPerms &= movemodmask;
348 group |= rootGroupPerms; 348 group |= rootGroupPerms;
349 if(noBaseTransfer) 349 if(noBaseTransfer)
350 group &=~(uint)PermissionMask.Copy; 350 group &=~(uint)PermissionMask.Copy;
351 else
352 group |= ownertransfermask;
351 353
352 uint groupOrEveryone = group; 354 uint groupOrEveryone = group;
353
354 if((group & copytransfermast) == 0)
355 group |= (uint)PermissionMask.Transfer;
356 m_EffectiveGroupPerms = group & owner; 355 m_EffectiveGroupPerms = group & owner;
357 356
358 // recover move 357 // recover move
@@ -361,15 +360,12 @@ namespace OpenSim.Region.Framework.Scenes
361 everyone &= ~(uint)PermissionMask.Modify; 360 everyone &= ~(uint)PermissionMask.Modify;
362 if(noBaseTransfer) 361 if(noBaseTransfer)
363 everyone &=~(uint)PermissionMask.Copy; 362 everyone &=~(uint)PermissionMask.Copy;
363 else
364 everyone |= ownertransfermask;
364 365
365 groupOrEveryone |= everyone; 366 groupOrEveryone |= everyone;
366 367
367 if((everyone & copytransfermast) == 0)
368 everyone |= (uint)PermissionMask.Transfer;
369 m_EffectiveEveryOnePerms = everyone & owner; 368 m_EffectiveEveryOnePerms = everyone & owner;
370
371 if((groupOrEveryone & copytransfermast) == 0)
372 groupOrEveryone |= (uint)PermissionMask.Transfer;
373 m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner; 369 m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner;
374 } 370 }
375 } 371 }
@@ -386,8 +382,7 @@ namespace OpenSim.Region.Framework.Scenes
386 const uint copytransfermast = (uint)(PermissionMask.Copy | PermissionMask.Transfer); 382 const uint copytransfermast = (uint)(PermissionMask.Copy | PermissionMask.Transfer);
387 383
388 uint basePerms = (RootPart.BaseMask & allmask) | (uint)PermissionMask.Move; 384 uint basePerms = (RootPart.BaseMask & allmask) | (uint)PermissionMask.Move;
389 bool noBaseTransfer = (RootPart.OwnerID == RootPart.GroupID && 385 bool noBaseTransfer = (basePerms & (uint)PermissionMask.Transfer) == 0;
390 (basePerms & (uint)PermissionMask.Transfer) == 0);
391 386
392 uint rootOwnerPerms = RootPart.OwnerMask; 387 uint rootOwnerPerms = RootPart.OwnerMask;
393 uint owner = rootOwnerPerms; 388 uint owner = rootOwnerPerms;
@@ -412,17 +407,17 @@ namespace OpenSim.Region.Framework.Scenes
412 407
413 owner &= basePerms; 408 owner &= basePerms;
414 m_EffectiveOwnerPerms = owner; 409 m_EffectiveOwnerPerms = owner;
410 uint ownertransfermask = owner & (uint)PermissionMask.Transfer;
415 411
416 // recover modify and move 412 // recover modify and move
417 rootGroupPerms &= movemodmask; 413 rootGroupPerms &= movemodmask;
418 group |= rootGroupPerms; 414 group |= rootGroupPerms;
419 if(noBaseTransfer) 415 if(noBaseTransfer)
420 group &=~(uint)PermissionMask.Copy; 416 group &=~(uint)PermissionMask.Copy;
417 else
418 group |= ownertransfermask;
421 419
422 uint groupOrEveryone = group; 420 uint groupOrEveryone = group;
423
424 if((group & copytransfermast) == 0)
425 group |= (uint)PermissionMask.Transfer;
426 m_EffectiveGroupPerms = group & owner; 421 m_EffectiveGroupPerms = group & owner;
427 422
428 // recover move 423 // recover move
@@ -431,15 +426,12 @@ namespace OpenSim.Region.Framework.Scenes
431 everyone &= ~(uint)PermissionMask.Modify; 426 everyone &= ~(uint)PermissionMask.Modify;
432 if(noBaseTransfer) 427 if(noBaseTransfer)
433 everyone &=~(uint)PermissionMask.Copy; 428 everyone &=~(uint)PermissionMask.Copy;
429 else
430 everyone |= ownertransfermask;
434 431
435 groupOrEveryone |= everyone; 432 groupOrEveryone |= everyone;
436 433
437 if((everyone & copytransfermast) == 0)
438 everyone |= (uint)PermissionMask.Transfer;
439 m_EffectiveEveryOnePerms = everyone & owner; 434 m_EffectiveEveryOnePerms = everyone & owner;
440
441 if((groupOrEveryone & copytransfermast) == 0)
442 groupOrEveryone |= (uint)PermissionMask.Transfer;
443 m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner; 435 m_EffectiveGroupOrEveryOnePerms = groupOrEveryone & owner;
444 } 436 }
445 } 437 }