aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.Inventory.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs44
1 files changed, 39 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index bc6b165..19fa6c5 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -326,10 +326,17 @@ namespace OpenSim.Region.Framework.Scenes
326 { 326 {
327 if (UUID.Zero == transactionID) 327 if (UUID.Zero == transactionID)
328 { 328 {
329 item.Flags = itemUpd.Flags;
329 item.Name = itemUpd.Name; 330 item.Name = itemUpd.Name;
330 item.Description = itemUpd.Description; 331 item.Description = itemUpd.Description;
332 if (item.NextPermissions != (itemUpd.NextPermissions & item.BasePermissions))
333 item.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner;
331 item.NextPermissions = itemUpd.NextPermissions & item.BasePermissions; 334 item.NextPermissions = itemUpd.NextPermissions & item.BasePermissions;
335 if (item.EveryOnePermissions != (itemUpd.EveryOnePermissions & item.BasePermissions))
336 item.Flags |= (uint)InventoryItemFlags.ObjectOverwriteEveryone;
332 item.EveryOnePermissions = itemUpd.EveryOnePermissions & item.BasePermissions; 337 item.EveryOnePermissions = itemUpd.EveryOnePermissions & item.BasePermissions;
338 if (item.GroupPermissions != (itemUpd.GroupPermissions & item.BasePermissions))
339 item.Flags |= (uint)InventoryItemFlags.ObjectOverwriteGroup;
333 item.GroupPermissions = itemUpd.GroupPermissions & item.BasePermissions; 340 item.GroupPermissions = itemUpd.GroupPermissions & item.BasePermissions;
334 item.GroupID = itemUpd.GroupID; 341 item.GroupID = itemUpd.GroupID;
335 item.GroupOwned = itemUpd.GroupOwned; 342 item.GroupOwned = itemUpd.GroupOwned;
@@ -344,9 +351,12 @@ namespace OpenSim.Region.Framework.Scenes
344 // TODO: Check if folder changed and move item 351 // TODO: Check if folder changed and move item
345 //item.NextPermissions = itemUpd.Folder; 352 //item.NextPermissions = itemUpd.Folder;
346 item.InvType = itemUpd.InvType; 353 item.InvType = itemUpd.InvType;
354
355 if (item.SalePrice != itemUpd.SalePrice ||
356 item.SaleType != itemUpd.SaleType)
357 item.Flags |= (uint)InventoryItemFlags.ObjectSlamSale;
347 item.SalePrice = itemUpd.SalePrice; 358 item.SalePrice = itemUpd.SalePrice;
348 item.SaleType = itemUpd.SaleType; 359 item.SaleType = itemUpd.SaleType;
349 item.Flags = itemUpd.Flags;
350 360
351 InventoryService.UpdateItem(item); 361 InventoryService.UpdateItem(item);
352 } 362 }
@@ -527,7 +537,8 @@ namespace OpenSim.Region.Framework.Scenes
527 // Assign to the actual item. Make sure the slam bit is 537 // Assign to the actual item. Make sure the slam bit is
528 // set, if it wasn't set before. 538 // set, if it wasn't set before.
529 itemCopy.BasePermissions = basePerms; 539 itemCopy.BasePermissions = basePerms;
530 itemCopy.CurrentPermissions = ownerPerms | 16; // Slam 540 itemCopy.CurrentPermissions = ownerPerms;
541 itemCopy.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm;
531 542
532 itemCopy.NextPermissions = item.NextPermissions; 543 itemCopy.NextPermissions = item.NextPermissions;
533 544
@@ -1043,7 +1054,7 @@ namespace OpenSim.Region.Framework.Scenes
1043 else 1054 else
1044 agentItem.CurrentPermissions = agentItem.BasePermissions & taskItem.CurrentPermissions; 1055 agentItem.CurrentPermissions = agentItem.BasePermissions & taskItem.CurrentPermissions;
1045 1056
1046 agentItem.CurrentPermissions |= 16; // Slam 1057 agentItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm;
1047 agentItem.NextPermissions = taskItem.NextPermissions; 1058 agentItem.NextPermissions = taskItem.NextPermissions;
1048 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); 1059 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move);
1049 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions; 1060 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions;
@@ -1254,7 +1265,7 @@ namespace OpenSim.Region.Framework.Scenes
1254 (srcTaskItem.NextPermissions | (uint)PermissionMask.Move); 1265 (srcTaskItem.NextPermissions | (uint)PermissionMask.Move);
1255 destTaskItem.BasePermissions = srcTaskItem.BasePermissions & 1266 destTaskItem.BasePermissions = srcTaskItem.BasePermissions &
1256 (srcTaskItem.NextPermissions | (uint)PermissionMask.Move); 1267 (srcTaskItem.NextPermissions | (uint)PermissionMask.Move);
1257 destTaskItem.CurrentPermissions |= 16; // Slam! 1268 destTaskItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm;
1258 } 1269 }
1259 } 1270 }
1260 1271
@@ -1435,6 +1446,8 @@ namespace OpenSim.Region.Framework.Scenes
1435 // Base ALWAYS has move 1446 // Base ALWAYS has move
1436 currentItem.BasePermissions |= (uint)PermissionMask.Move; 1447 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1437 1448
1449 itemInfo.Flags = currentItem.Flags;
1450
1438 // Check if we're allowed to mess with permissions 1451 // Check if we're allowed to mess with permissions
1439 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god 1452 if (!Permissions.IsGod(remoteClient.AgentId)) // Not a god
1440 { 1453 {
@@ -1452,6 +1465,14 @@ namespace OpenSim.Region.Framework.Scenes
1452 // Owner can't change base, and can change other 1465 // Owner can't change base, and can change other
1453 // only up to base 1466 // only up to base
1454 itemInfo.BasePermissions = currentItem.BasePermissions; 1467 itemInfo.BasePermissions = currentItem.BasePermissions;
1468 if (itemInfo.EveryonePermissions != currentItem.EveryonePermissions)
1469 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteEveryone;
1470 if (itemInfo.GroupPermissions != currentItem.GroupPermissions)
1471 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteGroup;
1472 if (itemInfo.CurrentPermissions != currentItem.CurrentPermissions)
1473 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteOwner;
1474 if (itemInfo.NextPermissions != currentItem.NextPermissions)
1475 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner;
1455 itemInfo.EveryonePermissions &= currentItem.BasePermissions; 1476 itemInfo.EveryonePermissions &= currentItem.BasePermissions;
1456 itemInfo.GroupPermissions &= currentItem.BasePermissions; 1477 itemInfo.GroupPermissions &= currentItem.BasePermissions;
1457 itemInfo.CurrentPermissions &= currentItem.BasePermissions; 1478 itemInfo.CurrentPermissions &= currentItem.BasePermissions;
@@ -1459,6 +1480,19 @@ namespace OpenSim.Region.Framework.Scenes
1459 } 1480 }
1460 1481
1461 } 1482 }
1483 else
1484 {
1485 if (itemInfo.BasePermissions != currentItem.BasePermissions)
1486 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteBase;
1487 if (itemInfo.EveryonePermissions != currentItem.EveryonePermissions)
1488 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteEveryone;
1489 if (itemInfo.GroupPermissions != currentItem.GroupPermissions)
1490 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteGroup;
1491 if (itemInfo.CurrentPermissions != currentItem.CurrentPermissions)
1492 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteOwner;
1493 if (itemInfo.NextPermissions != currentItem.NextPermissions)
1494 itemInfo.Flags |= (uint)InventoryItemFlags.ObjectOverwriteNextOwner;
1495 }
1462 1496
1463 // Next ALWAYS has move 1497 // Next ALWAYS has move
1464 itemInfo.NextPermissions |= (uint)PermissionMask.Move; 1498 itemInfo.NextPermissions |= (uint)PermissionMask.Move;
@@ -1667,7 +1701,7 @@ namespace OpenSim.Region.Framework.Scenes
1667 srcTaskItem.NextPermissions; 1701 srcTaskItem.NextPermissions;
1668 destTaskItem.BasePermissions = srcTaskItem.BasePermissions & 1702 destTaskItem.BasePermissions = srcTaskItem.BasePermissions &
1669 srcTaskItem.NextPermissions; 1703 srcTaskItem.NextPermissions;
1670 destTaskItem.CurrentPermissions |= 16; // Slam! 1704 destTaskItem.Flags |= (uint)InventoryItemFlags.ObjectSlamPerm;
1671 } 1705 }
1672 } 1706 }
1673 1707