From e1f7110a46ea1043bca599dd9a7cceb0c97cc4e6 Mon Sep 17 00:00:00 2001 From: Jim Radford Date: Wed, 14 Jan 2009 11:29:29 +0000 Subject: [PATCH] LIBOMV-434 Applies patch from Robin Cornelius - AppearanceManager - corrects cached bake issues, work in progress git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2415 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse/AppearanceManager.cs | 34 +++++++++++++++++------------- OpenMetaverse/AssetManager.cs | 2 ++ 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/OpenMetaverse/AppearanceManager.cs b/OpenMetaverse/AppearanceManager.cs index 3294e78e..9e890e67 100644 --- a/OpenMetaverse/AppearanceManager.cs +++ b/OpenMetaverse/AppearanceManager.cs @@ -694,8 +694,9 @@ namespace OpenMetaverse } else if (face.TextureID != AgentTextures[i]) { + Logger.DebugLog("*** FACE is "+face.TextureID.ToString()+" Agent Texture is "+AgentTextures[i].ToString()); match = false; - break; + //break; } } @@ -1060,12 +1061,6 @@ namespace OpenMetaverse private void UploadBake(Baker bake) { - if(bake.BakedTexture.AssetID==UUID.Zero) - { - Logger.Log("UploadBake(): Warning possible Linden Default textures in use, skipping this baked upload",Helpers.LogLevel.Warning, Client); - return; - } - lock (PendingUploads) { if(PendingUploads.ContainsKey(bake.BakedTexture.AssetID)) @@ -1074,12 +1069,10 @@ namespace OpenMetaverse return; } - // Add it to a pending uploads list - PendingUploads.Add(bake.BakedTexture.AssetID, BakeTypeToAgentTextureIndex(bake.BakeType)); - } - - // Upload the completed layer data - Assets.RequestUpload(bake.BakedTexture, true); + // Upload the completed layer data and Add it to a pending uploads list + UUID id=Assets.RequestUpload(bake.BakedTexture, true); + PendingUploads.Add(UUID.Combine(id, Client.Self.SecureSessionID), BakeTypeToAgentTextureIndex(bake.BakeType)); + } Logger.DebugLog(String.Format("Bake {0} completed. Uploading asset {1}", bake.BakeType, bake.BakedTexture.AssetID.ToString()), Client); @@ -1140,8 +1133,13 @@ namespace OpenMetaverse lock (AgentTextures) { + //If we are here then the user has tried to wear stuff or we are at login + // In either case the existing uploads of this class are very shortly going to be no good + PendingUploads.Clear(); + foreach (AgentCachedTextureResponsePacket.WearableDataBlock block in response.WearableData) { + UUID hash=new UUID(); // For each missing element we need to bake our own texture Logger.DebugLog("Cache response, index: " + block.TextureIndex + ", ID: " + block.TextureID.ToString(), Client); @@ -1152,8 +1150,11 @@ namespace OpenMetaverse BakeType bakeType = (BakeType)block.TextureIndex; + // Note, still should handle block.TextureID != UUID.Zero && host.Length == 0 + // Not sure what we should do as yet with that. + // Convert the baked index to an AgentTexture index - if (block.TextureID != UUID.Zero && host.Length == 0) + if (block.TextureID != UUID.Zero && host.Length != 0) { TextureIndex index = BakeTypeToAgentTextureIndex(bakeType); AgentTextures[(int)index] = block.TextureID; @@ -1226,7 +1227,10 @@ namespace OpenMetaverse else { lock (PendingBakes) - PendingBakes.Add(bakeType, new Baker(Client, bakeType, imageCount, paramValues)); + { + Baker bake=new Baker(Client, bakeType, imageCount,paramValues); + PendingBakes.Add(bakeType,bake); + } } } else if (!PendingBakes.ContainsKey(bakeType)) diff --git a/OpenMetaverse/AssetManager.cs b/OpenMetaverse/AssetManager.cs index b000040c..c46b7f5f 100644 --- a/OpenMetaverse/AssetManager.cs +++ b/OpenMetaverse/AssetManager.cs @@ -848,6 +848,8 @@ namespace OpenMetaverse String.Format("Beginning asset upload [Single Packet], ID: {0}, AssetID: {1}, Size: {2}", upload.ID.ToString(), upload.AssetID.ToString(), upload.Size), Helpers.LogLevel.Info, Client); + Transfers[upload.ID]=upload; + // The whole asset will fit in this packet, makes things easy request.AssetBlock.AssetData = data; upload.Transferred = data.Length;