From 52a32878a9573681e3b56d0151c4a0903719eadf Mon Sep 17 00:00:00 2001
From: Oren Hurvitz
Date: Thu, 3 May 2012 19:38:35 +0300
Subject: Save the Telehub and its Spawn Points in the OAR
---
.../External/RegionSettingsSerializer.cs | 37 ++++++++++++++++++++--
.../Tests/RegionSettingsSerializerTests.cs | 8 +++++
2 files changed, 43 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Framework/Serialization')
diff --git a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
index 931898c..f18435d 100644
--- a/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
+++ b/OpenSim/Framework/Serialization/External/RegionSettingsSerializer.cs
@@ -30,6 +30,8 @@ using System.Text;
using System.Xml;
using OpenMetaverse;
using OpenSim.Framework;
+using log4net;
+using System.Reflection;
namespace OpenSim.Framework.Serialization.External
{
@@ -187,7 +189,29 @@ namespace OpenSim.Framework.Serialization.External
break;
}
}
-
+
+ xtr.ReadEndElement();
+
+ if (xtr.IsStartElement("Telehub"))
+ {
+ xtr.ReadStartElement("Telehub");
+
+ while (xtr.Read() && xtr.NodeType != XmlNodeType.EndElement)
+ {
+ switch (xtr.Name)
+ {
+ case "TelehubObject":
+ settings.TelehubObject = UUID.Parse(xtr.ReadElementContentAsString());
+ break;
+ case "SpawnPoint":
+ string str = xtr.ReadElementContentAsString();
+ SpawnPoint sp = SpawnPoint.Parse(str);
+ settings.AddSpawnPoint(sp);
+ break;
+ }
+ }
+ }
+
xtr.Close();
sr.Close();
@@ -243,7 +267,16 @@ namespace OpenSim.Framework.Serialization.External
xtw.WriteElementString("SunPosition", settings.SunPosition.ToString());
// Note: 'SunVector' isn't saved because this value is owned by the Sun Module, which
// calculates it automatically according to the date and other factors.
- xtw.WriteEndElement();
+ 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();
xtw.WriteEndElement();
diff --git a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
index a61e4af..09b6f6d 100644
--- a/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
+++ b/OpenSim/Framework/Serialization/Tests/RegionSettingsSerializerTests.cs
@@ -78,6 +78,10 @@ namespace OpenSim.Framework.Serialization.Tests
true
12
+
+ 00000000-0000-0000-0000-111111111111
+ 1,-2,0.33
+
";
private RegionSettings m_rs;
@@ -116,6 +120,8 @@ namespace OpenSim.Framework.Serialization.Tests
m_rs.TerrainTexture4 = UUID.Parse("00000000-0000-0000-0000-000000000080");
m_rs.UseEstateSun = true;
m_rs.WaterHeight = 23;
+ m_rs.TelehubObject = UUID.Parse("00000000-0000-0000-0000-111111111111");
+ m_rs.AddSpawnPoint(SpawnPoint.Parse("1,-2,0.33"));
}
[Test]
@@ -129,6 +135,8 @@ namespace OpenSim.Framework.Serialization.Tests
Assert.That(deserRs.TerrainTexture2, Is.EqualTo(m_rs.TerrainTexture2));
Assert.That(deserRs.DisablePhysics, Is.EqualTo(m_rs.DisablePhysics));
Assert.That(deserRs.TerrainLowerLimit, Is.EqualTo(m_rs.TerrainLowerLimit));
+ Assert.That(deserRs.TelehubObject, Is.EqualTo(m_rs.TelehubObject));
+ Assert.That(deserRs.SpawnPoints()[0].ToString(), Is.EqualTo(m_rs.SpawnPoints()[0].ToString()));
}
}
}
--
cgit v1.1