aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs261
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs8
2 files changed, 164 insertions, 105 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index efd5a8e..6e3b15a 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -316,7 +316,6 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
316 m_SOPXmlProcessors.Add("FolderID", ProcessFolderID); 316 m_SOPXmlProcessors.Add("FolderID", ProcessFolderID);
317 m_SOPXmlProcessors.Add("InventorySerial", ProcessInventorySerial); 317 m_SOPXmlProcessors.Add("InventorySerial", ProcessInventorySerial);
318 m_SOPXmlProcessors.Add("TaskInventory", ProcessTaskInventory); 318 m_SOPXmlProcessors.Add("TaskInventory", ProcessTaskInventory);
319 m_SOPXmlProcessors.Add("ObjectFlags", ProcessObjectFlags);
320 m_SOPXmlProcessors.Add("UUID", ProcessUUID); 319 m_SOPXmlProcessors.Add("UUID", ProcessUUID);
321 m_SOPXmlProcessors.Add("LocalId", ProcessLocalId); 320 m_SOPXmlProcessors.Add("LocalId", ProcessLocalId);
322 m_SOPXmlProcessors.Add("Name", ProcessName); 321 m_SOPXmlProcessors.Add("Name", ProcessName);
@@ -467,11 +466,6 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
467 obj.TaskInventory = ReadTaskInventory(reader, "TaskInventory"); 466 obj.TaskInventory = ReadTaskInventory(reader, "TaskInventory");
468 } 467 }
469 468
470 private static void ProcessObjectFlags(SceneObjectPart obj, XmlTextReader reader)
471 {
472 obj.Flags = (PrimFlags)reader.ReadElementContentAsInt("ObjectFlags", String.Empty);
473 }
474
475 private static void ProcessUUID(SceneObjectPart obj, XmlTextReader reader) 469 private static void ProcessUUID(SceneObjectPart obj, XmlTextReader reader)
476 { 470 {
477 obj.UUID = ReadUUID(reader, "UUID"); 471 obj.UUID = ReadUUID(reader, "UUID");
@@ -1089,7 +1083,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1089 1083
1090 sog.ForEachPart(delegate(SceneObjectPart sop) 1084 sog.ForEachPart(delegate(SceneObjectPart sop)
1091 { 1085 {
1092 SOPToXml2(writer, sop, sog.RootPart); 1086 if (sop.UUID != sog.RootPart.UUID)
1087 SOPToXml2(writer, sop, sog.RootPart);
1093 }); 1088 });
1094 1089
1095 writer.WriteEndElement(); 1090 writer.WriteEndElement();
@@ -1102,19 +1097,18 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1102 writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 1097 writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
1103 writer.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema"); 1098 writer.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
1104 1099
1100 writer.WriteElementString("AllowedDrop", sop.AllowedDrop.ToString().ToLower());
1105 WriteUUID(writer, "CreatorID", sop.CreatorID); 1101 WriteUUID(writer, "CreatorID", sop.CreatorID);
1106 WriteUUID(writer, "FolderID", sop.FolderID); 1102 WriteUUID(writer, "FolderID", sop.FolderID);
1107 writer.WriteElementString("InventorySerial", (sop.Inventory != null) ? sop.InventorySerial.ToString() : "0"); 1103 writer.WriteElementString("InventorySerial", sop.InventorySerial.ToString());
1108 1104
1109 // FIXME: Task inventory 1105 WriteTaskInventory(writer, sop.TaskInventory);
1110 writer.WriteStartElement("TaskInventory"); writer.WriteEndElement();
1111
1112 writer.WriteElementString("ObjectFlags", ((int)sop.Flags).ToString());
1113 1106
1114 WriteUUID(writer, "UUID", sop.UUID); 1107 WriteUUID(writer, "UUID", sop.UUID);
1115 writer.WriteElementString("LocalId", sop.LocalId.ToString()); 1108 writer.WriteElementString("LocalId", sop.LocalId.ToString());
1116 writer.WriteElementString("Name", sop.Name); 1109 writer.WriteElementString("Name", sop.Name);
1117 writer.WriteElementString("Material", ((int)sop.Material).ToString()); 1110 writer.WriteElementString("Material", sop.Material.ToString());
1111 writer.WriteElementString("PassTouches", sop.PassTouches.ToString().ToLower());
1118 writer.WriteElementString("RegionHandle", sop.RegionHandle.ToString()); 1112 writer.WriteElementString("RegionHandle", sop.RegionHandle.ToString());
1119 writer.WriteElementString("ScriptAccessPin", sop.ScriptAccessPin.ToString()); 1113 writer.WriteElementString("ScriptAccessPin", sop.ScriptAccessPin.ToString());
1120 1114
@@ -1123,115 +1117,40 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1123 1117
1124 WriteQuaternion(writer, "RotationOffset", sop.RotationOffset); 1118 WriteQuaternion(writer, "RotationOffset", sop.RotationOffset);
1125 WriteVector(writer, "Velocity", sop.Velocity); 1119 WriteVector(writer, "Velocity", sop.Velocity);
1126 WriteVector(writer, "RotationalVelocity", Vector3.Zero);
1127 WriteVector(writer, "AngularVelocity", sop.AngularVelocity); 1120 WriteVector(writer, "AngularVelocity", sop.AngularVelocity);
1128 WriteVector(writer, "Acceleration", sop.Acceleration); 1121 WriteVector(writer, "Acceleration", sop.Acceleration);
1129 writer.WriteElementString("Description", sop.Description); 1122 writer.WriteElementString("Description", sop.Description);
1130 writer.WriteStartElement("Color"); 1123 if (sop.Color != null)
1131 writer.WriteElementString("R", sop.Color.R.ToString(Utils.EnUsCulture)); 1124 {
1132 writer.WriteElementString("G", sop.Color.G.ToString(Utils.EnUsCulture)); 1125 writer.WriteStartElement("Color");
1133 writer.WriteElementString("B", sop.Color.B.ToString(Utils.EnUsCulture)); 1126 writer.WriteElementString("R", sop.Color.R.ToString(Utils.EnUsCulture));
1134 writer.WriteElementString("A", sop.Color.G.ToString(Utils.EnUsCulture)); 1127 writer.WriteElementString("G", sop.Color.G.ToString(Utils.EnUsCulture));
1135 writer.WriteEndElement(); 1128 writer.WriteElementString("B", sop.Color.B.ToString(Utils.EnUsCulture));
1129 writer.WriteElementString("A", sop.Color.G.ToString(Utils.EnUsCulture));
1130 writer.WriteEndElement();
1131 }
1132
1136 writer.WriteElementString("Text", sop.Text); 1133 writer.WriteElementString("Text", sop.Text);
1137 writer.WriteElementString("SitName", sop.SitName); 1134 writer.WriteElementString("SitName", sop.SitName);
1138 writer.WriteElementString("TouchName", sop.TouchName); 1135 writer.WriteElementString("TouchName", sop.TouchName);
1139 1136
1140 writer.WriteElementString("LinkNum", sop.LinkNum.ToString()); 1137 writer.WriteElementString("LinkNum", sop.LinkNum.ToString());
1141 writer.WriteElementString("ClickAction", sop.ClickAction.ToString()); 1138 writer.WriteElementString("ClickAction", sop.ClickAction.ToString());
1142 writer.WriteStartElement("Shape");
1143 1139
1144 writer.WriteElementString("ProfileCurve", sop.Shape.ProfileCurve.ToString()); 1140 WriteShape(writer, sop.Shape);
1145
1146 writer.WriteStartElement("TextureEntry");
1147 byte[] te;
1148 if (sop.Shape.TextureEntry != null)
1149 te = sop.Shape.TextureEntry;
1150 else
1151 te = Utils.EmptyBytes;
1152 writer.WriteBase64(te, 0, te.Length);
1153 writer.WriteEndElement(); // TextureEntry
1154
1155 writer.WriteStartElement("ExtraParams");
1156 byte[] ep;
1157 if (sop.Shape.ExtraParams != null)
1158 ep = sop.Shape.ExtraParams;
1159 else
1160 ep = Utils.EmptyBytes;
1161 writer.WriteBase64(ep, 0, ep.Length);
1162 writer.WriteEndElement(); // ExtraParams
1163
1164 writer.WriteElementString("PathBegin", Primitive.PackBeginCut(sop.Shape.PathBegin).ToString());
1165 writer.WriteElementString("PathCurve", sop.Shape.PathCurve.ToString());
1166 writer.WriteElementString("PathEnd", Primitive.PackEndCut(sop.Shape.PathEnd).ToString());
1167 writer.WriteElementString("PathRadiusOffset", Primitive.PackPathTwist(sop.Shape.PathRadiusOffset).ToString());
1168 writer.WriteElementString("PathRevolutions", Primitive.PackPathRevolutions(sop.Shape.PathRevolutions).ToString());
1169 writer.WriteElementString("PathScaleX", Primitive.PackPathScale(sop.Shape.PathScaleX).ToString());
1170 writer.WriteElementString("PathScaleY", Primitive.PackPathScale(sop.Shape.PathScaleY).ToString());
1171 writer.WriteElementString("PathShearX", ((byte)Primitive.PackPathShear(sop.Shape.PathShearX)).ToString());
1172 writer.WriteElementString("PathShearY", ((byte)Primitive.PackPathShear(sop.Shape.PathShearY)).ToString());
1173 writer.WriteElementString("PathSkew", Primitive.PackPathTwist(sop.Shape.PathSkew).ToString());
1174 writer.WriteElementString("PathTaperX", Primitive.PackPathTaper(sop.Shape.PathTaperX).ToString());
1175 writer.WriteElementString("PathTaperY", Primitive.PackPathTaper(sop.Shape.PathTaperY).ToString());
1176 writer.WriteElementString("PathTwist", Primitive.PackPathTwist(sop.Shape.PathTwist).ToString());
1177 writer.WriteElementString("PathTwistBegin", Primitive.PackPathTwist(sop.Shape.PathTwistBegin).ToString());
1178 writer.WriteElementString("PCode", sop.Shape.PCode.ToString());
1179 writer.WriteElementString("ProfileBegin", Primitive.PackBeginCut(sop.Shape.ProfileBegin).ToString());
1180 writer.WriteElementString("ProfileEnd", Primitive.PackEndCut(sop.Shape.ProfileEnd).ToString());
1181 writer.WriteElementString("ProfileHollow", Primitive.PackProfileHollow(sop.Shape.ProfileHollow).ToString());
1182 WriteVector(writer, "Scale", sop.Scale);
1183 writer.WriteElementString("State", sop.Shape.State.ToString());
1184
1185 writer.WriteElementString("ProfileShape", sop.Shape.ProfileShape.ToString());
1186 writer.WriteElementString("HollowShape", sop.Shape.HollowShape.ToString());
1187
1188 writer.WriteElementString("SculptTexture", sop.Shape.SculptTexture.ToString());
1189 writer.WriteElementString("SculptType", sop.Shape.SculptType.ToString());
1190 writer.WriteStartElement("SculptData");
1191 byte[] sd;
1192 if (sop.Shape.SculptData != null)
1193 sd = sop.Shape.ExtraParams;
1194 else
1195 sd = Utils.EmptyBytes;
1196 writer.WriteBase64(sd, 0, sd.Length);
1197 writer.WriteEndElement(); // SculptData
1198
1199 writer.WriteElementString("FlexiSoftness", sop.Shape.FlexiSoftness.ToString());
1200 writer.WriteElementString("FlexiTension", sop.Shape.FlexiTension.ToString());
1201 writer.WriteElementString("FlexiDrag", sop.Shape.FlexiDrag.ToString());
1202 writer.WriteElementString("FlexiGravity", sop.Shape.FlexiGravity.ToString());
1203 writer.WriteElementString("FlexiWind", sop.Shape.FlexiWind.ToString());
1204 writer.WriteElementString("FlexiForceX", sop.Shape.FlexiForceX.ToString());
1205 writer.WriteElementString("FlexiForceY", sop.Shape.FlexiForceY.ToString());
1206 writer.WriteElementString("FlexiForceZ", sop.Shape.FlexiForceZ.ToString());
1207
1208 writer.WriteElementString("LightColorR", sop.Shape.LightColorR.ToString());
1209 writer.WriteElementString("LightColorG", sop.Shape.LightColorG.ToString());
1210 writer.WriteElementString("LightColorB", sop.Shape.LightColorB.ToString());
1211 writer.WriteElementString("LightColorA", sop.Shape.LightColorA.ToString());
1212 writer.WriteElementString("LightRadius", sop.Shape.LightRadius.ToString());
1213 writer.WriteElementString("LightCutoff", sop.Shape.LightCutoff.ToString());
1214 writer.WriteElementString("LightFalloff", sop.Shape.LightFalloff.ToString());
1215 writer.WriteElementString("LightIntensity", sop.Shape.LightIntensity.ToString());
1216
1217 writer.WriteElementString("FlexyEntry", sop.Shape.FlexiEntry.ToString());
1218 writer.WriteElementString("LightEntry", sop.Shape.LightEntry.ToString());
1219 writer.WriteElementString("SculptEntry", sop.Shape.SculptEntry.ToString());
1220
1221 writer.WriteEndElement(); // Shape
1222 1141
1223 WriteVector(writer, "Scale", sop.Scale); 1142 WriteVector(writer, "Scale", sop.Scale);
1224 writer.WriteElementString("UpdateFlag", "0"); 1143 writer.WriteElementString("UpdateFlag", sop.UpdateFlag.ToString());
1225 WriteQuaternion(writer, "SitTargetOrientation", sop.SitTargetOrientation); 1144 WriteQuaternion(writer, "SitTargetOrientation", sop.SitTargetOrientation);
1226 WriteVector(writer, "SitTargetPosition", sop.SitTargetPosition); 1145 WriteVector(writer, "SitTargetPosition", sop.SitTargetPosition);
1227 WriteVector(writer, "SitTargetPositionLL", sop.SitTargetPositionLL); 1146 WriteVector(writer, "SitTargetPositionLL", sop.SitTargetPositionLL);
1228 WriteQuaternion(writer, "SitTargetOrientationLL", sop.SitTargetOrientationLL); 1147 WriteQuaternion(writer, "SitTargetOrientationLL", sop.SitTargetOrientationLL);
1229 writer.WriteElementString("ParentID", sop.ParentID.ToString()); 1148 writer.WriteElementString("ParentID", sop.ParentID.ToString());
1230 writer.WriteElementString("CreationDate", sop.CreationDate.ToString()); 1149 writer.WriteElementString("CreationDate", sop.CreationDate.ToString());
1231 writer.WriteElementString("Category", "0"); 1150 writer.WriteElementString("Category", sop.Category.ToString());
1232 writer.WriteElementString("SalePrice", sop.SalePrice.ToString()); 1151 writer.WriteElementString("SalePrice", sop.SalePrice.ToString());
1233 writer.WriteElementString("ObjectSaleType", ((int)sop.ObjectSaleType).ToString()); 1152 writer.WriteElementString("ObjectSaleType", sop.ObjectSaleType.ToString());
1234 writer.WriteElementString("OwnershipCost", "0"); 1153 writer.WriteElementString("OwnershipCost", sop.OwnershipCost.ToString());
1235 WriteUUID(writer, "GroupID", sop.GroupID); 1154 WriteUUID(writer, "GroupID", sop.GroupID);
1236 WriteUUID(writer, "OwnerID", sop.OwnerID); 1155 WriteUUID(writer, "OwnerID", sop.OwnerID);
1237 WriteUUID(writer, "LastOwnerID", sop.LastOwnerID); 1156 WriteUUID(writer, "LastOwnerID", sop.LastOwnerID);
@@ -1243,6 +1162,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1243 writer.WriteElementString("Flags", sop.Flags.ToString()); 1162 writer.WriteElementString("Flags", sop.Flags.ToString());
1244 WriteUUID(writer, "CollisionSound", sop.CollisionSound); 1163 WriteUUID(writer, "CollisionSound", sop.CollisionSound);
1245 writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString()); 1164 writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());
1165 if (sop.MediaUrl != null)
1166 writer.WriteElementString("MediaUrl", sop.MediaUrl.ToString());
1246 1167
1247 writer.WriteEndElement(); 1168 writer.WriteEndElement();
1248 } 1169 }
@@ -1273,6 +1194,134 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1273 writer.WriteEndElement(); 1194 writer.WriteEndElement();
1274 } 1195 }
1275 1196
1197 static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv)
1198 {
1199 if (tinv.Count > 0) // otherwise skip this
1200 {
1201 writer.WriteStartElement("TaskInventory");
1202
1203 foreach (TaskInventoryItem item in tinv.Values)
1204 {
1205 writer.WriteStartElement("TaskInventoryItem");
1206
1207 WriteUUID(writer, "AssetID", item.AssetID);
1208 writer.WriteElementString("BasePermissions", item.BasePermissions.ToString());
1209 writer.WriteElementString("CreationDate", item.CreationDate.ToString());
1210 WriteUUID(writer, "CreatorID", item.CreatorID);
1211 writer.WriteElementString("Description", item.Description);
1212 writer.WriteElementString("EveryonePermissions", item.EveryonePermissions.ToString());
1213 writer.WriteElementString("Flags", item.Flags.ToString());
1214 WriteUUID(writer, "GroupID", item.GroupID);
1215 writer.WriteElementString("GroupPermissions", item.GroupPermissions.ToString());
1216 writer.WriteElementString("InvType", item.InvType.ToString());
1217 WriteUUID(writer, "ItemID", item.ItemID);
1218 WriteUUID(writer, "OldItemID", item.OldItemID);
1219 WriteUUID(writer, "LastOwnerID", item.LastOwnerID);
1220 writer.WriteElementString("Name", item.Name);
1221 writer.WriteElementString("NextPermissions", item.NextPermissions.ToString());
1222 WriteUUID(writer, "OwnerID", item.OwnerID);
1223 writer.WriteElementString("CurrentPermissions", item.CurrentPermissions.ToString());
1224 WriteUUID(writer, "ParentID", item.ParentID);
1225 WriteUUID(writer, "ParentPartID", item.ParentPartID);
1226 WriteUUID(writer, "PermsGranter", item.PermsGranter);
1227 writer.WriteElementString("PermsMask", item.PermsMask.ToString());
1228 writer.WriteElementString("Type", item.Type.ToString());
1229
1230 writer.WriteEndElement(); // TaskInventoryItem
1231 }
1232
1233 writer.WriteEndElement(); // TaskInventory
1234 }
1235 }
1236
1237 static void WriteShape(XmlTextWriter writer, PrimitiveBaseShape shp)
1238 {
1239 if (shp != null)
1240 {
1241 writer.WriteStartElement("Shape");
1242
1243 writer.WriteElementString("ProfileCurve", shp.ProfileCurve.ToString());
1244
1245 writer.WriteStartElement("TextureEntry");
1246 byte[] te;
1247 if (shp.TextureEntry != null)
1248 te = shp.TextureEntry;
1249 else
1250 te = Utils.EmptyBytes;
1251 writer.WriteBase64(te, 0, te.Length);
1252 writer.WriteEndElement(); // TextureEntry
1253
1254 writer.WriteStartElement("ExtraParams");
1255 byte[] ep;
1256 if (shp.ExtraParams != null)
1257 ep = shp.ExtraParams;
1258 else
1259 ep = Utils.EmptyBytes;
1260 writer.WriteBase64(ep, 0, ep.Length);
1261 writer.WriteEndElement(); // ExtraParams
1262
1263 writer.WriteElementString("PathBegin", shp.PathBegin.ToString());
1264 writer.WriteElementString("PathCurve", shp.PathCurve.ToString());
1265 writer.WriteElementString("PathEnd", shp.PathEnd.ToString());
1266 writer.WriteElementString("PathRadiusOffset", shp.PathRadiusOffset.ToString());
1267 writer.WriteElementString("PathRevolutions", shp.PathRevolutions.ToString());
1268 writer.WriteElementString("PathScaleX", shp.PathScaleX.ToString());
1269 writer.WriteElementString("PathScaleY", shp.PathScaleY.ToString());
1270 writer.WriteElementString("PathShearX", shp.PathShearX.ToString());
1271 writer.WriteElementString("PathShearY", shp.PathShearY.ToString());
1272 writer.WriteElementString("PathSkew", shp.PathSkew.ToString());
1273 writer.WriteElementString("PathTaperX", shp.PathTaperX.ToString());
1274 writer.WriteElementString("PathTaperY", shp.PathTaperY.ToString());
1275 writer.WriteElementString("PathTwist", shp.PathTwist.ToString());
1276 writer.WriteElementString("PathTwistBegin", shp.PathTwistBegin.ToString());
1277 writer.WriteElementString("PCode", shp.PCode.ToString());
1278 writer.WriteElementString("ProfileBegin", shp.ProfileBegin.ToString());
1279 writer.WriteElementString("ProfileEnd", shp.ProfileEnd.ToString());
1280 writer.WriteElementString("ProfileHollow", shp.ProfileHollow.ToString());
1281 writer.WriteElementString("State", shp.State.ToString());
1282
1283 writer.WriteElementString("ProfileShape", shp.ProfileShape.ToString());
1284 writer.WriteElementString("HollowShape", shp.HollowShape.ToString());
1285
1286 WriteUUID(writer, "SculptTexture", shp.SculptTexture);
1287 writer.WriteElementString("SculptType", shp.SculptType.ToString());
1288 writer.WriteStartElement("SculptData");
1289 byte[] sd;
1290 if (shp.SculptData != null)
1291 sd = shp.ExtraParams;
1292 else
1293 sd = Utils.EmptyBytes;
1294 writer.WriteBase64(sd, 0, sd.Length);
1295 writer.WriteEndElement(); // SculptData
1296
1297 writer.WriteElementString("FlexiSoftness", shp.FlexiSoftness.ToString());
1298 writer.WriteElementString("FlexiTension", shp.FlexiTension.ToString());
1299 writer.WriteElementString("FlexiDrag", shp.FlexiDrag.ToString());
1300 writer.WriteElementString("FlexiGravity", shp.FlexiGravity.ToString());
1301 writer.WriteElementString("FlexiWind", shp.FlexiWind.ToString());
1302 writer.WriteElementString("FlexiForceX", shp.FlexiForceX.ToString());
1303 writer.WriteElementString("FlexiForceY", shp.FlexiForceY.ToString());
1304 writer.WriteElementString("FlexiForceZ", shp.FlexiForceZ.ToString());
1305
1306 writer.WriteElementString("LightColorR", shp.LightColorR.ToString());
1307 writer.WriteElementString("LightColorG", shp.LightColorG.ToString());
1308 writer.WriteElementString("LightColorB", shp.LightColorB.ToString());
1309 writer.WriteElementString("LightColorA", shp.LightColorA.ToString());
1310 writer.WriteElementString("LightRadius", shp.LightRadius.ToString());
1311 writer.WriteElementString("LightCutoff", shp.LightCutoff.ToString());
1312 writer.WriteElementString("LightFalloff", shp.LightFalloff.ToString());
1313 writer.WriteElementString("LightIntensity", shp.LightIntensity.ToString());
1314
1315 writer.WriteElementString("FlexiEntry", shp.FlexiEntry.ToString().ToLower());
1316 writer.WriteElementString("LightEntry", shp.LightEntry.ToString().ToLower());
1317 writer.WriteElementString("SculptEntry", shp.SculptEntry.ToString().ToLower());
1318
1319 if (shp.Media != null)
1320 writer.WriteElementString("Media", shp.Media.ToXml());
1321
1322 writer.WriteEndElement(); // Shape
1323 }
1324 }
1276 1325
1277 //////// Read ///////// 1326 //////// Read /////////
1278 public static bool Xml2ToSOG(XmlTextReader reader, SceneObjectGroup sog) 1327 public static bool Xml2ToSOG(XmlTextReader reader, SceneObjectGroup sog)
@@ -1332,13 +1381,16 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1332 SOPXmlProcessor p = null; 1381 SOPXmlProcessor p = null;
1333 if (m_SOPXmlProcessors.TryGetValue(reader.Name, out p)) 1382 if (m_SOPXmlProcessors.TryGetValue(reader.Name, out p))
1334 { 1383 {
1384 //m_log.DebugFormat("[XXX] Processing: {0}", reader.Name);
1335 try 1385 try
1336 { 1386 {
1337 p(obj, reader); 1387 p(obj, reader);
1338 } 1388 }
1339 catch (Exception e) 1389 catch (Exception e)
1340 { 1390 {
1341 m_log.DebugFormat("[SceneObjectSerializer]: exception while parsing {0} in {1}-{2}: {3}", nodeName, obj.Name, obj.UUID, e); 1391 m_log.DebugFormat("[SceneObjectSerializer]: exception while parsing {0}: {1}", nodeName, e);
1392 if (reader.NodeType == XmlNodeType.EndElement)
1393 reader.Read();
1342 } 1394 }
1343 } 1395 }
1344 else 1396 else
@@ -1441,6 +1493,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1441 1493
1442 while (reader.NodeType != XmlNodeType.EndElement) 1494 while (reader.NodeType != XmlNodeType.EndElement)
1443 { 1495 {
1496 //m_log.DebugFormat("[XXX] Processing: {0}", reader.Name);
1444 ShapeXmlProcessor p = null; 1497 ShapeXmlProcessor p = null;
1445 if (m_ShapeXmlProcessors.TryGetValue(reader.Name, out p)) 1498 if (m_ShapeXmlProcessors.TryGetValue(reader.Name, out p))
1446 p(shape, reader); 1499 p(shape, reader);
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
index bb67ca0..c6d4e55 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
@@ -280,6 +280,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
280 280
281 public static void SavePrimListToXml2(EntityBase[] entityList, TextWriter stream, Vector3 min, Vector3 max) 281 public static void SavePrimListToXml2(EntityBase[] entityList, TextWriter stream, Vector3 min, Vector3 max)
282 { 282 {
283 XmlTextWriter writer = new XmlTextWriter(stream);
284
283 int primCount = 0; 285 int primCount = 0;
284 stream.WriteLine("<scene>\n"); 286 stream.WriteLine("<scene>\n");
285 287
@@ -297,10 +299,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
297 continue; 299 continue;
298 } 300 }
299 301
300 stream.WriteLine(SceneObjectSerializer.ToXml2Format(g)); 302 //stream.WriteLine(SceneObjectSerializer.ToXml2Format(g));
303 SceneObjectSerializer.SOGToXml2(writer, (SceneObjectGroup)ent);
304 stream.WriteLine();
305
301 primCount++; 306 primCount++;
302 } 307 }
303 } 308 }
309
304 stream.WriteLine("</scene>\n"); 310 stream.WriteLine("</scene>\n");
305 stream.Flush(); 311 stream.Flush();
306 } 312 }