diff options
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs | 12 | ||||
-rw-r--r-- | OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs | 20 |
2 files changed, 30 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 964efda..7840571 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs | |||
@@ -346,7 +346,15 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
346 | InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId); | 346 | InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId); |
347 | InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID); | 347 | InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID); |
348 | 348 | ||
349 | inv.SendBulkUpdateInventory(content.Folders.ToArray(), content.Items.ToArray()); | 349 | List<InventoryFolderBase> keep = new List<InventoryFolderBase>(); |
350 | |||
351 | foreach (InventoryFolderBase f in content.Folders) | ||
352 | { | ||
353 | if (f.Name != "My Suitcase" && f.Name != "Current Outfit") | ||
354 | keep.Add(f); | ||
355 | } | ||
356 | |||
357 | inv.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray()); | ||
350 | } | 358 | } |
351 | } | 359 | } |
352 | } | 360 | } |
@@ -379,7 +387,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
379 | 387 | ||
380 | foreach (InventoryFolderBase f in content.Folders) | 388 | foreach (InventoryFolderBase f in content.Folders) |
381 | { | 389 | { |
382 | if (f.Name != "My Suitcase") | 390 | if (f.Name != "My Suitcase" && f.Name != "Current Outfit") |
383 | { | 391 | { |
384 | f.Name = f.Name + " (Unavailable)"; | 392 | f.Name = f.Name + " (Unavailable)"; |
385 | keep.Add(f); | 393 | keep.Add(f); |
diff --git a/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs b/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs index 784f136..c9f4d5a 100644 --- a/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs +++ b/OpenSim/Services/HypergridService/HGSuitcaseInventoryService.cs | |||
@@ -472,6 +472,22 @@ namespace OpenSim.Services.HypergridService | |||
472 | return null; | 472 | return null; |
473 | } | 473 | } |
474 | 474 | ||
475 | private XInventoryFolder GetCurrentOutfitXFolder(UUID userID) | ||
476 | { | ||
477 | XInventoryFolder root = GetRootXFolder(userID); | ||
478 | if (root == null) | ||
479 | return null; | ||
480 | |||
481 | XInventoryFolder[] folders = m_Database.GetFolders( | ||
482 | new string[] { "agentID", "type", "parentFolderID" }, | ||
483 | new string[] { userID.ToString(), ((int)AssetType.CurrentOutfitFolder).ToString(), root.folderID.ToString() }); | ||
484 | |||
485 | if (folders.Length == 0) | ||
486 | return null; | ||
487 | |||
488 | return folders[0]; | ||
489 | } | ||
490 | |||
475 | private XInventoryFolder GetSuitcaseXFolder(UUID principalID) | 491 | private XInventoryFolder GetSuitcaseXFolder(UUID principalID) |
476 | { | 492 | { |
477 | // Warp! Root folder for travelers | 493 | // Warp! Root folder for travelers |
@@ -510,6 +526,7 @@ namespace OpenSim.Services.HypergridService | |||
510 | if (m_SuitcaseTrees.TryGetValue(principalID, out t)) | 526 | if (m_SuitcaseTrees.TryGetValue(principalID, out t)) |
511 | return t; | 527 | return t; |
512 | 528 | ||
529 | // Get the tree of the suitcase folder | ||
513 | t = GetFolderTreeRecursive(folder); | 530 | t = GetFolderTreeRecursive(folder); |
514 | m_SuitcaseTrees.AddOrUpdate(principalID, t, 5*60); // 5minutes | 531 | m_SuitcaseTrees.AddOrUpdate(principalID, t, 5*60); // 5minutes |
515 | return t; | 532 | return t; |
@@ -555,6 +572,9 @@ namespace OpenSim.Services.HypergridService | |||
555 | List<XInventoryFolder> tree = new List<XInventoryFolder>(); | 572 | List<XInventoryFolder> tree = new List<XInventoryFolder>(); |
556 | tree.Add(suitcase); // Warp! the tree is the real root folder plus the children of the suitcase folder | 573 | tree.Add(suitcase); // Warp! the tree is the real root folder plus the children of the suitcase folder |
557 | tree.AddRange(GetFolderTree(principalID, suitcase.folderID)); | 574 | tree.AddRange(GetFolderTree(principalID, suitcase.folderID)); |
575 | // Also add the Current Outfit folder to the list of available folders | ||
576 | tree.Add(GetCurrentOutfitXFolder(principalID)); | ||
577 | |||
558 | XInventoryFolder f = tree.Find(delegate(XInventoryFolder fl) | 578 | XInventoryFolder f = tree.Find(delegate(XInventoryFolder fl) |
559 | { | 579 | { |
560 | if (fl.folderID == folderID) return true; | 580 | if (fl.folderID == folderID) return true; |