diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 98 |
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 |