diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index 60e00a2109..4afe37b998 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -401,6 +401,17 @@ namespace OpenSim
}
break;
+ case "save-prims-xml2":
+ if (cmdparams.Length > 1)
+ {
+ m_sceneManager.SaveNamedPrimsToXml2(cmdparams[0], cmdparams[1]);
+ }
+ else
+ {
+ m_sceneManager.SaveNamedPrimsToXml2("Primitive", DEFAULT_PRIM_BACKUP_FILENAME);
+ }
+ break;
+
case "load-oar":
m_log.Error("[CONSOLE]: Don't use me - I haven't yet been sufficiently implemented!");
diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs
index e6090a7928..3ae7a5436e 100644
--- a/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs
+++ b/OpenSim/Region/Environment/Modules/World/Serialiser/IRegionSerialiser.cs
@@ -73,6 +73,13 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser
///
void SavePrimsToXml2(Scene scene, string fileName);
+ ///
+ /// Save a set of prims in the xml2 format
+ ///
+ ///
+ ///
+ void SavePrimListToXml2(List entityList, string fileName);
+
///
/// Load an individual scene object from the xml2 format
///
diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs
index ed211e4112..9bab2b68b0 100644
--- a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs
+++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs
@@ -185,19 +185,24 @@ namespace OpenSim.Region.Environment.Scenes
}
public static void SavePrimsToXml2(Scene scene, string fileName)
+ {
+ List EntityList = scene.GetEntities();
+
+ SavePrimListToXml2(EntityList, fileName);
+ }
+
+ public static void SavePrimListToXml2(List entityList, string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Create);
StreamWriter stream = new StreamWriter(file);
int primCount = 0;
stream.WriteLine("\n");
- List EntityList = scene.GetEntities();
-
- foreach (EntityBase ent in EntityList)
+ foreach (EntityBase ent in entityList)
{
if (ent is SceneObjectGroup)
{
- stream.WriteLine(((SceneObjectGroup) ent).ToXmlString2());
+ stream.WriteLine(((SceneObjectGroup)ent).ToXmlString2());
primCount++;
}
}
diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs
index 28f3996eef..c7b5fa59ce 100644
--- a/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs
@@ -122,6 +122,11 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser
return SceneXmlLoader.SaveGroupToXml2(grp);
}
+ public void SavePrimListToXml2(List entityList, string fileName)
+ {
+ SceneXmlLoader.SavePrimListToXml2(entityList, fileName);
+ }
+
public List SerialiseRegion(Scene scene, string saveDir)
{
List results = new List();
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 261f73dfc8..375756d28a 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -1738,6 +1738,27 @@ namespace OpenSim.Region.Environment.Scenes
m_serialiser.SavePrimsToXml2(this, fileName);
}
+
+ public void SaveNamedPrimsToXml2(string primName, string fileName)
+ {
+ List entityList = GetEntities();
+ List primList = new List();
+
+ foreach (EntityBase ent in entityList)
+ {
+ if (ent is SceneObjectGroup)
+ {
+ if (ent.Name == primName)
+ {
+ primList.Add(ent);
+ }
+ }
+ }
+
+ m_serialiser.SavePrimListToXml2(primList, fileName);
+ }
+
+
///
/// Load a prim archive into the scene. This loads both prims and their assets.
///
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs
index add80813f0..a3a9c75705 100644
--- a/OpenSim/Region/Environment/Scenes/SceneManager.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs
@@ -204,6 +204,11 @@ namespace OpenSim.Region.Environment.Scenes
CurrentOrFirstScene.SavePrimsToXml2(filename);
}
+ public void SaveNamedPrimsToXml2(string primName, string filename)
+ {
+ CurrentOrFirstScene.SaveNamedPrimsToXml2( primName, filename);
+ }
+
///
/// Load an xml file of prims in OpenSimulator's current 'xml2' file format to the current scene
///