/// <summary> /// Gets all public avatar archives /// </summary> /// <returns></returns> public List <AvatarArchive> GetAvatarArchives() { var archives = new List <AvatarArchive>(); if (Directory.Exists(m_storeDirectory)) { foreach (string file in Directory.GetFiles(m_storeDirectory, "*.aa")) { try { AvatarArchive archive = new AvatarArchive(); archive.FromOSD((OSDMap)OSDParser.DeserializeLLSDXml(File.ReadAllText(file))); if (archive.IsPublic) { archives.Add(archive); } } catch { } } } return(archives); }
/// <summary> /// Gets all public avatar archives /// </summary> /// <returns></returns> public List <AvatarArchive> GetAvatarArchives() { var archives = new List <AvatarArchive> (); if (Directory.Exists(m_storeDirectory)) { foreach (string file in Directory.GetFiles(m_storeDirectory, "*.aa")) { try { AvatarArchive archive = new AvatarArchive(); archive.FromOSD((OSDMap)OSDParser.DeserializeLLSDXml(File.ReadAllText(file))); if (archive.IsPublic) { //check for a local snapshot var localPic = Path.ChangeExtension(file, "jpg"); if (File.Exists(localPic)) { archive.LocalSnapshot = localPic; } else { archive.LocalSnapshot = string.Empty; } archives.Add(archive); } } catch { MainConsole.Instance.ErrorFormat("[Avatar Archiver]: error deserializing {0} archive", file); } } } return(archives); }
public AvatarArchive LoadAvatarArchive(string fileName, UUID principalID) { AvatarArchive archive = new AvatarArchive(); UserAccount account = UserAccountService.GetUserAccount(null, principalID); if (account == null) { MainConsole.Instance.Error("[AvatarArchive]: User not found!"); return(null); } if (!File.Exists(fileName)) { MainConsole.Instance.Error("[AvatarArchive]: Unable to load from file: file does not exist!"); return(null); } MainConsole.Instance.Info("[AvatarArchive]: Loading archive from " + fileName); archive.FromOSD((OSDMap)OSDParser.DeserializeLLSDXml(File.ReadAllText(fileName))); AvatarAppearance appearance = ConvertXMLToAvatarAppearance(archive.BodyMap); appearance.Owner = principalID; InventoryFolderBase AppearanceFolder = InventoryService.GetFolderForType(account.PrincipalID, InventoryType.Wearable, AssetType.Clothing); List <InventoryItemBase> items = new List <InventoryItemBase>(); InventoryFolderBase folderForAppearance = new InventoryFolderBase( UUID.Random(), archive.FolderName, account.PrincipalID, -1, AppearanceFolder.ID, 1); InventoryService.AddFolder(folderForAppearance); folderForAppearance = InventoryService.GetFolder(folderForAppearance); try { LoadAssets(archive.AssetsMap); appearance = CopyWearablesAndAttachments(account.PrincipalID, UUID.Zero, appearance, folderForAppearance, account.PrincipalID, archive.ItemsMap, out items); } catch (Exception ex) { MainConsole.Instance.Warn("[AvatarArchiver]: Error loading assets and items, " + ex); } MainConsole.Instance.Info("[AvatarArchive]: Loaded archive from " + fileName); archive.Appearance = appearance; return(archive); }
public AvatarArchive LoadAvatarArchive(string fileName, UUID principalID) { AvatarArchive archive = new AvatarArchive(); UserAccount account = UserAccountService.GetUserAccount(null, principalID); if (account == null) { MainConsole.Instance.Error("[AvatarArchive]: User not found!"); return null; } if (!File.Exists(fileName)) { MainConsole.Instance.Error("[AvatarArchive]: Unable to load from file: file does not exist!"); return null; } MainConsole.Instance.Info("[AvatarArchive]: Loading archive from " + fileName); archive.FromOSD((OSDMap)OSDParser.DeserializeLLSDXml(File.ReadAllText(fileName))); AvatarAppearance appearance = ConvertXMLToAvatarAppearance(archive.BodyMap); appearance.Owner = principalID; InventoryFolderBase AppearanceFolder = InventoryService.GetFolderForType(account.PrincipalID, InventoryType.Wearable, AssetType.Clothing); List<InventoryItemBase> items = new List<InventoryItemBase>(); InventoryFolderBase folderForAppearance = new InventoryFolderBase( UUID.Random(), archive.FolderName, account.PrincipalID, -1, AppearanceFolder.ID, 1); InventoryService.AddFolder(folderForAppearance); folderForAppearance = InventoryService.GetFolder(folderForAppearance); try { LoadAssets(archive.AssetsMap); appearance = CopyWearablesAndAttachments(account.PrincipalID, UUID.Zero, appearance, folderForAppearance, account.PrincipalID, out items); } catch (Exception ex) { MainConsole.Instance.Warn("[AvatarArchiver]: Error loading assets and items, " + ex); } MainConsole.Instance.Info("[AvatarArchive]: Loaded archive from " + fileName); archive.Appearance = appearance; return archive; }
public List<AvatarArchive> GetAvatarArchives() { List<AvatarArchive> archives = new List<AvatarArchive>(); foreach (string file in Directory.GetFiles(Environment.CurrentDirectory, "*.aa")) { try { AvatarArchive archive = new AvatarArchive(); archive.FromOSD((OSDMap)OSDParser.DeserializeLLSDXml(File.ReadAllText(file))); if (archive.IsPublic) archives.Add(archive); } catch { } } return archives; }
public AvatarArchive LoadAvatarArchive(string fileName, UUID principalID) { AvatarArchive archive = new AvatarArchive(); UserAccount account = userAccountService.GetUserAccount(null, principalID); if (account == null) { MainConsole.Instance.Error("[Avatar Archiver]: User not found!"); return(null); } // need to be smart here... fileName = PathHelpers.VerifyReadFile(fileName, ".aa", m_storeDirectory); if (!File.Exists(fileName)) { MainConsole.Instance.Error("[Avatar Archiver]: Unable to load from file: file does not exist!"); return(null); } MainConsole.Instance.Info("[Avatar Archiver]: Loading archive from " + fileName); archive.FromOSD((OSDMap)OSDParser.DeserializeLLSDXml(File.ReadAllText(fileName))); AvatarAppearance appearance = ConvertXMLToAvatarAppearance(archive.BodyMap); appearance.Owner = principalID; InventoryFolderBase AppearanceFolder = inventoryService.GetFolderForType(account.PrincipalID, InventoryType.Wearable, FolderType.Clothing); if (AppearanceFolder == null) { AppearanceFolder = new InventoryFolderBase(); // does not exist so... AppearanceFolder.Owner = account.PrincipalID; AppearanceFolder.ID = UUID.Random(); AppearanceFolder.Type = (short)FolderType.Clothing; } List <InventoryItemBase> items; InventoryFolderBase folderForAppearance = new InventoryFolderBase( UUID.Random(), archive.FolderName, account.PrincipalID, (short)FolderType.None, AppearanceFolder.ID, 1); inventoryService.AddFolder(folderForAppearance); folderForAppearance = inventoryService.GetFolder(folderForAppearance); try { LoadAssets(archive.AssetsMap); appearance = CopyWearablesAndAttachments(account.PrincipalID, UUID.Zero, appearance, folderForAppearance, account.PrincipalID, archive.ItemsMap, out items); } catch (Exception ex) { MainConsole.Instance.Warn("[AvatarArchiver]: Error loading assets and items, " + ex); } /* implement fully if we need to * // inform the client if needed * * ScenePresence SP; * MainConsole.Instance.ConsoleScenes[0].TryGetScenePresence(account.PrincipalID, out SP); * if (SP == null) * return; // nobody home! * * SP.ControllingClient.SendAlertMessage("Appearance loading in progress..."); * SP.ControllingClient.SendBulkUpdateInventory(folderForAppearance); */ MainConsole.Instance.Info("[Avatar Archiver]: Loaded archive from " + fileName); archive.Appearance = appearance; return(archive); }