aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/ClientView.cs63
-rw-r--r--OpenSim/Region/Communications/Local/LocalInventoryService.cs5
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs10
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs1
-rw-r--r--OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs3
5 files changed, 78 insertions, 4 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs
index 0514df5..1746db8 100644
--- a/OpenSim/Region/ClientStack/ClientView.cs
+++ b/OpenSim/Region/ClientStack/ClientView.cs
@@ -502,6 +502,7 @@ namespace OpenSim.Region.ClientStack
502 public event CreateNewInventoryItem OnCreateNewInventoryItem; 502 public event CreateNewInventoryItem OnCreateNewInventoryItem;
503 public event CreateInventoryFolder OnCreateNewInventoryFolder; 503 public event CreateInventoryFolder OnCreateNewInventoryFolder;
504 public event UpdateInventoryFolder OnUpdateInventoryFolder; 504 public event UpdateInventoryFolder OnUpdateInventoryFolder;
505 public event MoveInventoryFolder OnMoveInventoryFolder;
505 public event FetchInventoryDescendents OnFetchInventoryDescendents; 506 public event FetchInventoryDescendents OnFetchInventoryDescendents;
506 public event PurgeInventoryDescendents OnPurgeInventoryDescendents; 507 public event PurgeInventoryDescendents OnPurgeInventoryDescendents;
507 public event FetchInventory OnFetchInventory; 508 public event FetchInventory OnFetchInventory;
@@ -892,7 +893,7 @@ namespace OpenSim.Region.ClientStack
892 /// <param name="subFoldersCount">The number of subfolders contained in the given folder. This is necessary since 893 /// <param name="subFoldersCount">The number of subfolders contained in the given folder. This is necessary since
893 /// the client is expecting inventory packets which incorporate this number into the descendents field, even though 894 /// the client is expecting inventory packets which incorporate this number into the descendents field, even though
894 /// we send back no details of the folders themselves (only the items).</param> 895 /// we send back no details of the folders themselves (only the items).</param>
895 public void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items, int subFoldersCount) 896 public void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items, List<InventoryFolderBase> folders, int subFoldersCount)
896 { 897 {
897 Encoding enc = Encoding.ASCII; 898 Encoding enc = Encoding.ASCII;
898 uint FULL_MASK_PERMISSIONS = 2147483647; 899 uint FULL_MASK_PERMISSIONS = 2147483647;
@@ -931,14 +932,14 @@ namespace OpenSim.Region.ClientStack
931 descend.ItemData[i].FolderID = item.parentFolderID; 932 descend.ItemData[i].FolderID = item.parentFolderID;
932 descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); 933 descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000");
933 descend.ItemData[i].GroupMask = 0; 934 descend.ItemData[i].GroupMask = 0;
934 descend.ItemData[i].InvType = (sbyte) item.invType; 935 descend.ItemData[i].InvType = (sbyte)item.invType;
935 descend.ItemData[i].Name = Helpers.StringToField(item.inventoryName); 936 descend.ItemData[i].Name = Helpers.StringToField(item.inventoryName);
936 descend.ItemData[i].NextOwnerMask = item.inventoryNextPermissions; 937 descend.ItemData[i].NextOwnerMask = item.inventoryNextPermissions;
937 descend.ItemData[i].OwnerID = item.avatarID; 938 descend.ItemData[i].OwnerID = item.avatarID;
938 descend.ItemData[i].OwnerMask = item.inventoryCurrentPermissions; 939 descend.ItemData[i].OwnerMask = item.inventoryCurrentPermissions;
939 descend.ItemData[i].SalePrice = 0; 940 descend.ItemData[i].SalePrice = 0;
940 descend.ItemData[i].SaleType = 0; 941 descend.ItemData[i].SaleType = 0;
941 descend.ItemData[i].Type = (sbyte) item.assetType; 942 descend.ItemData[i].Type = (sbyte)item.assetType;
942 descend.ItemData[i].CRC = 943 descend.ItemData[i].CRC =
943 944
944 Helpers.InventoryCRC(descend.ItemData[i].CreationDate, descend.ItemData[i].SaleType, 945 Helpers.InventoryCRC(descend.ItemData[i].CreationDate, descend.ItemData[i].SaleType,
@@ -976,6 +977,47 @@ namespace OpenSim.Region.ClientStack
976 { 977 {
977 OutPacket(descend, ThrottleOutPacketType.Asset); 978 OutPacket(descend, ThrottleOutPacketType.Asset);
978 } 979 }
980
981 //send subfolders
982 descend = CreateInventoryDescendentsPacket(ownerID, folderID);
983 descend.FolderData = new InventoryDescendentsPacket.FolderDataBlock[folders.Count];
984 i = 0;
985 count = 0;
986 foreach (InventoryFolderBase folder in folders)
987 {
988 descend.FolderData[i] = new InventoryDescendentsPacket.FolderDataBlock();
989 descend.FolderData[i].FolderID = folder.folderID;
990 descend.FolderData[i].Name = Helpers.StringToField(folder.name);
991 descend.FolderData[i].ParentID = folder.parentID;
992 descend.FolderData[i].Type = (sbyte)folder.type;
993 i++;
994 count++;
995 if (i == 40)
996 {
997 OutPacket(descend, ThrottleOutPacketType.Asset);
998
999 if ((folders.Count - count) > 0)
1000 {
1001 descend = CreateInventoryDescendentsPacket(ownerID, folderID);
1002 if ((folders.Count - count) < 40)
1003 {
1004 descend.FolderData = new InventoryDescendentsPacket.FolderDataBlock[items.Count - count];
1005 descend.AgentData.Descendents = folders.Count - count;
1006 }
1007 else
1008 {
1009 descend.FolderData = new InventoryDescendentsPacket.FolderDataBlock[40];
1010 descend.AgentData.Descendents = 40;
1011 }
1012 i = 0;
1013 }
1014 }
1015 }
1016
1017 if (i < 40)
1018 {
1019 OutPacket(descend, ThrottleOutPacketType.Asset);
1020 }
979 } 1021 }
980 1022
981 private InventoryDescendentsPacket CreateInventoryDescendentsPacket(LLUUID ownerID, LLUUID folderID) 1023 private InventoryDescendentsPacket CreateInventoryDescendentsPacket(LLUUID ownerID, LLUUID folderID)
@@ -2821,6 +2863,17 @@ namespace OpenSim.Region.ClientStack
2821 } 2863 }
2822 } 2864 }
2823 break; 2865 break;
2866 case PacketType.MoveInventoryFolder:
2867 if (OnMoveInventoryFolder != null)
2868 {
2869 MoveInventoryFolderPacket invFolder = (MoveInventoryFolderPacket)Pack;
2870 for (int i = 0; i < invFolder.InventoryData.Length; i++)
2871 {
2872 OnMoveInventoryFolder(this, invFolder.InventoryData[i].FolderID,
2873 invFolder.InventoryData[i].ParentID);
2874 }
2875 }
2876 break;
2824 case PacketType.CreateInventoryItem: 2877 case PacketType.CreateInventoryItem:
2825 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket) Pack; 2878 CreateInventoryItemPacket createItem = (CreateInventoryItemPacket) Pack;
2826 if (OnCreateNewInventoryItem != null) 2879 if (OnCreateNewInventoryItem != null)
@@ -3267,6 +3320,10 @@ namespace OpenSim.Region.ClientStack
3267 // TODO: handle this packet 3320 // TODO: handle this packet
3268 MainLog.Instance.Warn("CLIENT", "unhandled RequestRegionInfo packet"); 3321 MainLog.Instance.Warn("CLIENT", "unhandled RequestRegionInfo packet");
3269 break; 3322 break;
3323 case PacketType.InventoryDescendents:
3324 // TODO: handle this packet
3325 MainLog.Instance.Warn("CLIENT", "unhandled InventoryDescent packet");
3326 break;
3270 default: 3327 default:
3271 MainLog.Instance.Warn("CLIENT", "unhandled packet " + Pack.ToString()); 3328 MainLog.Instance.Warn("CLIENT", "unhandled packet " + Pack.ToString());
3272 break; 3329 break;
diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
index e82d267..08bd850 100644
--- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs
+++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs
@@ -68,6 +68,11 @@ namespace OpenSim.Region.Communications.Local
68 AddFolder(folder); 68 AddFolder(folder);
69 } 69 }
70 70
71 public override void MoveExistingInventoryFolder(InventoryFolderBase folder)
72 {
73 MoveFolder(folder);
74 }
75
71 public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) 76 public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item)
72 { 77 {
73 AddItem(item); 78 AddItem(item);
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs
index d45e150..4f5d9ab 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs
@@ -126,6 +126,16 @@ namespace OpenSim.Region.Communications.OGS1
126 } 126 }
127 } 127 }
128 128
129 public void MoveInventoryFolder(LLUUID userID, InventoryFolderBase folder)
130 {
131 try
132 {
133 RestObjectPoster.BeginPostObject<InventoryFolderBase>(_inventoryServerUrl + "/MoveFolder/", folder);
134 }
135 catch (Exception)
136 {
137 }
138 }
129 public void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) 139 public void AddNewInventoryItem(LLUUID userID, InventoryItemBase item)
130 { 140 {
131 try 141 try
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 59548a2..aad977a 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -1102,6 +1102,7 @@ namespace OpenSim.Region.Environment.Scenes
1102 client.OnCreateNewInventoryItem += CreateNewInventoryItem; 1102 client.OnCreateNewInventoryItem += CreateNewInventoryItem;
1103 client.OnCreateNewInventoryFolder += CommsManager.UserProfileCacheService.HandleCreateInventoryFolder; 1103 client.OnCreateNewInventoryFolder += CommsManager.UserProfileCacheService.HandleCreateInventoryFolder;
1104 client.OnUpdateInventoryFolder += CommsManager.UserProfileCacheService.HandleUpdateInventoryFolder; 1104 client.OnUpdateInventoryFolder += CommsManager.UserProfileCacheService.HandleUpdateInventoryFolder;
1105 client.OnMoveInventoryFolder += CommsManager.UserProfileCacheService.HandleMoveInventoryFolder;
1105 client.OnFetchInventoryDescendents += CommsManager.UserProfileCacheService.HandleFetchInventoryDescendents; 1106 client.OnFetchInventoryDescendents += CommsManager.UserProfileCacheService.HandleFetchInventoryDescendents;
1106 client.OnPurgeInventoryDescendents += CommsManager.UserProfileCacheService.HandlePurgeInventoryDescendents; 1107 client.OnPurgeInventoryDescendents += CommsManager.UserProfileCacheService.HandlePurgeInventoryDescendents;
1107 client.OnRequestTaskInventory += RequestTaskInventory; 1108 client.OnRequestTaskInventory += RequestTaskInventory;
diff --git a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs
index 9864074..9b2cdda 100644
--- a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs
+++ b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs
@@ -108,6 +108,7 @@ namespace SimpleApp
108 public event CreateNewInventoryItem OnCreateNewInventoryItem; 108 public event CreateNewInventoryItem OnCreateNewInventoryItem;
109 public event CreateInventoryFolder OnCreateNewInventoryFolder; 109 public event CreateInventoryFolder OnCreateNewInventoryFolder;
110 public event UpdateInventoryFolder OnUpdateInventoryFolder; 110 public event UpdateInventoryFolder OnUpdateInventoryFolder;
111 public event MoveInventoryFolder OnMoveInventoryFolder;
111 public event FetchInventoryDescendents OnFetchInventoryDescendents; 112 public event FetchInventoryDescendents OnFetchInventoryDescendents;
112 public event PurgeInventoryDescendents OnPurgeInventoryDescendents; 113 public event PurgeInventoryDescendents OnPurgeInventoryDescendents;
113 public event FetchInventory OnFetchInventory; 114 public event FetchInventory OnFetchInventory;
@@ -317,7 +318,7 @@ namespace SimpleApp
317 { 318 {
318 } 319 }
319 320
320 public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items, int subFoldersCount) 321 public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items, List<InventoryFolderBase> folders, int subFoldersCount)
321 { 322 {
322 } 323 }
323 324