/// <summary>
        ///     Load region settings data
        /// </summary>
        /// <param name="settingsPath"></param>
        /// <param name="data"></param>
        /// <returns>
        ///     true if settings were loaded successfully, false otherwise
        /// </returns>
        void LoadRegionSettings(string settingsPath, byte [] data)
        {
            RegionSettings loadedRegionSettings;

            try {
                loadedRegionSettings = RegionSettingsSerializer.Deserialize(data, m_scene.RegionInfo.RegionID);
                if (m_skipTerrain)
                {
                    // not loading terrain so leave the existing textures as well
                    loadedRegionSettings.TerrainTexture1 = m_scene.RegionInfo.RegionSettings.TerrainTexture1;
                    loadedRegionSettings.TerrainTexture2 = m_scene.RegionInfo.RegionSettings.TerrainTexture2;
                    loadedRegionSettings.TerrainTexture3 = m_scene.RegionInfo.RegionSettings.TerrainTexture3;
                    loadedRegionSettings.TerrainTexture4 = m_scene.RegionInfo.RegionSettings.TerrainTexture4;
                }
            } catch (Exception e) {
                MainConsole.Instance.ErrorFormat(
                    "[Archiver]: Could not parse region settings file {0}.  Ignoring.  Exception was {1}",
                    settingsPath, e);
                return;
            }

            m_scene.RegionInfo.RegionSettings = loadedRegionSettings;
            m_scene.SimulationDataService.Tainted();

            IEstateModule estateModule = m_scene.RequestModuleInterface <IEstateModule> ();

            if (estateModule != null)
            {
                estateModule.sendRegionHandshakeToAll();
            }

            return;
        }
示例#2
0
        /// <summary>
        ///     Load region settings data
        /// </summary>
        /// <param name="settingsPath"></param>
        /// <param name="data"></param>
        /// <returns>
        ///     true if settings were loaded successfully, false otherwise
        /// </returns>
        private void LoadRegionSettings(string settingsPath, byte[] data)
        {
            RegionSettings loadedRegionSettings;

            try
            {
                loadedRegionSettings = RegionSettingsSerializer.Deserialize(data);
            }
            catch (Exception e)
            {
                MainConsole.Instance.ErrorFormat(
                    "[ARCHIVER]: Could not parse region settings file {0}.  Ignoring.  Exception was {1}",
                    settingsPath, e);
                return;
            }

            m_scene.RegionInfo.RegionSettings = loadedRegionSettings;
            m_scene.SimulationDataService.Tainted();

            IEstateModule estateModule = m_scene.RequestModuleInterface <IEstateModule>();

            if (estateModule != null)
            {
                estateModule.sendRegionHandshakeToAll();
            }

            return;
        }
示例#3
0
        protected internal void Save(ICollection <UUID> assetsFoundUuids, ICollection <UUID> assetsNotFoundUuids)
        {
            foreach (UUID uuid in assetsNotFoundUuids)
            {
                m_log.DebugFormat("[ARCHIVER]: Could not find asset {0}", uuid);
            }

//            m_log.InfoFormat(
//                "[ARCHIVER]: Received {0} of {1} assets requested",
//                assetsFoundUuids.Count, assetsFoundUuids.Count + assetsNotFoundUuids.Count);

            m_log.InfoFormat("[ARCHIVER]: Creating archive file.  This may take some time.");

            // Write out control file
            m_archiveWriter.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p2ControlFile());
            m_log.InfoFormat("[ARCHIVER]: Added control file to archive.");

            // Write out region settings
            string settingsPath
                = String.Format("{0}{1}.xml", ArchiveConstants.SETTINGS_PATH, m_scene.RegionInfo.RegionName);

            m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(m_scene.RegionInfo.RegionSettings));

            m_log.InfoFormat("[ARCHIVER]: Added region settings to archive.");

            // Write out land data (aka parcel) settings
            List <ILandObject> landObjects = m_scene.LandChannel.AllParcels();

            foreach (ILandObject lo in landObjects)
            {
                LandData landData     = lo.LandData;
                string   landDataPath = String.Format("{0}{1}.xml", ArchiveConstants.LANDDATA_PATH,
                                                      landData.GlobalID.ToString());
                m_archiveWriter.WriteFile(landDataPath, LandDataSerializer.Serialize(landData));
            }
            m_log.InfoFormat("[ARCHIVER]: Added parcel settings to archive.");

            // Write out terrain
            string terrainPath
                = String.Format("{0}{1}.r32", ArchiveConstants.TERRAINS_PATH, m_scene.RegionInfo.RegionName);

            MemoryStream ms = new MemoryStream();

            m_terrainModule.SaveToStream(terrainPath, ms);
            m_archiveWriter.WriteFile(terrainPath, ms.ToArray());
            ms.Close();

            m_log.InfoFormat("[ARCHIVER]: Added terrain information to archive.");

            // Write out scene object metadata
            foreach (SceneObjectGroup sceneObject in m_sceneObjects)
            {
                //m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType());

                string serializedObject = m_serialiser.SerializeGroupToXml2(sceneObject);
                m_archiveWriter.WriteFile(ArchiveHelpers.CreateObjectPath(sceneObject), serializedObject);
            }

            m_log.InfoFormat("[ARCHIVER]: Added scene objects to archive.");
        }
示例#4
0
        /// <summary>
        /// Load region settings data
        /// </summary>
        /// <param name="settingsPath"></param>
        /// <param name="data"></param>
        /// <returns>
        /// true if settings were loaded successfully, false otherwise
        /// </returns>
        private void LoadRegionSettings(string settingsPath, byte[] data)
        {
            RegionSettings loadedRegionSettings;

            try
            {
                loadedRegionSettings = RegionSettingsSerializer.Deserialize(data);
            }
            catch (Exception e)
            {
                MainConsole.Instance.ErrorFormat(
                    "[ARCHIVER]: Could not parse region settings file {0}.  Ignoring.  Exception was {1}",
                    settingsPath, e);
                return;
            }

            RegionSettings currentRegionSettings = m_scene.RegionInfo.RegionSettings;

            currentRegionSettings.AgentLimit          = loadedRegionSettings.AgentLimit;
            currentRegionSettings.AllowDamage         = loadedRegionSettings.AllowDamage;
            currentRegionSettings.AllowLandJoinDivide = loadedRegionSettings.AllowLandJoinDivide;
            currentRegionSettings.AllowLandResell     = loadedRegionSettings.AllowLandResell;
            currentRegionSettings.BlockFly            = loadedRegionSettings.BlockFly;
            currentRegionSettings.BlockShowInSearch   = loadedRegionSettings.BlockShowInSearch;
            currentRegionSettings.BlockTerraform      = loadedRegionSettings.BlockTerraform;
            currentRegionSettings.DisableCollisions   = loadedRegionSettings.DisableCollisions;
            currentRegionSettings.DisablePhysics      = loadedRegionSettings.DisablePhysics;
            currentRegionSettings.DisableScripts      = loadedRegionSettings.DisableScripts;
            currentRegionSettings.Elevation1NE        = loadedRegionSettings.Elevation1NE;
            currentRegionSettings.Elevation1NW        = loadedRegionSettings.Elevation1NW;
            currentRegionSettings.Elevation1SE        = loadedRegionSettings.Elevation1SE;
            currentRegionSettings.Elevation1SW        = loadedRegionSettings.Elevation1SW;
            currentRegionSettings.Elevation2NE        = loadedRegionSettings.Elevation2NE;
            currentRegionSettings.Elevation2NW        = loadedRegionSettings.Elevation2NW;
            currentRegionSettings.Elevation2SE        = loadedRegionSettings.Elevation2SE;
            currentRegionSettings.Elevation2SW        = loadedRegionSettings.Elevation2SW;
            currentRegionSettings.FixedSun            = loadedRegionSettings.FixedSun;
            currentRegionSettings.ObjectBonus         = loadedRegionSettings.ObjectBonus;
            currentRegionSettings.RestrictPushing     = loadedRegionSettings.RestrictPushing;
            currentRegionSettings.TerrainLowerLimit   = loadedRegionSettings.TerrainLowerLimit;
            currentRegionSettings.TerrainRaiseLimit   = loadedRegionSettings.TerrainRaiseLimit;
            currentRegionSettings.TerrainTexture1     = loadedRegionSettings.TerrainTexture1;
            currentRegionSettings.TerrainTexture2     = loadedRegionSettings.TerrainTexture2;
            currentRegionSettings.TerrainTexture3     = loadedRegionSettings.TerrainTexture3;
            currentRegionSettings.TerrainTexture4     = loadedRegionSettings.TerrainTexture4;
            currentRegionSettings.UseEstateSun        = loadedRegionSettings.UseEstateSun;
            currentRegionSettings.WaterHeight         = loadedRegionSettings.WaterHeight;

            currentRegionSettings.Save();

            IEstateModule estateModule = m_scene.RequestModuleInterface <IEstateModule>();

            if (estateModule != null)
            {
                estateModule.sendRegionHandshakeToAll();
            }

            return;
        }
        protected internal void ReceivedAllAssets(
            ICollection <UUID> assetsFoundUuids, ICollection <UUID> assetsNotFoundUuids)
        {
            foreach (UUID uuid in assetsNotFoundUuids)
            {
                m_log.DebugFormat("[ARCHIVER]: Could not find asset {0}", uuid);
            }

            m_log.InfoFormat(
                "[ARCHIVER]: Received {0} of {1} assets requested",
                assetsFoundUuids.Count, assetsFoundUuids.Count + assetsNotFoundUuids.Count);

            // Write out region settings
            string settingsPath
                = String.Format("{0}{1}.xml", ArchiveConstants.SETTINGS_PATH, m_scene.RegionInfo.RegionName);

            m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(m_scene.RegionInfo.RegionSettings));

            m_log.InfoFormat("[ARCHIVER]: Added region settings to archive.");

            // Write out terrain
            string terrainPath
                = String.Format("{0}{1}.r32", ArchiveConstants.TERRAINS_PATH, m_scene.RegionInfo.RegionName);

            MemoryStream ms = new MemoryStream();

            m_terrainModule.SaveToStream(terrainPath, ms);
            m_archiveWriter.WriteFile(terrainPath, ms.ToArray());
            ms.Close();

            m_log.InfoFormat("[ARCHIVER]: Added terrain information to archive.");

            // Write out scene object metadata
            foreach (SceneObjectGroup sceneObject in m_sceneObjects)
            {
                //m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType());

                Vector3 position = sceneObject.AbsolutePosition;

                string serializedObject = m_serializer.SaveGroupToOriginalXml(sceneObject);
                string filename
                    = string.Format(
                          "{0}{1}_{2:000}-{3:000}-{4:000}__{5}.xml",
                          ArchiveConstants.OBJECTS_PATH, sceneObject.Name,
                          Math.Round(position.X), Math.Round(position.Y), Math.Round(position.Z),
                          sceneObject.UUID);

                m_archiveWriter.WriteFile(filename, serializedObject);
            }

            m_log.InfoFormat("[ARCHIVER]: Added scene objects to archive.");

            m_archiveWriter.Close();

            m_log.InfoFormat("[ARCHIVER]: Wrote out Halcyon archive for {0}", m_scene.RegionInfo.RegionName);

            m_scene.EventManager.TriggerOarFileSaved(m_requestId, String.Empty);
        }
        protected void Save(Scene scene, List <SceneObjectGroup> sceneObjects, string regionDir)
        {
            if (regionDir != string.Empty)
            {
                regionDir = ArchiveConstants.REGIONS_PATH + regionDir + "/";
            }

            m_log.InfoFormat("[ARCHIVER]: Adding region settings to archive.");

            // Write out region settings
            string settingsPath = String.Format("{0}{1}{2}.xml",
                                                regionDir, ArchiveConstants.SETTINGS_PATH, scene.RegionInfo.RegionName);

            m_archiveWriter.WriteFile(settingsPath, RegionSettingsSerializer.Serialize(scene.RegionInfo.RegionSettings, scene.RegionEnvironment));

            m_log.InfoFormat("[ARCHIVER]: Adding parcel settings to archive.");

            // Write out land data (aka parcel) settings
            List <ILandObject> landObjects = scene.LandChannel.AllParcels();

            foreach (ILandObject lo in landObjects)
            {
                LandData landData = lo.LandData;
                string   landDataPath
                    = String.Format("{0}{1}", regionDir, ArchiveConstants.CreateOarLandDataPath(landData));
                m_archiveWriter.WriteFile(landDataPath, LandDataSerializer.Serialize(landData, m_options));
            }

            m_log.InfoFormat("[ARCHIVER]: Adding terrain information to archive.");

            // Write out terrain
            string terrainPath = String.Format("{0}{1}{2}.r32",
                                               regionDir, ArchiveConstants.TERRAINS_PATH, scene.RegionInfo.RegionName);

            using (MemoryStream ms = new MemoryStream())
            {
                scene.RequestModuleInterface <ITerrainModule>().SaveToStream(terrainPath, ms);
                m_archiveWriter.WriteFile(terrainPath, ms.ToArray());
            }

            m_log.InfoFormat("[ARCHIVER]: Adding scene objects to archive.");

            // Write out scene object metadata
            IRegionSerialiserModule serializer = scene.RequestModuleInterface <IRegionSerialiserModule>();

            foreach (SceneObjectGroup sceneObject in sceneObjects)
            {
                //m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType());
                if (sceneObject.IsDeleted || sceneObject.inTransit)
                {
                    continue;
                }
                string serializedObject = serializer.SerializeGroupToXml2(sceneObject, m_options);
                string objectPath       = string.Format("{0}{1}", regionDir, ArchiveHelpers.CreateObjectPath(sceneObject));
                m_archiveWriter.WriteFile(objectPath, serializedObject);
            }
        }
示例#7
0
        public void TestRegionSettingsDeserialize()
        {
            TestHelpers.InMethod();
//            log4net.Config.XmlConfigurator.Configure();

            RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs);

            Assert.That(deserRs, Is.Not.Null);
            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));
        }
        public void TestRegionSettingsDeserialize()
        {
            TestHelpers.InMethod();
            //            log4net.Config.XmlConfigurator.Configure();

            RegionSettings deserRs = RegionSettingsSerializer.Deserialize(m_serializedRs, out ViewerEnvironment dummy);

            Assert.That(deserRs, Is.Not.Null);
            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()));
        }
示例#9
0
        /// <summary>
        /// Load region settings data
        /// </summary>
        /// <param name="scene"></param>
        /// <param name="settingsPath"></param>
        /// <param name="data"></param>
        /// <param name="dearchivedScenes"></param>
        /// <returns>
        /// true if settings were loaded successfully, false otherwise
        /// </returns>
        private bool LoadRegionSettings(Scene scene, string settingsPath, byte[] data, DearchiveScenesInfo dearchivedScenes)
        {
            RegionSettings loadedRegionSettings;

            try
            {
                loadedRegionSettings = RegionSettingsSerializer.Deserialize(data);
            }
            catch (Exception e)
            {
                m_log.ErrorFormat(
                    "[ARCHIVER]: Could not parse region settings file {0}.  Ignoring.  Exception was {1}",
                    settingsPath, e);
                return(false);
            }

            RegionSettings currentRegionSettings = scene.RegionInfo.RegionSettings;

            currentRegionSettings.AgentLimit          = loadedRegionSettings.AgentLimit;
            currentRegionSettings.AllowDamage         = loadedRegionSettings.AllowDamage;
            currentRegionSettings.AllowLandJoinDivide = loadedRegionSettings.AllowLandJoinDivide;
            currentRegionSettings.AllowLandResell     = loadedRegionSettings.AllowLandResell;
            currentRegionSettings.BlockFly            = loadedRegionSettings.BlockFly;
            currentRegionSettings.BlockShowInSearch   = loadedRegionSettings.BlockShowInSearch;
            currentRegionSettings.BlockTerraform      = loadedRegionSettings.BlockTerraform;
            currentRegionSettings.DisableCollisions   = loadedRegionSettings.DisableCollisions;
            currentRegionSettings.DisablePhysics      = loadedRegionSettings.DisablePhysics;
            currentRegionSettings.DisableScripts      = loadedRegionSettings.DisableScripts;
            currentRegionSettings.Elevation1NE        = loadedRegionSettings.Elevation1NE;
            currentRegionSettings.Elevation1NW        = loadedRegionSettings.Elevation1NW;
            currentRegionSettings.Elevation1SE        = loadedRegionSettings.Elevation1SE;
            currentRegionSettings.Elevation1SW        = loadedRegionSettings.Elevation1SW;
            currentRegionSettings.Elevation2NE        = loadedRegionSettings.Elevation2NE;
            currentRegionSettings.Elevation2NW        = loadedRegionSettings.Elevation2NW;
            currentRegionSettings.Elevation2SE        = loadedRegionSettings.Elevation2SE;
            currentRegionSettings.Elevation2SW        = loadedRegionSettings.Elevation2SW;
            currentRegionSettings.FixedSun            = loadedRegionSettings.FixedSun;
            currentRegionSettings.SunPosition         = loadedRegionSettings.SunPosition;
            currentRegionSettings.ObjectBonus         = loadedRegionSettings.ObjectBonus;
            currentRegionSettings.RestrictPushing     = loadedRegionSettings.RestrictPushing;
            currentRegionSettings.TerrainLowerLimit   = loadedRegionSettings.TerrainLowerLimit;
            currentRegionSettings.TerrainRaiseLimit   = loadedRegionSettings.TerrainRaiseLimit;
            currentRegionSettings.TerrainTexture1     = loadedRegionSettings.TerrainTexture1;
            currentRegionSettings.TerrainTexture2     = loadedRegionSettings.TerrainTexture2;
            currentRegionSettings.TerrainTexture3     = loadedRegionSettings.TerrainTexture3;
            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.LoadedCreationDateTime = dearchivedScenes.LoadedCreationDateTime;
            currentRegionSettings.LoadedCreationID       = dearchivedScenes.GetOriginalRegionID(scene.RegionInfo.RegionID).ToString();

            currentRegionSettings.Save();

            scene.TriggerEstateSunUpdate();

            IEstateModule estateModule = scene.RequestModuleInterface <IEstateModule>();

            if (estateModule != null)
            {
                estateModule.sendRegionHandshakeToAll();
            }

            return(true);
        }
示例#10
0
        public void TestLoadOarV0_2RegionSettings()
        {
            TestHelper.InMethod();
            //log4net.Config.XmlConfigurator.Configure();

            MemoryStream     archiveWriteStream = new MemoryStream();
            TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);

            tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
            tar.WriteFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());

            RegionSettings rs = new RegionSettings();

            rs.AgentLimit          = 17;
            rs.AllowDamage         = true;
            rs.AllowLandJoinDivide = true;
            rs.AllowLandResell     = true;
            rs.BlockFly            = true;
            rs.BlockShowInSearch   = true;
            rs.BlockTerraform      = true;
            rs.DisableCollisions   = true;
            rs.DisablePhysics      = true;
            rs.DisableScripts      = true;
            rs.Elevation1NW        = 15.9;
            rs.Elevation1NE        = 45.3;
            rs.Elevation1SE        = 49;
            rs.Elevation1SW        = 1.9;
            rs.Elevation2NW        = 4.5;
            rs.Elevation2NE        = 19.2;
            rs.Elevation2SE        = 9.2;
            rs.Elevation2SW        = 2.1;
            rs.FixedSun            = true;
            rs.ObjectBonus         = 1.4;
            rs.RestrictPushing     = true;
            rs.TerrainLowerLimit   = 0.4;
            rs.TerrainRaiseLimit   = 17.9;
            rs.TerrainTexture1     = UUID.Parse("00000000-0000-0000-0000-000000000020");
            rs.TerrainTexture2     = UUID.Parse("00000000-0000-0000-0000-000000000040");
            rs.TerrainTexture3     = UUID.Parse("00000000-0000-0000-0000-000000000060");
            rs.TerrainTexture4     = UUID.Parse("00000000-0000-0000-0000-000000000080");
            rs.UseEstateSun        = true;
            rs.WaterHeight         = 23;

            tar.WriteFile(ArchiveConstants.SETTINGS_PATH + "region1.xml", RegionSettingsSerializer.Serialize(rs));

            tar.Close();

            MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray());

            lock (this)
            {
                m_scene.EventManager.OnOarFileLoaded += LoadCompleted;
                m_archiverModule.DearchiveRegion(archiveReadStream);
            }

            Assert.That(m_lastErrorMessage, Is.Null);
            RegionSettings loadedRs = m_scene.RegionInfo.RegionSettings;

            Assert.That(loadedRs.AgentLimit, Is.EqualTo(17));
            Assert.That(loadedRs.AllowDamage, Is.True);
            Assert.That(loadedRs.AllowLandJoinDivide, Is.True);
            Assert.That(loadedRs.AllowLandResell, Is.True);
            Assert.That(loadedRs.BlockFly, Is.True);
            Assert.That(loadedRs.BlockShowInSearch, Is.True);
            Assert.That(loadedRs.BlockTerraform, Is.True);
            Assert.That(loadedRs.DisableCollisions, Is.True);
            Assert.That(loadedRs.DisablePhysics, Is.True);
            Assert.That(loadedRs.DisableScripts, Is.True);
            Assert.That(loadedRs.Elevation1NW, Is.EqualTo(15.9));
            Assert.That(loadedRs.Elevation1NE, Is.EqualTo(45.3));
            Assert.That(loadedRs.Elevation1SE, Is.EqualTo(49));
            Assert.That(loadedRs.Elevation1SW, Is.EqualTo(1.9));
            Assert.That(loadedRs.Elevation2NW, Is.EqualTo(4.5));
            Assert.That(loadedRs.Elevation2NE, Is.EqualTo(19.2));
            Assert.That(loadedRs.Elevation2SE, Is.EqualTo(9.2));
            Assert.That(loadedRs.Elevation2SW, Is.EqualTo(2.1));
            Assert.That(loadedRs.FixedSun, Is.True);
            Assert.That(loadedRs.ObjectBonus, Is.EqualTo(1.4));
            Assert.That(loadedRs.RestrictPushing, Is.True);
            Assert.That(loadedRs.TerrainLowerLimit, Is.EqualTo(0.4));
            Assert.That(loadedRs.TerrainRaiseLimit, Is.EqualTo(17.9));
            Assert.That(loadedRs.TerrainTexture1, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000020")));
            Assert.That(loadedRs.TerrainTexture2, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000040")));
            Assert.That(loadedRs.TerrainTexture3, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000060")));
            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));
        }
示例#11
0
        public void TestLoadOarRegionSettings()
        {
            TestHelpers.InMethod();
            //log4net.Config.XmlConfigurator.Configure();

            MemoryStream     archiveWriteStream = new MemoryStream();
            TarArchiveWriter tar = new TarArchiveWriter(archiveWriteStream);

            tar.WriteDir(ArchiveConstants.TERRAINS_PATH);
            tar.WriteFile(
                ArchiveConstants.CONTROL_FILE_PATH,
                new ArchiveWriteRequest(m_scene, (Stream)null, Guid.Empty).CreateControlFile(new ArchiveScenesGroup()));

            RegionSettings rs = new RegionSettings();

            rs.AgentLimit          = 17;
            rs.AllowDamage         = true;
            rs.AllowLandJoinDivide = true;
            rs.AllowLandResell     = true;
            rs.BlockFly            = true;
            rs.BlockShowInSearch   = true;
            rs.BlockTerraform      = true;
            rs.DisableCollisions   = true;
            rs.DisablePhysics      = true;
            rs.DisableScripts      = true;
            rs.Elevation1NW        = 15.9;
            rs.Elevation1NE        = 45.3;
            rs.Elevation1SE        = 49;
            rs.Elevation1SW        = 1.9;
            rs.Elevation2NW        = 4.5;
            rs.Elevation2NE        = 19.2;
            rs.Elevation2SE        = 9.2;
            rs.Elevation2SW        = 2.1;
            rs.FixedSun            = true;
            rs.SunPosition         = 12.0;
            rs.ObjectBonus         = 1.4;
            rs.RestrictPushing     = true;
            rs.TerrainLowerLimit   = 0.4;
            rs.TerrainRaiseLimit   = 17.9;
            rs.TerrainTexture1     = UUID.Parse("00000000-0000-0000-0000-000000000020");
            rs.TerrainTexture2     = UUID.Parse("00000000-0000-0000-0000-000000000040");
            rs.TerrainTexture3     = UUID.Parse("00000000-0000-0000-0000-000000000060");
            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, null));

            tar.Close();

            MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray());

            m_scene.EventManager.OnOarFileLoaded += LoadCompleted;
            m_oarEvent.Reset();
            m_archiverModule.DearchiveRegion(archiveReadStream);

            m_oarEvent.WaitOne(60000);

            Assert.That(m_lastErrorMessage, Is.Null);
            RegionSettings loadedRs = m_scene.RegionInfo.RegionSettings;

            Assert.That(loadedRs.AgentLimit, Is.EqualTo(17));
            Assert.That(loadedRs.AllowDamage, Is.True);
            Assert.That(loadedRs.AllowLandJoinDivide, Is.True);
            Assert.That(loadedRs.AllowLandResell, Is.True);
            Assert.That(loadedRs.BlockFly, Is.True);
            Assert.That(loadedRs.BlockShowInSearch, Is.True);
            Assert.That(loadedRs.BlockTerraform, Is.True);
            Assert.That(loadedRs.DisableCollisions, Is.True);
            Assert.That(loadedRs.DisablePhysics, Is.True);
            Assert.That(loadedRs.DisableScripts, Is.True);
            Assert.That(loadedRs.Elevation1NW, Is.EqualTo(15.9));
            Assert.That(loadedRs.Elevation1NE, Is.EqualTo(45.3));
            Assert.That(loadedRs.Elevation1SE, Is.EqualTo(49));
            Assert.That(loadedRs.Elevation1SW, Is.EqualTo(1.9));
            Assert.That(loadedRs.Elevation2NW, Is.EqualTo(4.5));
            Assert.That(loadedRs.Elevation2NE, Is.EqualTo(19.2));
            Assert.That(loadedRs.Elevation2SE, Is.EqualTo(9.2));
            Assert.That(loadedRs.Elevation2SW, Is.EqualTo(2.1));
            Assert.That(loadedRs.ObjectBonus, Is.EqualTo(1.4));
            Assert.That(loadedRs.RestrictPushing, Is.True);
            Assert.That(loadedRs.TerrainLowerLimit, Is.EqualTo(0.4));
            Assert.That(loadedRs.TerrainRaiseLimit, Is.EqualTo(17.9));
            Assert.That(loadedRs.TerrainTexture1, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000020")));
            Assert.That(loadedRs.TerrainTexture2, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000040")));
            Assert.That(loadedRs.TerrainTexture3, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000060")));
            Assert.That(loadedRs.TerrainTexture4, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000080")));
            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);
        }