From 7cdce3e276c66de26cd12b9d6bd51976e1e41462 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 31 Aug 2019 15:01:15 +0100 Subject: [PATCH] XbakesModule: allow more textures, older versions will not see --- .../Avatar/BakedTextures/XBakesModule.cs | 61 ++++++++++++++---- bin/HttpServer_OpenSim.dll | Bin 121344 -> 121344 bytes 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs b/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs index cfa9581d82..b9f9298014 100644 --- a/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/BakedTextures/XBakesModule.cs @@ -125,32 +125,49 @@ namespace OpenSim.Region.CoreModules.Avatar.BakedTextures using(XmlTextReader sr = new XmlTextReader(s)) { sr.ReadStartElement("BakedAppearance"); - while(sr.LocalName == "BakedTexture") + while (sr.LocalName == "BakedTexture") { string sTextureIndex = sr.GetAttribute("TextureIndex"); int lTextureIndex = Convert.ToInt32(sTextureIndex); string sCacheId = sr.GetAttribute("CacheId"); - UUID lCacheId = UUID.Zero; - if(!(UUID.TryParse(sCacheId,out lCacheId))) - { - // ?? Nothing here - } + UUID.TryParse(sCacheId, out UUID lCacheId); sr.ReadStartElement("BakedTexture"); - if(sr.Name=="AssetBase") + if (sr.Name == "AssetBase") { AssetBase a = (AssetBase)m_serializer.Deserialize(sr); ret.Add(new WearableCacheItem() - { + { CacheId = lCacheId, TextureIndex = (uint)lTextureIndex, TextureAsset = a, TextureID = a.FullID - }); + }); sr.ReadEndElement(); } } - m_log.DebugFormat("[XBakes]: read {0} textures for user {1}",ret.Count,id); + while (sr.LocalName == "BESetA") + { + string sTextureIndex = sr.GetAttribute("TextureIndex"); + int lTextureIndex = Convert.ToInt32(sTextureIndex); + string sCacheId = sr.GetAttribute("CacheId"); + UUID.TryParse(sCacheId, out UUID lCacheId); + + sr.ReadStartElement("BESetA"); + if (sr.Name == "AssetBase") + { + AssetBase a = (AssetBase)m_serializer.Deserialize(sr); + ret.Add(new WearableCacheItem() + { + CacheId = lCacheId, + TextureIndex = (uint)lTextureIndex, + TextureAsset = a, + TextureID = a.FullID + }); + sr.ReadEndElement(); + } + } + m_log.DebugFormat("[XBakes]: read {0} textures for user {1}",ret.Count,id); } return ret.ToArray(); } @@ -182,22 +199,40 @@ namespace OpenSim.Region.CoreModules.Avatar.BakedTextures using (XmlTextWriter bakeWriter = new XmlTextWriter(bakeStream, null)) { bakeWriter.WriteStartElement(String.Empty, "BakedAppearance", String.Empty); - + List extended = new List(); for (int i = 0; i < data.Length; i++) { if (data[i] != null && data[i].TextureAsset != null) { + if(data[i].TextureIndex > 26) + { + extended.Add(i); + continue; + } bakeWriter.WriteStartElement(String.Empty, "BakedTexture", String.Empty); bakeWriter.WriteAttributeString(String.Empty, "TextureIndex", String.Empty, data[i].TextureIndex.ToString()); bakeWriter.WriteAttributeString(String.Empty, "CacheId", String.Empty, data[i].CacheId.ToString()); -// if (data[i].TextureAsset != null) - m_serializer.Serialize(bakeWriter, data[i].TextureAsset); + // if (data[i].TextureAsset != null) + m_serializer.Serialize(bakeWriter, data[i].TextureAsset); bakeWriter.WriteEndElement(); numberWears++; } } + if(extended.Count > 0) + { + foreach(int i in extended) + { + bakeWriter.WriteStartElement(String.Empty, "BESetA", String.Empty); + bakeWriter.WriteAttributeString(String.Empty, "TextureIndex", String.Empty, data[i].TextureIndex.ToString()); + bakeWriter.WriteAttributeString(String.Empty, "CacheId", String.Empty, data[i].CacheId.ToString()); + m_serializer.Serialize(bakeWriter, data[i].TextureAsset); + bakeWriter.WriteEndElement(); + numberWears++; + } + } + bakeWriter.WriteEndElement(); bakeWriter.Flush(); diff --git a/bin/HttpServer_OpenSim.dll b/bin/HttpServer_OpenSim.dll index bc102bebfd9a3b8c012bf2042f2282166fe98222..c0752de1ca2f63175d25e1ec8c0c24f4f7e7d639 100755 GIT binary patch delta 15951 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 delta 15926 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