aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-01-06 01:16:06 +0000
committerJustin Clarke Casey2008-01-06 01:16:06 +0000
commit7cedb098699fe31ac906c95d1b1fd906dd502955 (patch)
tree4db199055848d6c50b8ad6e516d739fde305656e /OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
parentThank you, CharlieO for: miscellaneous folders for inventory files (diff)
downloadopensim-SC_OLD-7cedb098699fe31ac906c95d1b1fd906dd502955.zip
opensim-SC_OLD-7cedb098699fe31ac906c95d1b1fd906dd502955.tar.gz
opensim-SC_OLD-7cedb098699fe31ac906c95d1b1fd906dd502955.tar.bz2
opensim-SC_OLD-7cedb098699fe31ac906c95d1b1fd906dd502955.tar.xz
Prim inventory phase 4. Properly recover the prim folder ID from storage. Scripts now show up in prim inventories after region restart.
Probably doesn't yet work for any items other than scripts. Still some work to do. No user functionality exposed. Not yet user tieable into normal code.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectPart.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs98
1 files changed, 76 insertions, 22 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 051884d..2ddcf7b 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -56,7 +56,21 @@ namespace OpenSim.Region.Environment.Scenes
56 private const uint FULL_MASK_PERMISSIONS_GENERAL = 2147483647; 56 private const uint FULL_MASK_PERMISSIONS_GENERAL = 2147483647;
57 private const uint FULL_MASK_PERMISSIONS_OWNER = 2147483647; 57 private const uint FULL_MASK_PERMISSIONS_OWNER = 2147483647;
58 private string m_inventoryFileName = ""; 58 private string m_inventoryFileName = "";
59
60 /// <summary>
61 /// The inventory folder for this prim
62 /// </summary>
59 private LLUUID m_folderID = LLUUID.Zero; 63 private LLUUID m_folderID = LLUUID.Zero;
64
65 /// <summary>
66 /// Exposing this is not particularly good, but it's one of the least evils at the moment to see
67 /// folder id from prim inventory item data, since it's not (yet) actually stored with the prim.
68 /// </summary>
69 public LLUUID FolderID
70 {
71 get { return m_folderID; }
72 set { m_folderID = value; }
73 }
60 74
61 [XmlIgnore] public PhysicsActor PhysActor = null; 75 [XmlIgnore] public PhysicsActor PhysActor = null;
62 76
@@ -67,14 +81,9 @@ namespace OpenSim.Region.Environment.Scenes
67 = new Dictionary<LLUUID, TaskInventoryItem>(); 81 = new Dictionary<LLUUID, TaskInventoryItem>();
68 82
69 [XmlIgnore] 83 [XmlIgnore]
70 /// <summary>
71 /// Not really ideal to allow this to be set, but currently expedient for inserting a prim inventory
72 /// from persistence.
73 /// </summary>
74 public IDictionary<LLUUID, TaskInventoryItem> TaskInventory 84 public IDictionary<LLUUID, TaskInventoryItem> TaskInventory
75 { 85 {
76 get { return m_taskInventory; } 86 get { return m_taskInventory; }
77 set { m_taskInventory = value; }
78 } 87 }
79 88
80 public LLUUID LastOwnerID; 89 public LLUUID LastOwnerID;
@@ -1059,6 +1068,10 @@ namespace OpenSim.Region.Environment.Scenes
1059 1068
1060 #region Inventory 1069 #region Inventory
1061 1070
1071 /// <summary>
1072 /// Add an item to this prim's inventory.
1073 /// </summary>
1074 /// <param name="item"></param>
1062 public void AddInventoryItem(TaskInventoryItem item) 1075 public void AddInventoryItem(TaskInventoryItem item)
1063 { 1076 {
1064 item.parent_id = m_folderID; 1077 item.parent_id = m_folderID;
@@ -1067,6 +1080,21 @@ namespace OpenSim.Region.Environment.Scenes
1067 m_taskInventory.Add(item.item_id, item); 1080 m_taskInventory.Add(item.item_id, item);
1068 m_inventorySerial++; 1081 m_inventorySerial++;
1069 } 1082 }
1083
1084 /// <summary>
1085 /// Add a whole collection of items to the prim's inventory at once. We assume that the items already
1086 /// have all their fields correctly filled out.
1087 /// </summary>
1088 /// <param name="items"></param>
1089 public void AddInventoryItems(ICollection<TaskInventoryItem> items)
1090 {
1091 foreach (TaskInventoryItem item in items)
1092 {
1093 m_taskInventory.Add(item.item_id, item);
1094 }
1095
1096 m_inventorySerial++;
1097 }
1070 1098
1071 public int RemoveInventoryItem(IClientAPI remoteClient, uint localID, LLUUID itemID) 1099 public int RemoveInventoryItem(IClientAPI remoteClient, uint localID, LLUUID itemID)
1072 { 1100 {
@@ -1077,7 +1105,7 @@ namespace OpenSim.Region.Environment.Scenes
1077 string type = m_taskInventory[itemID].inv_type; 1105 string type = m_taskInventory[itemID].inv_type;
1078 m_taskInventory.Remove(itemID); 1106 m_taskInventory.Remove(itemID);
1079 m_inventorySerial++; 1107 m_inventorySerial++;
1080 if (type == "lsltext") 1108 if (type == "lsl_text")
1081 { 1109 {
1082 return 10; 1110 return 10;
1083 } 1111 }
@@ -1110,7 +1138,7 @@ namespace OpenSim.Region.Environment.Scenes
1110 } 1138 }
1111 } 1139 }
1112 1140
1113 public string RequestInventoryFile(IXfer xferManager) 1141 public void RequestInventoryFile(IXfer xferManager)
1114 { 1142 {
1115 byte[] fileData = new byte[0]; 1143 byte[] fileData = new byte[0];
1116 InventoryStringBuilder invString = new InventoryStringBuilder(m_folderID, UUID); 1144 InventoryStringBuilder invString = new InventoryStringBuilder(m_folderID, UUID);
@@ -1141,12 +1169,16 @@ namespace OpenSim.Region.Environment.Scenes
1141 invString.AddNameValueLine("creation_date", item.creation_date.ToString()); 1169 invString.AddNameValueLine("creation_date", item.creation_date.ToString());
1142 invString.AddSectionEnd(); 1170 invString.AddSectionEnd();
1143 } 1171 }
1172
1144 fileData = Helpers.StringToField(invString.BuildString); 1173 fileData = Helpers.StringToField(invString.BuildString);
1174
1175// MainLog.Instance.Verbose(
1176// "PRIMINVENTORY", "RequestInventoryFile fileData: {0}", Helpers.FieldToUTF8String(fileData));
1177
1145 if (fileData.Length > 2) 1178 if (fileData.Length > 2)
1146 { 1179 {
1147 xferManager.AddNewFile(m_inventoryFileName, fileData); 1180 xferManager.AddNewFile(m_inventoryFileName, fileData);
1148 } 1181 }
1149 return "";
1150 } 1182 }
1151 1183
1152 #endregion 1184 #endregion
@@ -1707,21 +1739,43 @@ namespace OpenSim.Region.Environment.Scenes
1707 1739
1708 public class TaskInventoryItem 1740 public class TaskInventoryItem
1709 { 1741 {
1742 /// <summary>
1743 /// Inventory types
1744 /// </summary>
1745 public static string[] InvTypes = new string[]
1746 {
1747 "texture",
1748 "sound",
1749 "",
1750 "",
1751 "",
1752 "",
1753 "",
1754 "",
1755 "",
1756 "",
1757 "lsl_text",
1758 ""
1759 };
1760
1761 /// <summary>
1762 /// Asset types
1763 /// </summary>
1710 public static string[] Types = new string[] 1764 public static string[] Types = new string[]
1711 { 1765 {
1712 "texture", 1766 "texture",
1713 "sound", 1767 "sound",
1714 "", 1768 "",
1715 "", 1769 "",
1716 "", 1770 "",
1717 "", 1771 "",
1718 "", 1772 "",
1719 "", 1773 "",
1720 "", 1774 "",
1721 "", 1775 "",
1722 "lsltext", 1776 "lsltext",
1723 "" 1777 ""
1724 }; 1778 };
1725 1779
1726 public LLUUID item_id = LLUUID.Zero; 1780 public LLUUID item_id = LLUUID.Zero;
1727 public LLUUID parent_id = LLUUID.Zero; //parent folder id 1781 public LLUUID parent_id = LLUUID.Zero; //parent folder id