From 690e517240495fdd80e12f605ab7f3a05a4be006 Mon Sep 17 00:00:00 2001
From: MW
Date: Mon, 3 Dec 2007 14:57:39 +0000
Subject: Added a flag to load-xml console command, that will generate new
 uuids for the loaded Sceneobjects (as per mantis request #53). To use append
 "-newUID" to the end of the command, so new format is : "load-xml <filename>
 -newUID". If you don't add the "-newUID", then the uuids in the xml file will
 be kept.

---
 OpenSim/Region/Application/OpenSimMain.cs           | 12 ++++++++++--
 OpenSim/Region/Environment/Scenes/Scene.cs          |  4 ++--
 OpenSim/Region/Environment/Scenes/SceneManager.cs   |  4 ++--
 OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs |  6 +++++-
 4 files changed, 19 insertions(+), 7 deletions(-)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs
index 1f9894c..50018ac 100644
--- a/OpenSim/Region/Application/OpenSimMain.cs
+++ b/OpenSim/Region/Application/OpenSimMain.cs
@@ -659,11 +659,19 @@ namespace OpenSim
                 case "load-xml":
                     if (cmdparams.Length > 0)
                     {
-                        m_sceneManager.LoadCurrentSceneFromXml(cmdparams[0]);
+                        bool generateNewIDS = false;
+                        if (cmdparams.Length > 1)
+                        {
+                            if (cmdparams[1] == "-newUID")
+                            {
+                                generateNewIDS = true;
+                            } 
+                        }
+                        m_sceneManager.LoadCurrentSceneFromXml(cmdparams[0], generateNewIDS);
                     }
                     else
                     {
-                        m_sceneManager.LoadCurrentSceneFromXml(DEFAULT_PRIM_BACKUP_FILENAME);
+                        m_sceneManager.LoadCurrentSceneFromXml(DEFAULT_PRIM_BACKUP_FILENAME, false);
                     }
                     break;
 
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 38cfc8c..09ecae0 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -896,9 +896,9 @@ namespace OpenSim.Region.Environment.Scenes
             prim.OnPrimCountTainted += m_LandManager.setPrimsTainted;
         }
 
-        public void LoadPrimsFromXml(string fileName)
+        public void LoadPrimsFromXml(string fileName, bool newIdsFlag)
         {
-            m_sceneXmlLoader.LoadPrimsFromXml(fileName);
+            m_sceneXmlLoader.LoadPrimsFromXml(fileName, newIdsFlag);
         }
 
         public void SavePrimsToXml(string fileName)
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs
index 52b06f0..347091f 100644
--- a/OpenSim/Region/Environment/Scenes/SceneManager.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs
@@ -160,9 +160,9 @@ namespace OpenSim.Region.Environment.Scenes
             CurrentOrFirstScene.SavePrimsToXml(filename);
         }
 
-        public void LoadCurrentSceneFromXml(string filename)
+        public void LoadCurrentSceneFromXml(string filename, bool generateNewIDs)
         {
-            CurrentOrFirstScene.LoadPrimsFromXml(filename);
+            CurrentOrFirstScene.LoadPrimsFromXml(filename, generateNewIDs);
         }
 
         public void SaveCurrentSceneToXml2(string filename)
diff --git a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs
index 40f8b96..ab8f835 100644
--- a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs
@@ -23,7 +23,7 @@ namespace OpenSim.Region.Environment.Scenes
             m_regInfo = regionInfo;
         }
 
-        public void LoadPrimsFromXml(string fileName)
+        public void LoadPrimsFromXml(string fileName, bool newIDS)
         {
             XmlDocument doc = new XmlDocument();
             XmlNode rootNode;
@@ -39,6 +39,10 @@ namespace OpenSim.Region.Environment.Scenes
                 {
                     SceneObjectGroup obj = new SceneObjectGroup(m_parentScene,
                                                                 m_regInfo.RegionHandle, aPrimNode.OuterXml);
+                    if (newIDS)
+                    {
+                        obj.GenerateNewIDs();
+                    }
                     //if we want this to be a import method then we need new uuids for the object to avoid any clashes
                     //obj.RegenerateFullIDs(); 
                     m_innerScene.AddEntity(obj);
-- 
cgit v1.1