public static string Serialize(RegionSettings settings, ViewerEnvironment RegionEnv) { StringWriter sw = new StringWriter(); XmlTextWriter xtw = new XmlTextWriter(sw); xtw.Formatting = Formatting.Indented; xtw.WriteStartDocument(); xtw.WriteStartElement("RegionSettings"); xtw.WriteStartElement("General"); xtw.WriteElementString("AllowDamage", settings.AllowDamage.ToString()); xtw.WriteElementString("AllowLandResell", settings.AllowLandResell.ToString()); xtw.WriteElementString("AllowLandJoinDivide", settings.AllowLandJoinDivide.ToString()); xtw.WriteElementString("BlockFly", settings.BlockFly.ToString()); xtw.WriteElementString("BlockLandShowInSearch", settings.BlockShowInSearch.ToString()); xtw.WriteElementString("BlockTerraform", settings.BlockTerraform.ToString()); xtw.WriteElementString("DisableCollisions", settings.DisableCollisions.ToString()); xtw.WriteElementString("DisablePhysics", settings.DisablePhysics.ToString()); xtw.WriteElementString("DisableScripts", settings.DisableScripts.ToString()); xtw.WriteElementString("MaturityRating", settings.Maturity.ToString()); xtw.WriteElementString("RestrictPushing", settings.RestrictPushing.ToString()); xtw.WriteElementString("AgentLimit", settings.AgentLimit.ToString()); xtw.WriteElementString("ObjectBonus", settings.ObjectBonus.ToString()); xtw.WriteEndElement(); xtw.WriteStartElement("GroundTextures"); xtw.WriteElementString("Texture1", settings.TerrainTexture1.ToString()); xtw.WriteElementString("Texture2", settings.TerrainTexture2.ToString()); xtw.WriteElementString("Texture3", settings.TerrainTexture3.ToString()); xtw.WriteElementString("Texture4", settings.TerrainTexture4.ToString()); xtw.WriteElementString("ElevationLowSW", settings.Elevation1SW.ToString()); xtw.WriteElementString("ElevationLowNW", settings.Elevation1NW.ToString()); xtw.WriteElementString("ElevationLowSE", settings.Elevation1SE.ToString()); xtw.WriteElementString("ElevationLowNE", settings.Elevation1NE.ToString()); xtw.WriteElementString("ElevationHighSW", settings.Elevation2SW.ToString()); xtw.WriteElementString("ElevationHighNW", settings.Elevation2NW.ToString()); xtw.WriteElementString("ElevationHighSE", settings.Elevation2SE.ToString()); xtw.WriteElementString("ElevationHighNE", settings.Elevation2NE.ToString()); xtw.WriteEndElement(); xtw.WriteStartElement("Terrain"); xtw.WriteElementString("WaterHeight", settings.WaterHeight.ToString()); xtw.WriteElementString("TerrainRaiseLimit", settings.TerrainRaiseLimit.ToString()); xtw.WriteElementString("TerrainLowerLimit", settings.TerrainLowerLimit.ToString()); xtw.WriteElementString("UseEstateSun", settings.UseEstateSun.ToString()); xtw.WriteElementString("FixedSun", settings.FixedSun.ToString()); xtw.WriteElementString("SunPosition", settings.SunPosition.ToString()); xtw.WriteEndElement(); xtw.WriteStartElement("Telehub"); if (settings.TelehubObject != UUID.Zero) { xtw.WriteElementString("TelehubObject", settings.TelehubObject.ToString()); foreach (SpawnPoint sp in settings.SpawnPoints()) { xtw.WriteElementString("SpawnPoint", sp.ToString()); } } xtw.WriteEndElement(); if (RegionEnv != null) { xtw.WriteStartElement("Environment"); xtw.WriteElementString("data", ViewerEnvironment.ToOSDString(RegionEnv)); xtw.WriteEndElement(); } xtw.WriteEndElement(); xtw.Close(); sw.Close(); return(sw.ToString()); }
/// <summary> /// Serialize land data /// </summary> /// <param name='landData'></param> /// <param name='options'> /// Serialization options. /// Can be null if there are no options. /// "wipe-owners" will write UUID.Zero rather than the ownerID so that a later reload loads all parcels with the estate owner as the owner /// </param> public static string Serialize(LandData landData, Dictionary <string, object> options) { StringWriter sw = new StringWriter(); XmlTextWriter xtw = new XmlTextWriter(sw); xtw.Formatting = Formatting.Indented; xtw.WriteStartDocument(); xtw.WriteStartElement("LandData"); xtw.WriteElementString("Area", Convert.ToString(landData.Area)); xtw.WriteElementString("AuctionID", Convert.ToString(landData.AuctionID)); xtw.WriteElementString("AuthBuyerID", landData.AuthBuyerID.ToString()); xtw.WriteElementString("Category", Convert.ToString((sbyte)landData.Category)); xtw.WriteElementString("ClaimDate", Convert.ToString(landData.ClaimDate)); xtw.WriteElementString("ClaimPrice", Convert.ToString(landData.ClaimPrice)); xtw.WriteElementString("GlobalID", landData.GlobalID.ToString()); UUID groupID = options.ContainsKey("wipe-owners") ? UUID.Zero : landData.GroupID; xtw.WriteElementString("GroupID", groupID.ToString()); bool isGroupOwned = options.ContainsKey("wipe-owners") ? false : landData.IsGroupOwned; xtw.WriteElementString("IsGroupOwned", Convert.ToString(isGroupOwned)); xtw.WriteElementString("Bitmap", Convert.ToBase64String(landData.Bitmap)); xtw.WriteElementString("Description", landData.Description); xtw.WriteElementString("Flags", Convert.ToString((uint)landData.Flags)); xtw.WriteElementString("LandingType", Convert.ToString((byte)landData.LandingType)); xtw.WriteElementString("Name", landData.Name); xtw.WriteElementString("Status", Convert.ToString((sbyte)landData.Status)); xtw.WriteElementString("LocalID", landData.LocalID.ToString()); xtw.WriteElementString("MediaAutoScale", Convert.ToString(landData.MediaAutoScale)); xtw.WriteElementString("MediaID", landData.MediaID.ToString()); xtw.WriteElementString("MediaURL", landData.MediaURL); xtw.WriteElementString("MusicURL", landData.MusicURL); UUID ownerID = options.ContainsKey("wipe-owners") ? UUID.Zero : landData.OwnerID; xtw.WriteElementString("OwnerID", ownerID.ToString()); xtw.WriteStartElement("ParcelAccessList"); foreach (LandAccessEntry pal in landData.ParcelAccessList) { xtw.WriteStartElement("ParcelAccessEntry"); xtw.WriteElementString("AgentID", pal.AgentID.ToString()); xtw.WriteElementString("Time", pal.Expires.ToString()); xtw.WriteElementString("AccessList", Convert.ToString((uint)pal.Flags)); xtw.WriteEndElement(); } xtw.WriteEndElement(); xtw.WriteElementString("PassHours", Convert.ToString(landData.PassHours)); xtw.WriteElementString("PassPrice", Convert.ToString(landData.PassPrice)); xtw.WriteElementString("SalePrice", Convert.ToString(landData.SalePrice)); xtw.WriteElementString("SnapshotID", landData.SnapshotID.ToString()); xtw.WriteElementString("UserLocation", landData.UserLocation.ToString()); xtw.WriteElementString("UserLookAt", landData.UserLookAt.ToString()); xtw.WriteElementString("Dwell", "0"); xtw.WriteElementString("OtherCleanTime", Convert.ToString(landData.OtherCleanTime)); if (landData.Environment != null) { try { string senv = ViewerEnvironment.ToOSDString(landData.Environment); xtw.WriteElementString("Environment", senv); } catch { } } xtw.WriteEndElement(); xtw.Close(); sw.Close(); return(sw.ToString()); }