aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/PrimitiveBaseShape.cs38
-rw-r--r--OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs58
2 files changed, 29 insertions, 67 deletions
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs
index de7e42d..685599a 100644
--- a/OpenSim/Framework/PrimitiveBaseShape.cs
+++ b/OpenSim/Framework/PrimitiveBaseShape.cs
@@ -1238,7 +1238,7 @@ namespace OpenSim.Framework
1238 return null; 1238 return null;
1239 } 1239 }
1240 1240
1241 public void WriteXml(XmlWriter writer) 1241 public string ToXml()
1242 { 1242 {
1243 lock (this) 1243 lock (this)
1244 { 1244 {
@@ -1265,18 +1265,26 @@ namespace OpenSim.Framework
1265 xtw.WriteEndElement(); 1265 xtw.WriteEndElement();
1266 1266
1267 xtw.Flush(); 1267 xtw.Flush();
1268 writer.WriteRaw(sw.ToString()); 1268 return sw.ToString();
1269 } 1269 }
1270 } 1270 }
1271 } 1271 }
1272 } 1272 }
1273 1273
1274 public void ReadXml(XmlReader reader) 1274 public void WriteXml(XmlWriter writer)
1275 {
1276 writer.WriteRaw(ToXml());
1277 }
1278
1279 public static MediaList FromXml(string rawXml)
1275 { 1280 {
1276 if (reader.IsEmptyElement) 1281 MediaList ml = new MediaList();
1277 return; 1282 ml.ReadXml(rawXml);
1278 1283 return ml;
1279 string rawXml = reader.ReadInnerXml(); 1284 }
1285
1286 public void ReadXml(string rawXml)
1287 {
1280 using (StringReader sr = new StringReader(rawXml)) 1288 using (StringReader sr = new StringReader(rawXml))
1281 { 1289 {
1282 using (XmlTextReader xtr = new XmlTextReader(sr)) 1290 using (XmlTextReader xtr = new XmlTextReader(sr))
@@ -1292,8 +1300,6 @@ namespace OpenSim.Framework
1292 xtr.ReadStartElement("osmedia"); 1300 xtr.ReadStartElement("osmedia");
1293 1301
1294 OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml()); 1302 OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml());
1295
1296 List<MediaEntry> mediaEntries = new List<MediaEntry>();
1297 foreach (OSD osdMe in osdMeArray) 1303 foreach (OSD osdMe in osdMeArray)
1298 { 1304 {
1299 MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); 1305 MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry());
@@ -1303,7 +1309,15 @@ namespace OpenSim.Framework
1303 xtr.ReadEndElement(); 1309 xtr.ReadEndElement();
1304 } 1310 }
1305 } 1311 }
1306 } 1312 }
1313
1314 public void ReadXml(XmlReader reader)
1315 {
1316 if (reader.IsEmptyElement)
1317 return;
1318
1319 ReadXml(reader.ReadInnerXml());
1320 }
1307 } 1321 }
1308 } 1322 }
1309} \ No newline at end of file 1323} \ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs
index 339a979..52acf81 100644
--- a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs
+++ b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs
@@ -203,67 +203,15 @@ namespace OpenSim.Region.CoreModules.Media.Moap
203 if (null == part.Shape.MediaRaw) 203 if (null == part.Shape.MediaRaw)
204 return; 204 return;
205 205
206 using (StringReader sr = new StringReader(part.Shape.MediaRaw)) 206 part.Shape.Media = PrimitiveBaseShape.MediaList.FromXml(part.Shape.MediaRaw);
207 {
208 using (XmlTextReader xtr = new XmlTextReader(sr))
209 {
210 xtr.MoveToContent();
211
212 string type = xtr.GetAttribute("type");
213 //m_log.DebugFormat("[MOAP]: Loaded media texture entry with type {0}", type);
214
215 if (type != MEDIA_TEXTURE_TYPE)
216 return;
217
218 xtr.ReadStartElement("osmedia");
219
220 OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml());
221
222 PrimitiveBaseShape.MediaList mediaEntries = new PrimitiveBaseShape.MediaList();
223 foreach (OSD osdMe in osdMeArray)
224 {
225 MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry());
226 mediaEntries.Add(me);
227 }
228
229 xtr.ReadEndElement();
230
231 part.Shape.Media = mediaEntries;
232 }
233 }
234 } 207 }
235 208
236 protected void OnSceneObjectPartPreSave(SceneObjectPart part) 209 protected void OnSceneObjectPartPreSave(SceneObjectPart part)
237 { 210 {
238 if (null == part.Shape.Media) 211 if (null == part.Shape.Media)
239 return; 212 return;
240 213
241 using (StringWriter sw = new StringWriter()) 214 part.Shape.MediaRaw = part.Shape.Media.ToXml();
242 {
243 using (XmlTextWriter xtw = new XmlTextWriter(sw))
244 {
245 xtw.WriteStartElement("osmedia");
246 xtw.WriteAttributeString("type", MEDIA_TEXTURE_TYPE);
247 xtw.WriteAttributeString("major_version", "0");
248 xtw.WriteAttributeString("minor_version", "1");
249
250 OSDArray meArray = new OSDArray();
251 foreach (MediaEntry me in part.Shape.Media)
252 {
253 OSD osd = (null == me ? new OSD() : me.GetOSD());
254 meArray.Add(osd);
255 }
256
257 xtw.WriteStartElement("osdata");
258 xtw.WriteRaw(OSDParser.SerializeLLSDXmlString(meArray));
259 xtw.WriteEndElement();
260
261 xtw.WriteEndElement();
262
263 xtw.Flush();
264 part.Shape.MediaRaw = sw.ToString();
265 }
266 }
267 } 215 }
268 216
269 protected void OnSceneObjectPartCopy(SceneObjectPart copy, SceneObjectPart original, bool userExposed) 217 protected void OnSceneObjectPartCopy(SceneObjectPart copy, SceneObjectPart original, bool userExposed)