Alter uuid gather so that it properly analyzes coalesced objects.

This should correct save all the assets required for the items within the coalesced objects in an IAR.  This should also correctly gather the items on hypergrid takes.
0.7.1-dev
Justin Clark-Casey (justincc) 2011-04-21 18:12:29 +01:00
parent ccc26f7443
commit 63c1b7e475
2 changed files with 45 additions and 24 deletions

View File

@ -116,6 +116,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
using (StringReader sr = new StringReader(xml))
{
using (XmlTextReader reader = new XmlTextReader(sr))
{
try
{
reader.Read();
if (reader.Name != "CoalescedObject")
@ -141,6 +143,15 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
reader.ReadEndElement(); // CoalescedObject
}
catch (Exception e)
{
m_log.ErrorFormat(
"[COALESCED SCENE OBJECTS SERIALIZER]: Deserialization of xml failed with {0} {1}",
e.Message, e.StackTrace);
return false;
}
}
}
return true;

View File

@ -298,12 +298,22 @@ namespace OpenSim.Region.Framework.Scenes
if (null != objectAsset)
{
string xml = Utils.BytesToString(objectAsset.Data);
CoalescedSceneObjects coa;
if (CoalescedSceneObjectsSerializer.TryFromXml(xml, out coa))
{
foreach (SceneObjectGroup sog in coa.Objects)
GatherAssetUuids(sog, assetUuids);
}
else
{
SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml);
if (null != sog)
GatherAssetUuids(sog, assetUuids);
}
}
}
/// <summary>
/// Get the asset uuid associated with a gesture