Revert "Save the Telehub and its Spawn Points in the OAR"
This reverts commit b0b7b45b94.
Sorry BlueWall, I wanted to discuss an aspect of the data storage but I couldn't assign bugs in 'patch included' state to myself until I changed mantis just now and I forgot to mention it on irc.
I wouldn't normally revert but thinks get tricky when it comes to data formats.
Essentially, I would like to see the Yaw, Pitch and Distance values as separate XML entities (as used in other aspects such as vectors, quaternions) rather than as a . delimited string
We can discuss this more with Oren in opensimulator.org/mantis/view.php?id=6008
			
			
				0.7.4.1
			
			
		
							parent
							
								
									b0b7b45b94
								
							
						
					
					
						commit
						8b958e7e74
					
				| 
						 | 
				
			
			@ -29,7 +29,6 @@ using System;
 | 
			
		|||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using System.Runtime.Serialization;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Framework
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -72,32 +71,6 @@ namespace OpenSim.Framework
 | 
			
		|||
 | 
			
		||||
            return pos + offset;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Returns a string representation of this SpawnPoint.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public override string ToString()
 | 
			
		||||
        {
 | 
			
		||||
            return string.Format("{0},{1},{2}", Yaw, Pitch, Distance);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Generate a SpawnPoint from a string
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="str"></param>
 | 
			
		||||
        public static SpawnPoint Parse(string str)
 | 
			
		||||
        {
 | 
			
		||||
            string[] parts = str.Split(',');
 | 
			
		||||
            if (parts.Length != 3)
 | 
			
		||||
                throw new ArgumentException("Invalid string: " + str);
 | 
			
		||||
 | 
			
		||||
            SpawnPoint sp = new SpawnPoint();
 | 
			
		||||
            sp.Yaw = float.Parse(parts[0]);
 | 
			
		||||
            sp.Pitch = float.Parse(parts[1]);
 | 
			
		||||
            sp.Distance = float.Parse(parts[2]);
 | 
			
		||||
            return sp;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class RegionSettings
 | 
			
		||||
| 
						 | 
				
			
			@ -483,7 +456,7 @@ namespace OpenSim.Framework
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        // Connected Telehub object
 | 
			
		||||
        private UUID m_TelehubObject = UUID.Zero;
 | 
			
		||||
        private UUID m_TelehubObject;
 | 
			
		||||
        public UUID TelehubObject
 | 
			
		||||
        {
 | 
			
		||||
            get
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,8 +30,6 @@ using System.Text;
 | 
			
		|||
using System.Xml;
 | 
			
		||||
using OpenMetaverse;
 | 
			
		||||
using OpenSim.Framework;
 | 
			
		||||
using log4net;
 | 
			
		||||
using System.Reflection;
 | 
			
		||||
 | 
			
		||||
namespace OpenSim.Framework.Serialization.External
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -189,29 +187,7 @@ 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();
 | 
			
		||||
            
 | 
			
		||||
| 
						 | 
				
			
			@ -267,16 +243,7 @@ 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.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(); 
 | 
			
		||||
            
 | 
			
		||||
            xtw.WriteEndElement();
 | 
			
		||||
            
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,10 +78,6 @@ namespace OpenSim.Framework.Serialization.Tests
 | 
			
		|||
    <FixedSun>true</FixedSun>
 | 
			
		||||
    <SunPosition>12</SunPosition>
 | 
			
		||||
  </Terrain>
 | 
			
		||||
  <Telehub>
 | 
			
		||||
    <TelehubObject>00000000-0000-0000-0000-111111111111</TelehubObject>
 | 
			
		||||
    <SpawnPoint>1,-2,0.33</SpawnPoint>
 | 
			
		||||
  </Telehub>
 | 
			
		||||
</RegionSettings>";
 | 
			
		||||
 | 
			
		||||
        private RegionSettings m_rs;
 | 
			
		||||
| 
						 | 
				
			
			@ -120,8 +116,6 @@ 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]
 | 
			
		||||
| 
						 | 
				
			
			@ -135,8 +129,6 @@ 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()));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -245,8 +245,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
            // Reload serialized prims
 | 
			
		||||
            m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects.  Please wait.", serialisedSceneObjects.Count);
 | 
			
		||||
 | 
			
		||||
            UUID oldTelehubUUID = m_scene.RegionInfo.RegionSettings.TelehubObject;
 | 
			
		||||
 | 
			
		||||
            IRegionSerialiserModule serialiser = m_scene.RequestModuleInterface<IRegionSerialiserModule>();
 | 
			
		||||
            int sceneObjectsLoadedCount = 0;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -268,21 +266,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
 | 
			
		||||
                SceneObjectGroup sceneObject = serialiser.DeserializeGroupFromXml2(serialisedSceneObject);
 | 
			
		||||
 | 
			
		||||
                bool isTelehub = (sceneObject.UUID == oldTelehubUUID);
 | 
			
		||||
 | 
			
		||||
                // For now, give all incoming scene objects new uuids.  This will allow scenes to be cloned
 | 
			
		||||
                // on the same region server and multiple examples a single object archive to be imported
 | 
			
		||||
                // to the same scene (when this is possible).
 | 
			
		||||
                sceneObject.ResetIDs();
 | 
			
		||||
 | 
			
		||||
                if (isTelehub)
 | 
			
		||||
                {
 | 
			
		||||
                    // Change the Telehub Object to the new UUID
 | 
			
		||||
                    m_scene.RegionInfo.RegionSettings.TelehubObject = sceneObject.UUID;
 | 
			
		||||
                    m_scene.RegionInfo.RegionSettings.Save();
 | 
			
		||||
                    oldTelehubUUID = UUID.Zero;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // Try to retain the original creator/owner/lastowner if their uuid is present on this grid
 | 
			
		||||
                // or creator data is present.  Otherwise, use the estate owner instead.
 | 
			
		||||
                foreach (SceneObjectPart part in sceneObject.Parts)
 | 
			
		||||
| 
						 | 
				
			
			@ -341,14 +329,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
            int ignoredObjects = serialisedSceneObjects.Count - sceneObjectsLoadedCount;
 | 
			
		||||
 | 
			
		||||
            if (ignoredObjects > 0)
 | 
			
		||||
                m_log.WarnFormat("[ARCHIVER]: Ignored {0} scene objects that already existed in the scene", ignoredObjects);
 | 
			
		||||
 | 
			
		||||
            if (oldTelehubUUID != UUID.Zero)
 | 
			
		||||
            {
 | 
			
		||||
                m_log.WarnFormat("Telehub object not found: {0}", oldTelehubUUID);
 | 
			
		||||
                m_scene.RegionInfo.RegionSettings.TelehubObject = UUID.Zero;
 | 
			
		||||
                m_scene.RegionInfo.RegionSettings.ClearSpawnPoints();
 | 
			
		||||
            }
 | 
			
		||||
                m_log.WarnFormat("[ARCHIVER]: Ignored {0} scene objects that already existed in the scene", ignoredObjects);            
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -524,10 +505,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
            currentRegionSettings.TerrainTexture4 = loadedRegionSettings.TerrainTexture4;
 | 
			
		||||
            currentRegionSettings.UseEstateSun = loadedRegionSettings.UseEstateSun;
 | 
			
		||||
            currentRegionSettings.WaterHeight = loadedRegionSettings.WaterHeight;
 | 
			
		||||
            currentRegionSettings.TelehubObject = loadedRegionSettings.TelehubObject;
 | 
			
		||||
            currentRegionSettings.ClearSpawnPoints();
 | 
			
		||||
            foreach (SpawnPoint sp in loadedRegionSettings.SpawnPoints())
 | 
			
		||||
                currentRegionSettings.AddSpawnPoint(sp);
 | 
			
		||||
 | 
			
		||||
            currentRegionSettings.Save();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -328,7 +328,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
 | 
			
		|||
        /// <returns></returns>
 | 
			
		||||
        public string CreateControlFile(Dictionary<string, object> options)
 | 
			
		||||
        {
 | 
			
		||||
            int majorVersion = MAX_MAJOR_VERSION, minorVersion = 8;
 | 
			
		||||
            int majorVersion = MAX_MAJOR_VERSION, minorVersion = 7;
 | 
			
		||||
//
 | 
			
		||||
//            if (options.ContainsKey("version"))
 | 
			
		||||
//            {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -534,8 +534,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
            rs.TerrainTexture4 = UUID.Parse("00000000-0000-0000-0000-000000000080");
 | 
			
		||||
            rs.UseEstateSun = true;
 | 
			
		||||
            rs.WaterHeight = 23;
 | 
			
		||||
            rs.TelehubObject = UUID.Parse("00000000-0000-0000-0000-111111111111");
 | 
			
		||||
            rs.AddSpawnPoint(SpawnPoint.Parse("1,-2,0.33"));
 | 
			
		||||
 | 
			
		||||
            tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs));
 | 
			
		||||
            
 | 
			
		||||
| 
						 | 
				
			
			@ -582,8 +580,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
 | 
			
		|||
            Assert.That(loadedRs.TerrainTexture4, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000080")));
 | 
			
		||||
            Assert.That(loadedRs.UseEstateSun, Is.True);
 | 
			
		||||
            Assert.That(loadedRs.WaterHeight, Is.EqualTo(23));
 | 
			
		||||
            Assert.AreEqual(UUID.Zero, loadedRs.TelehubObject); // because no object was found with the original UUID
 | 
			
		||||
            Assert.AreEqual(0, loadedRs.SpawnPoints().Count);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue