diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index 1f9894c6aa..50018ac804 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 38cfc8ca58..09ecae07a7 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 52b06f0ed5..347091fd5f 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 40f8b964bc..ab8f8350ad 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);