From 82cfa01f084e4b089d207dc2636d6abd4795a970 Mon Sep 17 00:00:00 2001 From: Michael Cortez Date: Thu, 15 Feb 2007 21:39:59 +0000 Subject: [PATCH] Appearance, fixed a timeout bug, and a bug introduced by incorrectly back porting the wearable asset decoder (skin/clothing layer # was being lost) git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@983 52acb1d6-8a22-11de-b505-999d5b087335 --- libsecondlife-cs/AssetSystem/AppearanceManager.cs | 12 ++++++++---- libsecondlife-cs/AssetSystem/AssetManager.cs | 2 +- libsecondlife-cs/AssetSystem/AssetRequest.cs | 4 ++-- libsecondlife-cs/AssetSystem/AssetWearable.cs | 14 +++++++------- libsecondlife-cs/InventorySystem/InventoryItem.cs | 3 --- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/libsecondlife-cs/AssetSystem/AppearanceManager.cs b/libsecondlife-cs/AssetSystem/AppearanceManager.cs index d0dca654..65548edc 100644 --- a/libsecondlife-cs/AssetSystem/AppearanceManager.cs +++ b/libsecondlife-cs/AssetSystem/AppearanceManager.cs @@ -89,7 +89,7 @@ namespace libsecondlife.AssetSystem // Update with specified wearables foreach (InventoryWearable iw in wearables) { - byte type = ((AssetWearable)iw.Asset).TypeFromAsset; + byte type = (byte)((AssetWearable)iw.Asset).AppearanceLayer; AgentWearablesData[type].ItemID = iw.ItemID; AgentWearablesData[type].AssetID = iw.AssetID; } @@ -148,9 +148,13 @@ namespace libsecondlife.AssetSystem try { InventoryWearable iw = (InventoryWearable)ib; - byte type = ((AssetWearable)iw.Asset).TypeFromAsset; - AgentWearablesData[type].ItemID = iw.ItemID; - AgentWearablesData[type].AssetID = iw.AssetID; + Client.Log("Retrieving asset for " + iw.Name + "("+iw.AssetID+")", Helpers.LogLevel.Info); + AssetWearable.AppearanceLayerType AppearanceLayer = ((AssetWearable)iw.Asset).AppearanceLayer; + + Client.Log("Adding skin/clothing layer for " + AppearanceLayer, Helpers.LogLevel.Info); + AgentWearablesData[(byte)AppearanceLayer].ItemID = iw.ItemID; + AgentWearablesData[(byte)AppearanceLayer].AssetID = iw.AssetID; + } catch (Exception e) { diff --git a/libsecondlife-cs/AssetSystem/AssetManager.cs b/libsecondlife-cs/AssetSystem/AssetManager.cs index 4def1434..b1b0a2f1 100644 --- a/libsecondlife-cs/AssetSystem/AssetManager.cs +++ b/libsecondlife-cs/AssetSystem/AssetManager.cs @@ -83,7 +83,7 @@ namespace libsecondlife.AssetSystem /// /// Time to wait for next packet, during an asset download. /// - public readonly static int DefaultTimeout = 3000; + public readonly static int DefaultTimeout = 10000; /// /// Event singaling an asset transfer request has completed. diff --git a/libsecondlife-cs/AssetSystem/AssetRequest.cs b/libsecondlife-cs/AssetSystem/AssetRequest.cs index 537d300f..b2a1135d 100644 --- a/libsecondlife-cs/AssetSystem/AssetRequest.cs +++ b/libsecondlife-cs/AssetSystem/AssetRequest.cs @@ -123,14 +123,14 @@ namespace libsecondlife.AssetSystem while (!_Completed.WaitOne(900, false)) { - if (SecondsSinceLastPacket > hardTimeout) + if ((hardTimeout != -1) && (SecondsSinceLastPacket > hardTimeout)) { _StatusMsg += "Timeout Failure - Hard timeout reached (" + SecondsSinceLastPacket + " > " + hardTimeout + ")"; return RequestStatus.Failure; } else { - if (SecondsSinceLastPacket > softTimeout) + if ((softTimeout != -1) && (SecondsSinceLastPacket > softTimeout)) { _StatusMsg += "Timeout Failure - Soft Timeout ( " + SecondsSinceLastPacket + " > " + softTimeout + ")"; return RequestStatus.Failure; diff --git a/libsecondlife-cs/AssetSystem/AssetWearable.cs b/libsecondlife-cs/AssetSystem/AssetWearable.cs index b529cabb..3bcd716e 100644 --- a/libsecondlife-cs/AssetSystem/AssetWearable.cs +++ b/libsecondlife-cs/AssetSystem/AssetWearable.cs @@ -57,13 +57,13 @@ namespace libsecondlife.AssetSystem } } - private byte _TypeFromAsset = 0; - public byte TypeFromAsset + private AppearanceLayerType _AppearanceLayer = 0; + public AppearanceLayerType AppearanceLayer { - get { return _TypeFromAsset; } + get { return _AppearanceLayer; } set { - _TypeFromAsset = value; + _AppearanceLayer = value; UpdateAssetData(); } } @@ -245,7 +245,7 @@ namespace libsecondlife.AssetSystem private int _SalePrice = 0; - private enum _WearableType : byte + public enum AppearanceLayerType : byte { /// Shape = 0, @@ -405,7 +405,7 @@ namespace libsecondlife.AssetSystem } else if (line.StartsWith("type ")) { - Type = (sbyte)(_WearableType)Int32.Parse(line.Substring(5)); + AppearanceLayer = (AppearanceLayerType)Int32.Parse(line.Substring(5)); break; } } @@ -482,7 +482,7 @@ namespace libsecondlife.AssetSystem data += "\n\t\tsale_type\t" + this._Sale_Type; data += "\n\t\tsale_price\t" + this._Sale_Price; data += "\n\t}"; - data += "\ntype " + this._TypeFromAsset; + data += "\ntype " + this._AppearanceLayer; data += "\nparameters " + this._Parameters.Count; foreach (KeyValuePair param in this._Parameters) { diff --git a/libsecondlife-cs/InventorySystem/InventoryItem.cs b/libsecondlife-cs/InventorySystem/InventoryItem.cs index 81d8ea63..379464b2 100644 --- a/libsecondlife-cs/InventorySystem/InventoryItem.cs +++ b/libsecondlife-cs/InventorySystem/InventoryItem.cs @@ -138,11 +138,9 @@ namespace libsecondlife.InventorySystem switch (Type) { case (sbyte)Asset.AssetType.Clothing: - Console.WriteLine(">> Clothing"); _Asset = new AssetWearable_Clothing(AssetID, request.GetAssetData()); break; case (sbyte)Asset.AssetType.Bodypart: - Console.WriteLine(">> Bodypart"); _Asset = new AssetWearable_Body(AssetID, request.GetAssetData()); break; case (sbyte)Asset.AssetType.LSLText: @@ -155,7 +153,6 @@ namespace libsecondlife.InventorySystem _Asset = new AssetImage(AssetID, request.GetAssetData()); break; default: - Console.WriteLine(">> Bodypart"); _Asset = new Asset(AssetID, Type, request.GetAssetData()); break; }