diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | 32 |
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 | } |