Beispiel #1
0
        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);
            }