예제 #1
0
        public bool TryGetInventorySkeleton(UUID presenceID, out InventorySkeleton skeleton)
        {
            bool success = false;

            skeleton = new InventorySkeleton();

            if (IsVerified(presenceID))
            {
                Dictionary <UUID, InventoryBase> agentInventory   = GetAgentInventory(presenceID);
                Dictionary <UUID, InventoryBase> libraryInventory = GetAgentInventory(LIBRARY_OWNER);

                skeleton.Skeleton        = new InventoryFolder();
                skeleton.LibrarySkeleton = new InventoryFolder();

                lock (m_syncRoot)
                {
                    foreach (InventoryBase obj in agentInventory.Values)
                    {
                        if (obj is InventoryFolder)
                        {
                            InventoryFolder folderObj = (InventoryFolder)obj;
                            if (folderObj.ParentID == UUID.Zero)
                            {
                                skeleton.Skeleton.ID                   = folderObj.ID;
                                skeleton.Skeleton.Name                 = folderObj.Name;
                                skeleton.Skeleton.ExtraData            = folderObj.ExtraData;
                                skeleton.Skeleton.OwnerID              = folderObj.OwnerID;
                                skeleton.Skeleton.PreferredContentType = folderObj.PreferredContentType;
                                skeleton.Skeleton.Version              = folderObj.Version;

                                skeleton.RootFolderID = folderObj.ID;
                            }
                            else
                            {
                                skeleton.Skeleton.Children.Add(folderObj.ID, folderObj);
                            }
                        }
                    }

                    foreach (InventoryBase obj in libraryInventory.Values)
                    {
                        if (obj is InventoryFolder)
                        {
                            InventoryFolder folderObj = (InventoryFolder)obj;
                            if (folderObj.ParentID == UUID.Zero)
                            {
                                skeleton.LibrarySkeleton.ID                   = folderObj.ID;
                                skeleton.LibrarySkeleton.ExtraData            = folderObj.ExtraData;
                                skeleton.LibrarySkeleton.Name                 = folderObj.Name;
                                skeleton.LibrarySkeleton.OwnerID              = folderObj.OwnerID;
                                skeleton.LibrarySkeleton.PreferredContentType = folderObj.PreferredContentType;
                                skeleton.LibrarySkeleton.Version              = folderObj.Version;

                                skeleton.LibraryFolderID = folderObj.ID;
                                skeleton.LibraryOwner    = folderObj.OwnerID;
                            }
                            else
                            {
                                skeleton.LibrarySkeleton.Children.Add(folderObj.ID, folderObj);
                            }
                        }
                    }
                }

                m_log.Debug("Fetched inventory skeleton for " + presenceID + ". RootFolderID= " +
                            skeleton.RootFolderID + ", LibraryFolderID=" + skeleton.LibraryFolderID);
                success = true;
            }

            return(success);
        }
예제 #2
0
 public bool TryGetInventorySkeleton(UUID presenceID, out InventorySkeleton skeleton)
 {
     skeleton = null;
     return(false);
 }