From 8ac70b6155c96795f1c1e2cc25ffae3ad6368e66 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 30 May 2020 21:34:13 +0100 Subject: [PATCH] and more changes on uuid gatherer and libomv --- .../Region/Framework/Scenes/UuidGatherer.cs | 39 +++++++++++------- bin/OpenMetaverse.Rendering.Meshmerizer.dll | Bin 20480 -> 20480 bytes bin/OpenMetaverse.StructuredData.dll | Bin 110592 -> 110592 bytes bin/OpenMetaverse.dll | Bin 2191360 -> 2191360 bytes bin/OpenMetaverseTypes.dll | Bin 126976 -> 126976 bytes 5 files changed, 23 insertions(+), 16 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs index 62cb7df4ab..c410f35889 100644 --- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs +++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs @@ -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 /// 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); + data.osUTF8SubStringSelf(next); + if (header.StartsWith("/")) + continue; + if (header.StartsWith("uuid")) + { + 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); + } } - catch (Exception e) - { - m_log.WarnFormat("[Materials]: cannot decode material asset {0}: {1}", materialAsset.ID, e.Message); - return; - } - - 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; } } diff --git a/bin/OpenMetaverse.Rendering.Meshmerizer.dll b/bin/OpenMetaverse.Rendering.Meshmerizer.dll index 8c06e6c2fd83f8548948a6da72028088737a1e83..11236d97dde4aea03334289e952bebc1960a6d4e 100755 GIT binary patch delta 45 zcmV+|0Mh?}paFoO0g#9S7`(BHaw7s0l(YULss|8d2uZo|5WPmX$ln{Ms3qqGV1PuG`X$yV#YecaxGP8` D+}{-g diff --git a/bin/OpenMetaverse.StructuredData.dll b/bin/OpenMetaverse.StructuredData.dll index 830baea991e81cce5ddf794f721512f7bfd3b010..fb1c6a959622cd19c9e458aee08162a590ea9049 100755 GIT binary patch delta 92 zcmZp8z}E19Z9)f=_@2hDtzC?L#RBbFrfaIbvz@m1`+M&#kX^rBql7U=Tt|G*r8ov4 vU;<(pMh1pCvl$uYbTcvp1-k^V4?Xg@!DzDI+BStR-kW8Vw{PfX3{U|8A(bG@ delta 92 zcmZp8z}E19Z9)grw`Gl8Te}$hiUl-9HWfNmS@DA*-6V5s}xZ6bN__<;WhN>CvWYaWcW;@`m;^z4F`7^eTjG)e+xwDUJaM zn1EP@k%7S?SdqcPS&<6V5s}xZ6ku~(mmT=X&~3xr{W%k#ule16rdNLZnO=pEtvcV9U5aA> z0wy4qVPs&i2v%gUa8_gp3U&#uGmS`Pe=h7Wy=Q&?bk+E8+kKoBcL}hYG8i!!Fc@$C O$oPeOJ7a?4e|`Xm(@_2Z diff --git a/bin/OpenMetaverseTypes.dll b/bin/OpenMetaverseTypes.dll index 8bf8b206b4b455d5b2ea20658d5fd55c32843687..4b0b68030c273098106a965859c77bc1a2c36ec3 100755 GIT binary patch delta 19533 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 delta 19321 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