public InventoryFolderBase GetFolder(UUID folderId) { InventoryFolderBase folder = _impl.getInventoryFolder(folderId); if (folder == null) { throw new InventoryObjectMissingException(String.Format("Unable to find folder {0}", folderId)); } //now we need the descendents List <InventoryItemBase> items = _impl.getInventoryInFolder(folderId); List <InventoryFolderBase> folders = _impl.getInventoryFolders(folderId); folder.Items.AddRange(items); foreach (InventoryFolderBase subFolder in folders) { InventorySubFolderBase sub = new InventorySubFolderBase { ID = subFolder.ID, Name = subFolder.Name, Owner = subFolder.Owner, Type = subFolder.Type }; folder.SubFolders.Add(sub); } return(folder); }
private static InventoryFolderBase GetCurrentOutfitFolder(CachedUserInfo userInfo) { // Duplicate method exists at Scene.Inventory.cs::Scene::GetCurrentOutfitFolder InventoryFolderBase currentOutfitFolder = null; try { currentOutfitFolder = userInfo.FindFolderForType((int)AssetType.CurrentOutfitFolder); } catch (InventoryStorageException) { // could not find it by type. load root and try to find it by name. InventorySubFolderBase foundFolder = null; InventoryFolderBase rootFolder = userInfo.FindFolderForType((int)AssetType.RootFolder); foreach (var subfolder in rootFolder.SubFolders) { if (subfolder.Name == COF_NAME) { foundFolder = subfolder; break; } } if (foundFolder != null) { currentOutfitFolder = userInfo.GetFolder(foundFolder.ID); if (currentOutfitFolder != null) { currentOutfitFolder.Level = InventoryFolderBase.FolderLevel.TopLevel; userInfo.UpdateFolder(currentOutfitFolder); } } } if (currentOutfitFolder != null) { currentOutfitFolder = userInfo.GetFolder(currentOutfitFolder.ID); } return(currentOutfitFolder); }