aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules
diff options
context:
space:
mode:
authorOren Hurvitz2013-11-04 19:28:24 +0200
committerJustin Clark-Casey (justincc)2014-01-10 19:37:59 +0000
commit13f31fdf85c404896c166932730b7b8bc5416626 (patch)
tree7fc489557e3b3c040b02c185c5ea97bcdf85434d /OpenSim/Region/CoreModules
parentIf an agent is sitting, then do send the rotation in the agent update instead... (diff)
downloadopensim-SC_OLD-13f31fdf85c404896c166932730b7b8bc5416626.zip
opensim-SC_OLD-13f31fdf85c404896c166932730b7b8bc5416626.tar.gz
opensim-SC_OLD-13f31fdf85c404896c166932730b7b8bc5416626.tar.bz2
opensim-SC_OLD-13f31fdf85c404896c166932730b7b8bc5416626.tar.xz
Refactored setting permissions when rezzing items: use the same function when rezzing from user inventory and prim inventory.
Also, fixed a bug: when rezzing a coalesced object from a prim's inventory, apply the coalesced object's name and description only to the first sub-object; not to all the objects in the coalescence. (This was already done correctly when rezzing from a user's inventory.)
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs51
1 files changed, 14 insertions, 37 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 831922e..da36ed0 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -512,10 +512,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
512 item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask; 512 item.EveryOnePermissions = so.RootPart.EveryoneMask & so.RootPart.NextOwnerMask;
513 item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask; 513 item.GroupPermissions = so.RootPart.GroupMask & so.RootPart.NextOwnerMask;
514 514
515 // Magic number badness. Maybe this deserves an enum. 515 // apply next owner perms on rez
516 // bit 4 (16) is the "Slam" bit, it means treat as passed 516 item.CurrentPermissions |= SceneObjectGroup.SLAM;
517 // and apply next owner perms on rez
518 item.CurrentPermissions |= 16; // Slam!
519 } 517 }
520 else 518 else
521 { 519 {
@@ -809,11 +807,15 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
809 group.RootPart.Shape.LastAttachPoint = (byte)group.AttachmentPoint; 807 group.RootPart.Shape.LastAttachPoint = (byte)group.AttachmentPoint;
810 } 808 }
811 809
812 foreach (SceneObjectPart part in group.Parts) 810 if (item == null)
813 { 811 {
814 // Make the rezzer the owner, as this is not necessarily set correctly in the serialized asset. 812 // Change ownership. Normally this is done in DoPreRezWhenFromItem(), but in this case we must do it here.
815 part.LastOwnerID = part.OwnerID; 813 foreach (SceneObjectPart part in group.Parts)
816 part.OwnerID = remoteClient.AgentId; 814 {
815 // Make the rezzer the owner, as this is not necessarily set correctly in the serialized asset.
816 part.LastOwnerID = part.OwnerID;
817 part.OwnerID = remoteClient.AgentId;
818 }
817 } 819 }
818 820
819 if (!attachment) 821 if (!attachment)
@@ -969,44 +971,19 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
969// "[INVENTORY ACCESS MODULE]: rootPart.OwnedID {0}, item.Owner {1}, item.CurrentPermissions {2:X}", 971// "[INVENTORY ACCESS MODULE]: rootPart.OwnedID {0}, item.Owner {1}, item.CurrentPermissions {2:X}",
970// rootPart.OwnerID, item.Owner, item.CurrentPermissions); 972// rootPart.OwnerID, item.Owner, item.CurrentPermissions);
971 973
972 if ((rootPart.OwnerID != item.Owner) || 974 if ((rootPart.OwnerID != item.Owner) || (item.CurrentPermissions & SceneObjectGroup.SLAM) != 0)
973 (item.CurrentPermissions & 16) != 0)
974 { 975 {
975 //Need to kill the for sale here 976 //Need to kill the for sale here
976 rootPart.ObjectSaleType = 0; 977 rootPart.ObjectSaleType = 0;
977 rootPart.SalePrice = 10; 978 rootPart.SalePrice = 10;
978
979 if (m_Scene.Permissions.PropagatePermissions())
980 {
981 foreach (SceneObjectPart part in so.Parts)
982 {
983 if ((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0)
984 {
985 part.EveryoneMask = item.EveryOnePermissions;
986 part.NextOwnerMask = item.NextPermissions;
987 }
988 part.GroupMask = 0; // DO NOT propagate here
989 }
990
991 so.ApplyNextOwnerPermissions();
992 }
993 } 979 }
994 980
995 foreach (SceneObjectPart part in so.Parts) 981 foreach (SceneObjectPart part in so.Parts)
996 { 982 {
997 part.FromUserInventoryItemID = fromUserInventoryItemId; 983 part.FromUserInventoryItemID = fromUserInventoryItemId;
998 984 part.ApplyPermissionsOnRez(item, true, m_Scene);
999 if ((part.OwnerID != item.Owner) ||
1000 (item.CurrentPermissions & 16) != 0)
1001 {
1002 part.Inventory.ChangeInventoryOwner(item.Owner);
1003 part.GroupMask = 0; // DO NOT propagate here
1004 }
1005
1006 part.EveryoneMask = item.EveryOnePermissions;
1007 part.NextOwnerMask = item.NextPermissions;
1008 } 985 }
1009 986
1010 rootPart.TrimPermissions(); 987 rootPart.TrimPermissions();
1011 988
1012 if (isAttachment) 989 if (isAttachment)