// <summary> // </summary> // <param name=""></param> public bool SetAppearance(UUID userID, AvatarAppearance appearance) { OSDMap map = appearance.Pack(); if (map == null) { m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to encode appearance for {0}", userID); return(false); } // m_log.DebugFormat("[SIMIAN AVATAR CONNECTOR] save appearance for {0}",userID); NameValueCollection requestArgs = new NameValueCollection { { "RequestMethod", "AddUserData" }, { "UserID", userID.ToString() }, { "LLPackedAppearance", OSDParser.SerializeJsonString(map) } }; OSDMap response = SimianGrid.PostToService(m_serverUrl, requestArgs); bool success = response["Success"].AsBoolean(); if (!success) { m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to save appearance for {0}: {1}", userID, response["Message"].AsString()); } return(success); }
public bool SaveAvatarArchive(string fileName, UUID principalID, string folderName, UUID snapshotUUID, bool isPublic) { UserAccount account = UserAccountService.GetUserAccount(null, principalID); if (account == null) { MainConsole.Instance.Error("[AvatarArchive]: User not found!"); return(false); } AvatarAppearance appearance = AvatarService.GetAppearance(account.PrincipalID); if (appearance == null) { MainConsole.Instance.Error("[AvatarArchive] Appearance not found!"); return(false); } AvatarArchive archive = new AvatarArchive(); archive.AssetsMap = new OSDMap(); archive.BodyMap = appearance.Pack(); archive.Appearance = appearance; archive.ItemsMap = new OSDMap(); foreach (AvatarWearable wear in appearance.Wearables) { for (int i = 0; i < wear.Count; i++) { WearableItem w = wear[i]; if (w.AssetID != UUID.Zero) { SaveItem(w.ItemID, ref archive); SaveAsset(w.AssetID, ref archive); } } } List <AvatarAttachment> attachments = appearance.GetAttachments(); foreach (AvatarAttachment a in attachments.Where(a => a.AssetID != UUID.Zero)) { SaveItem(a.ItemID, ref archive); SaveAsset(a.AssetID, ref archive); } archive.FolderName = folderName; archive.Snapshot = snapshotUUID; archive.IsPublic = isPublic; File.WriteAllText(fileName, OSDParser.SerializeLLSDXmlString(archive.ToOSD())); MainConsole.Instance.Info("[AvatarArchive] Saved archive to " + fileName); return(true); }
/// <summary> /// Pack AgentCircuitData into an OSDMap for transmission over LLSD XML or LLSD json /// </summary> /// <returns>map of the agent circuit data</returns> public virtual OSDMap PackAgentCircuitData() { OSDMap args = new OSDMap(); args["agent_id"] = OSD.FromUUID(AgentID); args["caps_path"] = OSD.FromString(CapsPath); args["child"] = OSD.FromBoolean(child); args["roothandle"] = OSD.FromULong(roothandle); args["reallyischild"] = OSD.FromBoolean(reallyischild); args["circuit_code"] = OSD.FromString(circuitcode.ToString()); args["secure_session_id"] = OSD.FromUUID(SecureSessionID); args["session_id"] = OSD.FromUUID(SessionID); args["service_session_id"] = OSD.FromString(ServiceSessionID); args["start_pos"] = OSD.FromString(startpos.ToString()); args["client_ip"] = OSD.FromString(IPAddress); args["otherInfo"] = OSDParser.SerializeLLSDXmlString(OtherInformation); args["teleport_flags"] = OSD.FromUInteger(teleportFlags); args["first_name"] = OSD.FromString(firstname); args["last_name"] = OSD.FromString(lastname); args["draw_distance"] = DrawDistance; args["RegionUDPPort"] = RegionUDPPort; if (Appearance != null) { args["appearance_serial"] = OSD.FromInteger(Appearance.Serial); OSDMap appmap = Appearance.Pack(); args["packed_appearance"] = appmap; } else { MainConsole.Instance.Error("[AgentCircuitData]: NOT PACKING APPEARANCE FOR " + firstname + " " + lastname + ", user may be messed up"); } if (ServiceURLs != null && ServiceURLs.Count > 0) { OSDMap urls = new OSDMap(); foreach (KeyValuePair <string, object> kvp in ServiceURLs) { //System.Console.WriteLine("XXX " + kvp.Key + "=" + kvp.Value); urls[kvp.Key] = OSD.FromString((kvp.Value == null) ? string.Empty : kvp.Value.ToString()); } args["serviceurls"] = urls; } return(args); }
public virtual OSDMap Pack() { // DEBUG ON //MainConsole.Instance.WarnFormat("[CHILDAGENTDATAUPDATE] Pack data"); // DEBUG OFF OSDMap args = new OSDMap(); args["message_type"] = OSD.FromString("AgentData"); args["region_id"] = OSD.FromString(RegionID.ToString()); args["circuit_code"] = OSD.FromString(CircuitCode.ToString()); args["agent_uuid"] = OSD.FromUUID(AgentID); args["session_uuid"] = OSD.FromUUID(SessionID); args["position"] = OSD.FromString(Position.ToString()); args["velocity"] = OSD.FromString(Velocity.ToString()); args["center"] = OSD.FromString(Center.ToString()); args["size"] = OSD.FromString(Size.ToString()); args["at_axis"] = OSD.FromString(AtAxis.ToString()); args["left_axis"] = OSD.FromString(LeftAxis.ToString()); args["up_axis"] = OSD.FromString(UpAxis.ToString()); args["far"] = OSD.FromReal(Far); args["aspect"] = OSD.FromReal(Aspect); if ((Throttles != null) && (Throttles.Length > 0)) { args["throttles"] = OSD.FromBinary(Throttles); } args["locomotion_state"] = OSD.FromString(LocomotionState.ToString()); args["head_rotation"] = OSD.FromString(HeadRotation.ToString()); args["body_rotation"] = OSD.FromString(BodyRotation.ToString()); args["control_flags"] = OSD.FromString(ControlFlags.ToString()); args["energy_level"] = OSD.FromReal(EnergyLevel); args["speed"] = OSD.FromString(Speed.ToString()); args["god_level"] = OSD.FromString(GodLevel.ToString()); args["draw_distance"] = OSD.FromReal(DrawDistance); args["always_run"] = OSD.FromBoolean(AlwaysRun); args["sent_initial_wearables"] = OSD.FromBoolean(SentInitialWearables); args["prey_agent"] = OSD.FromUUID(PreyAgent); args["agent_access"] = OSD.FromString(AgentAccess.ToString()); args["active_group_id"] = OSD.FromUUID(ActiveGroupID); args["IsCrossing"] = IsCrossing; args["SittingObjects"] = SittingObjects.PackUpdateMessage(); if ((Anims != null) && (Anims.Length > 0)) { OSDArray anims = new OSDArray(Anims.Length); foreach (Animation aanim in Anims) { anims.Add(aanim.PackUpdateMessage()); } args["animations"] = anims; } if (Appearance != null) { args["packed_appearance"] = Appearance.Pack(); } if ((Controllers != null) && (Controllers.Length > 0)) { OSDArray controls = new OSDArray(Controllers.Length); foreach (ControllerData ctl in Controllers) { controls.Add(ctl.PackUpdateMessage()); } args["controllers"] = controls; } return(args); }
/// <summary> /// Saves the avatar archive. /// </summary> /// <returns><c>true</c>, if avatar archive was saved, <c>false</c> otherwise.</returns> /// <param name="fileName">File name.</param> /// <param name="principalID">Principal I.</param> /// <param name="folderName">Folder name.</param> /// <param name="snapshotUUID">Snapshot UUI.</param> /// <param name="isPublic">If set to <c>true</c> is public.</param> public bool SaveAvatarArchive(string fileName, UUID principalID, string folderName, UUID snapshotUUID, bool isPublic) { UserAccount account = userAccountService.GetUserAccount(null, principalID); if (account == null) { MainConsole.Instance.Error("[AvatarArchive]: User not found!"); return(false); } AvatarAppearance appearance = avatarService.GetAppearance(account.PrincipalID); if (appearance == null) { MainConsole.Instance.Error("[AvatarArchive] Appearance not found!"); return(false); } string archiveName = Path.GetFileNameWithoutExtension(fileName); string filePath = Path.GetDirectoryName(fileName); AvatarArchive archive = new AvatarArchive(); archive.AssetsMap = new OSDMap(); archive.ItemsMap = new OSDMap(); int wearCount = 0; foreach (AvatarWearable wear in appearance.Wearables) { for (int i = 0; i < wear.Count; i++) { WearableItem w = wear[i]; if (w.AssetID != UUID.Zero) { SaveItem(w.ItemID, ref archive); SaveAsset(w.AssetID, ref archive); wearCount++; } } } MainConsole.Instance.InfoFormat("[AvatarArchive] Adding {0} wearables to {1}", wearCount, archiveName); int attachCount = 0; List <AvatarAttachment> attachments = appearance.GetAttachments(); foreach (AvatarAttachment a in attachments.Where(a => a.AssetID != UUID.Zero)) { SaveItem(a.ItemID, ref archive); SaveAsset(a.AssetID, ref archive); attachCount++; } MainConsole.Instance.InfoFormat("[AvatarArchive] Adding {0} attachments to {1}", attachCount, archiveName); // set details archive.Appearance = appearance; archive.BodyMap = appearance.Pack(); archive.FolderName = folderName; archive.Snapshot = snapshotUUID; archive.IsPublic = isPublic; File.WriteAllText(fileName, OSDParser.SerializeLLSDXmlString(archive.ToOSD())); if (snapshotUUID != UUID.Zero) { ExportArchiveImage(snapshotUUID, archiveName, filePath); MainConsole.Instance.Info("[AvatarArchive] Saved archive snapshot"); } MainConsole.Instance.Info("[AvatarArchive] Saved archive to " + fileName); return(true); }
protected void HandleSaveAvatarArchive(string module, string[] cmdparams) { if (cmdparams.Length != 7) { m_log.Info("[AvatarArchive] Not enough parameters!"); } UserAccount account = UserAccountService.GetUserAccount(UUID.Zero, cmdparams[3] + " " + cmdparams[4]); if (account == null) { m_log.Error("[AvatarArchive] User not found!"); return; } IScenePresence SP; m_scene.TryGetScenePresence(account.PrincipalID, out SP); if (SP == null) { return; //Bad people! } SP.ControllingClient.SendAlertMessage("Appearance saving in progress..."); AvatarAppearance appearance = AvatarService.GetAppearance(SP.UUID); if (appearance == null) { IAvatarAppearanceModule appearancemod = SP.RequestModuleInterface <IAvatarAppearanceModule> (); appearance = appearancemod.Appearance; } StreamWriter writer = new StreamWriter(cmdparams[5], false); OSDMap map = new OSDMap(); OSDMap body = new OSDMap(); OSDMap assets = new OSDMap(); OSDMap items = new OSDMap(); body = appearance.Pack(); body.Add("FolderName", OSD.FromString(cmdparams[6])); foreach (AvatarWearable wear in appearance.Wearables) { for (int i = 0; i < wear.Count; i++) { WearableItem w = wear[i]; if (w.AssetID != UUID.Zero) { SaveItem(w.ItemID, items, assets); SaveAsset(w.AssetID, assets); } } } List <AvatarAttachment> attachments = appearance.GetAttachments(); foreach (AvatarAttachment a in attachments) { if (a.AssetID != UUID.Zero) { SaveItem(a.ItemID, items, assets); SaveAsset(a.AssetID, assets); } } map.Add("Body", body); map.Add("Assets", assets); map.Add("Items", items); //Write the map writer.Write(OSDParser.SerializeLLSDXmlString(map)); writer.Close(); writer.Dispose(); m_log.Info("[AvatarArchive] Saved archive to " + cmdparams[5]); }
protected void HandleSaveAvatarArchive(string module, string[] cmdparams) { if (cmdparams.Length != 8) { m_log.Info("[AvatarArchive] Not enough parameters!"); return; } string ext = Path.GetExtension(cmdparams[6]); if (ext != "") { m_log.Error("[AvatarArchive] Do not Specify File Extention, It is automaticly Added"); return; } UserAccount account = GetUserInfo(cmdparams[3], cmdparams[4], cmdparams[5]); if (account == null) { return; } ScenePresence SP; m_scene.TryGetScenePresence(account.PrincipalID, out SP); if (SP == null) { return; //Bad people! } SP.ControllingClient.SendAlertMessage("Appearance saving in progress..."); AvatarAppearance appearance = AvatarService.GetAppearance(SP.UUID); if (appearance == null) { appearance = SP.Appearance; } StreamWriter writer = new StreamWriter(cmdparams[6] + ".aa", false); OSDMap map = new OSDMap(); OSDMap body = new OSDMap(); OSDMap assets = new OSDMap(); OSDMap items = new OSDMap(); body = appearance.Pack(); body.Add("FolderName", OSD.FromString(cmdparams[7])); int wearCount = 0; foreach (AvatarWearable wear in appearance.Wearables) { for (int i = 0; i < wear.Count; i++) { WearableItem w = wear[i]; SaveAsset(w.AssetID, assets); SaveItem(w.ItemID, items, assets); wearCount++; } } int attachCount = 0; List <AvatarAttachment> attachments = appearance.GetAttachments(); foreach (AvatarAttachment a in attachments) { UUID itemID = a.ItemID; m_log.Info("[AvatarArchive] Saved attachment " + a.ItemID); if (a.ItemID != UUID.Zero) { SaveAsset(a.ItemID, assets); SaveItem(a.ItemID, items, assets); attachCount++; } } foreach (AvatarAttachment a in attachments.Where(a => a.AssetID != UUID.Zero)) { SaveItem(a.ItemID, items, assets); SaveAsset(a.AssetID, assets); } map.Add("Body", body); map.Add("Assets", assets); map.Add("Items", items); //Write the map writer.Write(OSDParser.SerializeLLSDXmlString(map)); writer.Close(); writer.Dispose(); m_log.Info("[AvatarArchive] Saved archive to " + cmdparams[6] + ".aa"); }
protected void HandleSaveAvatarArchive(string[] cmdparams) { if (cmdparams.Length < 7) { MainConsole.Instance.Info("[AvatarArchive] Not enough parameters!"); } UserAccount account = UserAccountService.GetUserAccount(null, cmdparams[3] + " " + cmdparams[4]); if (account == null) { MainConsole.Instance.Error("[AvatarArchive] User not found!"); return; } IScenePresence SP = null; ISceneManager manager = m_registry.RequestModuleInterface <ISceneManager>(); if (manager != null) { foreach (IScene scene in manager.GetAllScenes()) { if (scene.TryGetScenePresence(account.PrincipalID, out SP)) { break; } } if (SP == null) { return; //Bad people! } } if (SP != null) { SP.ControllingClient.SendAlertMessage("Appearance saving in progress..."); } AvatarAppearance appearance = AvatarService.GetAppearance(account.PrincipalID); if (appearance == null) { IAvatarAppearanceModule appearancemod = m_registry.RequestModuleInterface <IAvatarAppearanceModule>(); appearance = appearancemod.Appearance; } OSDMap map = new OSDMap(); OSDMap body = new OSDMap(); OSDMap assets = new OSDMap(); OSDMap items = new OSDMap(); body = appearance.Pack(); body.Add("FolderName", OSD.FromString(cmdparams[6])); foreach (AvatarWearable wear in appearance.Wearables) { for (int i = 0; i < wear.Count; i++) { WearableItem w = wear[i]; if (w.AssetID != UUID.Zero) { SaveItem(w.ItemID, items, assets); SaveAsset(w.AssetID, assets); } } } List <AvatarAttachment> attachments = appearance.GetAttachments(); #if (!ISWIN) foreach (AvatarAttachment a in attachments) { if (a.AssetID != UUID.Zero) { SaveItem(a.ItemID, items, assets); SaveAsset(a.AssetID, assets); } } #else foreach (AvatarAttachment a in attachments.Where(a => a.AssetID != UUID.Zero)) { SaveItem(a.ItemID, items, assets); SaveAsset(a.AssetID, assets); } #endif map.Add("Body", body); map.Add("Assets", assets); map.Add("Items", items); //Write the map if (cmdparams[5].EndsWith(".database")) { IAvatarArchiverConnector archiver = DataManager.DataManager.RequestPlugin <IAvatarArchiverConnector>(); if (archiver != null) { AvatarArchive archive = new AvatarArchive(); archive.ArchiveXML = OSDParser.SerializeLLSDXmlString(map); // Add the extra details for archives archive.Name = cmdparams[5].Substring(0, cmdparams[5].LastIndexOf(".database")); if (cmdparams.Length > 7) { if (cmdparams.Contains("--snapshot")) { UUID snapshot; int index = 0; for (; index < cmdparams.Length; index++) { if (cmdparams[index] == "--snapshot") { index++; break; } } if (index < cmdparams.Length && UUID.TryParse(cmdparams[index], out snapshot)) { archive.Snapshot = snapshot.ToString(); } } else { archive.Snapshot = UUID.Zero.ToString(); } if (cmdparams.Contains("--public")) { archive.IsPublic = 1; } } else { archive.Snapshot = UUID.Zero.ToString(); archive.IsPublic = 0; } // Save the archive archiver.SaveAvatarArchive(archive); MainConsole.Instance.Info("[AvatarArchive] Saved archive to database as: " + archive.Name); } else { MainConsole.Instance.Error("[AvatarArchive] Unable to save to database!"); return; } } else { StreamWriter writer = new StreamWriter(cmdparams[5], false); writer.Write(OSDParser.SerializeLLSDXmlString(map)); writer.Close(); writer.Dispose(); MainConsole.Instance.Info("[AvatarArchive] Saved archive to " + cmdparams[5]); } }