aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
diff options
context:
space:
mode:
authorMelanie2010-08-26 00:11:07 +0100
committerMelanie2010-08-26 00:11:07 +0100
commitfc8d2be632c754338b136fe4a3d57c40b0190ce7 (patch)
tree94bb954bdf258e968e8c337ad1da57ba9fa68b91 /OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
parentMerge branch 'master' into careminster-presence-refactor (diff)
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC_OLD-fc8d2be632c754338b136fe4a3d57c40b0190ce7.zip
opensim-SC_OLD-fc8d2be632c754338b136fe4a3d57c40b0190ce7.tar.gz
opensim-SC_OLD-fc8d2be632c754338b136fe4a3d57c40b0190ce7.tar.bz2
opensim-SC_OLD-fc8d2be632c754338b136fe4a3d57c40b0190ce7.tar.xz
Merge branch 'master' into careminster-presence-refactor
This was rather conflicted. Please test linking.
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs69
1 files changed, 67 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 8b4f0ed..10931b7 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -37,6 +37,7 @@ using log4net;
37using OpenSim.Framework; 37using OpenSim.Framework;
38using OpenSim.Region.Framework.Interfaces; 38using OpenSim.Region.Framework.Interfaces;
39using OpenSim.Region.Framework.Scenes.Scripting; 39using OpenSim.Region.Framework.Scenes.Scripting;
40using OpenSim.Region.Framework.Scenes.Serialization;
40 41
41namespace OpenSim.Region.Framework.Scenes 42namespace OpenSim.Region.Framework.Scenes
42{ 43{
@@ -722,6 +723,71 @@ namespace OpenSim.Region.Framework.Scenes
722 return items; 723 return items;
723 } 724 }
724 725
726 public SceneObjectGroup GetRezReadySceneObject(TaskInventoryItem item)
727 {
728 UUID ownerID = item.OwnerID;
729 AssetBase rezAsset = m_part.ParentGroup.Scene.AssetService.Get(item.AssetID.ToString());
730
731 if (null == rezAsset)
732 {
733 m_log.WarnFormat(
734 "[PRIM INVENTORY]: Could not find asset {0} for inventory item {1} in {2}",
735 item.AssetID, item.Name, m_part.Name);
736 return null;
737 }
738
739 string xmlData = Utils.BytesToString(rezAsset.Data);
740 SceneObjectGroup group = SceneObjectSerializer.FromOriginalXmlFormat(xmlData);
741
742 group.ResetIDs();
743
744 SceneObjectPart rootPart = group.GetChildPart(group.UUID);
745
746 // Since renaming the item in the inventory does not affect the name stored
747 // in the serialization, transfer the correct name from the inventory to the
748 // object itself before we rez.
749 rootPart.Name = item.Name;
750 rootPart.Description = item.Description;
751
752 List<SceneObjectPart> partList = null;
753
754 lock (group.Children)
755 partList = new List<SceneObjectPart>(group.Children.Values);
756
757 group.SetGroup(m_part.GroupID, null);
758
759 if ((rootPart.OwnerID != item.OwnerID) || (item.CurrentPermissions & 16) != 0)
760 {
761 if (m_part.ParentGroup.Scene.Permissions.PropagatePermissions())
762 {
763 foreach (SceneObjectPart part in partList)
764 {
765 part.EveryoneMask = item.EveryonePermissions;
766 part.NextOwnerMask = item.NextPermissions;
767 }
768
769 group.ApplyNextOwnerPermissions();
770 }
771 }
772
773 foreach (SceneObjectPart part in partList)
774 {
775 if ((part.OwnerID != item.OwnerID) || (item.CurrentPermissions & 16) != 0)
776 {
777 part.LastOwnerID = part.OwnerID;
778 part.OwnerID = item.OwnerID;
779 part.Inventory.ChangeInventoryOwner(item.OwnerID);
780 }
781
782 part.EveryoneMask = item.EveryonePermissions;
783 part.NextOwnerMask = item.NextPermissions;
784 }
785
786 rootPart.TrimPermissions();
787
788 return group;
789 }
790
725 /// <summary> 791 /// <summary>
726 /// Update an existing inventory item. 792 /// Update an existing inventory item.
727 /// </summary> 793 /// </summary>
@@ -1197,6 +1263,5 @@ namespace OpenSim.Region.Framework.Scenes
1197 1263
1198 Items.LockItemsForRead(false); 1264 Items.LockItemsForRead(false);
1199 } 1265 }
1200
1201 } 1266 }
1202} 1267} \ No newline at end of file