and more changes on uuid gatherer and libomv

master
UbitUmarov 2020-05-30 21:34:13 +01:00
parent 42b75021b6
commit 8ac70b6155
5 changed files with 23 additions and 16 deletions

View File

@ -849,6 +849,8 @@ namespace OpenSim.Region.Framework.Scenes
int st = -1;
while ((st = data.IndexOf('<')) >= 0)
{
if (st > 0 && data[st - 1] == (byte)'\\')
data.osUTF8SubStringSelf(st + 1);
break;
}
if (st < 0)
@ -857,6 +859,8 @@ namespace OpenSim.Region.Framework.Scenes
int ed = -1;
while ((ed = data.IndexOf('>')) >= 0)
{
if (data[st - 1] == (byte)'\\')
data.osUTF8SubStringSelf(st + 1);
break;
}
if (ed < 0)
@ -984,24 +988,27 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary>
private void RecordMaterialAssetUuids(AssetBase materialAsset)
{
OSDMap mat;
try
osUTF8 data = new osUTF8(materialAsset.Data);
int next;
while ((next = getxmlheader(data, out osUTF8 header)) > 0)
{
mat = (OSDMap)OSDParser.DeserializeLLSDXml(materialAsset.Data);
}
catch (Exception e)
data.osUTF8SubStringSelf(next);
if (header.StartsWith("/"))
continue;
if (header.StartsWith("uuid"))
{
m_log.WarnFormat("[Materials]: cannot decode material asset {0}: {1}", materialAsset.ID, e.Message);
return;
if(header.EndsWith((byte)'/'))
continue;
int indx = data.IndexOf((byte)'<');
if(indx < 0)
continue;
osUTF8 tmp = data.osUTF8SubString(0, indx);
tmp.SelfTrim();
if(UUID.TryParse(tmp.ToString(), out UUID id) && id != UUID.Zero)
GatheredUuids[id] = (sbyte)AssetType.Texture;
data.osUTF8SubStringSelf(indx + 1);
}
}
UUID normMap = mat["NormMap"].AsUUID();
if (normMap != UUID.Zero)
GatheredUuids[normMap] = (sbyte)AssetType.Texture;
UUID specMap = mat["SpecMap"].AsUUID();
if (specMap != UUID.Zero)
GatheredUuids[specMap] = (sbyte)AssetType.Texture;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.