diff options
5 files changed, 36 insertions, 26 deletions
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionSerialiserModule.cs b/OpenSim/Region/Environment/Interfaces/IRegionSerialiserModule.cs index 29d5d47..b89f869 100644 --- a/OpenSim/Region/Environment/Interfaces/IRegionSerialiserModule.cs +++ b/OpenSim/Region/Environment/Interfaces/IRegionSerialiserModule.cs | |||
@@ -102,6 +102,8 @@ namespace OpenSim.Region.Environment.Interfaces | |||
102 | /// <param name="min"></param> | 102 | /// <param name="min"></param> |
103 | /// <param name="max"></param> | 103 | /// <param name="max"></param> |
104 | void SavePrimListToXml2(List<EntityBase> entityList, TextWriter stream, Vector3 min, Vector3 max); | 104 | void SavePrimListToXml2(List<EntityBase> entityList, TextWriter stream, Vector3 min, Vector3 max); |
105 | |||
106 | void SaveNamedPrimsToXml2(Scene scene, string primName, string fileName); | ||
105 | 107 | ||
106 | /// <summary> | 108 | /// <summary> |
107 | /// Deserializes a scene object from its xml2 representation. This does not load the object into the scene. | 109 | /// Deserializes a scene object from its xml2 representation. This does not load the object into the scene. |
diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs index c856b5b..2e9c551 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SceneXmlLoader.cs | |||
@@ -28,10 +28,10 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.IO; | 30 | using System.IO; |
31 | //using System.Reflection; | 31 | using System.Reflection; |
32 | using System.Xml; | 32 | using System.Xml; |
33 | using OpenMetaverse; | 33 | using OpenMetaverse; |
34 | //using log4net; | 34 | using log4net; |
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Region.Physics.Manager; | 36 | using OpenSim.Region.Physics.Manager; |
37 | 37 | ||
@@ -42,7 +42,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
42 | /// </summary> | 42 | /// </summary> |
43 | public class SceneXmlLoader | 43 | public class SceneXmlLoader |
44 | { | 44 | { |
45 | //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 45 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
46 | 46 | ||
47 | public static void LoadPrimsFromXml(Scene scene, string fileName, bool newIDS, Vector3 loadOffset) | 47 | public static void LoadPrimsFromXml(Scene scene, string fileName, bool newIDS, Vector3 loadOffset) |
48 | { | 48 | { |
@@ -213,6 +213,29 @@ namespace OpenSim.Region.Environment.Scenes | |||
213 | 213 | ||
214 | SavePrimListToXml2(EntityList, stream, min, max); | 214 | SavePrimListToXml2(EntityList, stream, min, max); |
215 | } | 215 | } |
216 | |||
217 | public static void SaveNamedPrimsToXml2(Scene scene, string primName, string fileName) | ||
218 | { | ||
219 | m_log.InfoFormat( | ||
220 | "[SERIALISER]: Saving prims with name {0} in xml2 format for region {1} to {2}", | ||
221 | primName, scene.RegionInfo.RegionName, fileName); | ||
222 | |||
223 | List<EntityBase> entityList = scene.GetEntities(); | ||
224 | List<EntityBase> primList = new List<EntityBase>(); | ||
225 | |||
226 | foreach (EntityBase ent in entityList) | ||
227 | { | ||
228 | if (ent is SceneObjectGroup) | ||
229 | { | ||
230 | if (ent.Name == primName) | ||
231 | { | ||
232 | primList.Add(ent); | ||
233 | } | ||
234 | } | ||
235 | } | ||
236 | |||
237 | SavePrimListToXml2(primList, fileName); | ||
238 | } | ||
216 | 239 | ||
217 | public static void SavePrimListToXml2(List<EntityBase> entityList, string fileName) | 240 | public static void SavePrimListToXml2(List<EntityBase> entityList, string fileName) |
218 | { | 241 | { |
diff --git a/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs b/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs index 8b5dd2c..c1af947 100644 --- a/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs +++ b/OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs | |||
@@ -116,6 +116,11 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser | |||
116 | { | 116 | { |
117 | SceneXmlLoader.SavePrimsToXml2(scene, stream, min, max); | 117 | SceneXmlLoader.SavePrimsToXml2(scene, stream, min, max); |
118 | } | 118 | } |
119 | |||
120 | public void SaveNamedPrimsToXml2(Scene scene, string primName, string fileName) | ||
121 | { | ||
122 | SceneXmlLoader.SaveNamedPrimsToXml2(scene, primName, fileName); | ||
123 | } | ||
119 | 124 | ||
120 | public SceneObjectGroup DeserializeGroupFromXml2(string xmlString) | 125 | public SceneObjectGroup DeserializeGroupFromXml2(string xmlString) |
121 | { | 126 | { |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index eaf04ea..70cd45e 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1880,28 +1880,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
1880 | return false; | 1880 | return false; |
1881 | } | 1881 | } |
1882 | 1882 | ||
1883 | public void SaveNamedPrimsToXml2(string primName, string fileName) | ||
1884 | { | ||
1885 | m_log.InfoFormat( | ||
1886 | "[SCENE]: Saving prims with name {0} in xml2 format for region {1} to {2}", primName, RegionInfo.RegionName, fileName); | ||
1887 | |||
1888 | List<EntityBase> entityList = GetEntities(); | ||
1889 | List<EntityBase> primList = new List<EntityBase>(); | ||
1890 | |||
1891 | foreach (EntityBase ent in entityList) | ||
1892 | { | ||
1893 | if (ent is SceneObjectGroup) | ||
1894 | { | ||
1895 | if (ent.Name == primName) | ||
1896 | { | ||
1897 | primList.Add(ent); | ||
1898 | } | ||
1899 | } | ||
1900 | } | ||
1901 | |||
1902 | m_serialiser.SavePrimListToXml2(primList, fileName); | ||
1903 | } | ||
1904 | |||
1905 | /// <summary> | 1883 | /// <summary> |
1906 | /// Move the given scene object into a new region depending on which region its absolute position has moved | 1884 | /// Move the given scene object into a new region depending on which region its absolute position has moved |
1907 | /// into. | 1885 | /// into. |
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs index 9e83f25..d585b48 100644 --- a/OpenSim/Region/Environment/Scenes/SceneManager.cs +++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs | |||
@@ -215,7 +215,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
215 | 215 | ||
216 | public void SaveNamedPrimsToXml2(string primName, string filename) | 216 | public void SaveNamedPrimsToXml2(string primName, string filename) |
217 | { | 217 | { |
218 | CurrentOrFirstScene.SaveNamedPrimsToXml2( primName, filename); | 218 | IRegionSerialiserModule serialiser = CurrentOrFirstScene.RequestModuleInterface<IRegionSerialiserModule>(); |
219 | if (serialiser != null) | ||
220 | serialiser.SaveNamedPrimsToXml2(CurrentOrFirstScene, primName, filename); | ||
219 | } | 221 | } |
220 | 222 | ||
221 | /// <summary> | 223 | /// <summary> |