aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs')
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs25
1 files changed, 24 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index 38db239..0c4069f 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -245,6 +245,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
245 // Reload serialized prims 245 // Reload serialized prims
246 m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects. Please wait.", serialisedSceneObjects.Count); 246 m_log.InfoFormat("[ARCHIVER]: Loading {0} scene objects. Please wait.", serialisedSceneObjects.Count);
247 247
248 UUID oldTelehubUUID = m_scene.RegionInfo.RegionSettings.TelehubObject;
249
248 IRegionSerialiserModule serialiser = m_scene.RequestModuleInterface<IRegionSerialiserModule>(); 250 IRegionSerialiserModule serialiser = m_scene.RequestModuleInterface<IRegionSerialiserModule>();
249 int sceneObjectsLoadedCount = 0; 251 int sceneObjectsLoadedCount = 0;
250 252
@@ -266,11 +268,21 @@ namespace OpenSim.Region.CoreModules.World.Archiver
266 268
267 SceneObjectGroup sceneObject = serialiser.DeserializeGroupFromXml2(serialisedSceneObject); 269 SceneObjectGroup sceneObject = serialiser.DeserializeGroupFromXml2(serialisedSceneObject);
268 270
271 bool isTelehub = (sceneObject.UUID == oldTelehubUUID);
272
269 // For now, give all incoming scene objects new uuids. This will allow scenes to be cloned 273 // For now, give all incoming scene objects new uuids. This will allow scenes to be cloned
270 // on the same region server and multiple examples a single object archive to be imported 274 // on the same region server and multiple examples a single object archive to be imported
271 // to the same scene (when this is possible). 275 // to the same scene (when this is possible).
272 sceneObject.ResetIDs(); 276 sceneObject.ResetIDs();
273 277
278 if (isTelehub)
279 {
280 // Change the Telehub Object to the new UUID
281 m_scene.RegionInfo.RegionSettings.TelehubObject = sceneObject.UUID;
282 m_scene.RegionInfo.RegionSettings.Save();
283 oldTelehubUUID = UUID.Zero;
284 }
285
274 // Try to retain the original creator/owner/lastowner if their uuid is present on this grid 286 // Try to retain the original creator/owner/lastowner if their uuid is present on this grid
275 // or creator data is present. Otherwise, use the estate owner instead. 287 // or creator data is present. Otherwise, use the estate owner instead.
276 foreach (SceneObjectPart part in sceneObject.Parts) 288 foreach (SceneObjectPart part in sceneObject.Parts)
@@ -347,7 +359,14 @@ namespace OpenSim.Region.CoreModules.World.Archiver
347 int ignoredObjects = serialisedSceneObjects.Count - sceneObjectsLoadedCount; 359 int ignoredObjects = serialisedSceneObjects.Count - sceneObjectsLoadedCount;
348 360
349 if (ignoredObjects > 0) 361 if (ignoredObjects > 0)
350 m_log.WarnFormat("[ARCHIVER]: Ignored {0} scene objects that already existed in the scene", ignoredObjects); 362 m_log.WarnFormat("[ARCHIVER]: Ignored {0} scene objects that already existed in the scene", ignoredObjects);
363
364 if (oldTelehubUUID != UUID.Zero)
365 {
366 m_log.WarnFormat("Telehub object not found: {0}", oldTelehubUUID);
367 m_scene.RegionInfo.RegionSettings.TelehubObject = UUID.Zero;
368 m_scene.RegionInfo.RegionSettings.ClearSpawnPoints();
369 }
351 } 370 }
352 371
353 /// <summary> 372 /// <summary>
@@ -523,6 +542,10 @@ namespace OpenSim.Region.CoreModules.World.Archiver
523 currentRegionSettings.TerrainTexture4 = loadedRegionSettings.TerrainTexture4; 542 currentRegionSettings.TerrainTexture4 = loadedRegionSettings.TerrainTexture4;
524 currentRegionSettings.UseEstateSun = loadedRegionSettings.UseEstateSun; 543 currentRegionSettings.UseEstateSun = loadedRegionSettings.UseEstateSun;
525 currentRegionSettings.WaterHeight = loadedRegionSettings.WaterHeight; 544 currentRegionSettings.WaterHeight = loadedRegionSettings.WaterHeight;
545 currentRegionSettings.TelehubObject = loadedRegionSettings.TelehubObject;
546 currentRegionSettings.ClearSpawnPoints();
547 foreach (SpawnPoint sp in loadedRegionSettings.SpawnPoints())
548 currentRegionSettings.AddSpawnPoint(sp);
526 549
527 currentRegionSettings.Save(); 550 currentRegionSettings.Save();
528 551