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 -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(-) 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