From e3d5e0074c473d8cf450f320cde534ebb356bae2 Mon Sep 17 00:00:00 2001 From: Jim Radford Date: Fri, 10 Jul 2009 07:29:35 +0000 Subject: [PATCH] LIBOMV-625 Implementes UploadBakedTexture Message decoder/encoder * Defaults Texture cache to enabled by Default. * Updates Known Capabilities to include recently added capabilities git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2958 52acb1d6-8a22-11de-b505-999d5b087335 --- OpenMetaverse/Caps.cs | 1 - OpenMetaverse/Messages/LindenMessages.cs | 109 +++++++++++++++++- OpenMetaverse/Messages/MessageEventDecoder.cs | 30 +---- OpenMetaverse/Settings.cs | 2 +- 4 files changed, 109 insertions(+), 33 deletions(-) diff --git a/OpenMetaverse/Caps.cs b/OpenMetaverse/Caps.cs index 88d6b30e..e4c7c6b8 100644 --- a/OpenMetaverse/Caps.cs +++ b/OpenMetaverse/Caps.cs @@ -169,7 +169,6 @@ namespace OpenMetaverse req.Add("ViewerStartAuction"); req.Add("ViewerStats"); - _SeedRequest = new CapsClient(new Uri(_SeedCapsURI)); _SeedRequest.OnComplete += new CapsClient.CompleteCallback(SeedRequestCompleteHandler); _SeedRequest.BeginGetResponse(req, OSDFormat.Xml, Simulator.Client.Settings.CAPS_TIMEOUT); diff --git a/OpenMetaverse/Messages/LindenMessages.cs b/OpenMetaverse/Messages/LindenMessages.cs index b319879f..56733f88 100644 --- a/OpenMetaverse/Messages/LindenMessages.cs +++ b/OpenMetaverse/Messages/LindenMessages.cs @@ -1317,6 +1317,109 @@ namespace OpenMetaverse.Messages.Linden } } } + + /// + /// Base class for Baked Texture uploads/result + /// + public abstract class UploadBakedTextureBlock + { + /// + /// Serialize the object + /// + /// An containing the objects data + public abstract OSDMap Serialize(); + + /// + /// Deserialize the message + /// + /// An containing the data + public abstract void Deserialize(OSDMap map); + } + + /// + /// Request a capability to upload baked textures to + /// + public class UploadBakedTextureRequestUpload : UploadBakedTextureBlock + { + /// The request state (Always "upload") + public string State = "upload"; + /// The Capability URL sent by the simulator to upload the baked texture to + public string Url; + + public override OSDMap Serialize() + { + OSDMap map = new OSDMap(2); + map["state"] = OSD.FromString(State); + map["uploader"] = OSD.FromString(Url); + + return map; + } + + public override void Deserialize(OSDMap map) + { + Url = map["uploader"].AsString(); + } + } + + /// + /// Response from the simulator to notify the viewer the upload is completed, and + /// the UUID of the baked texture asset + /// + public class UploadBakedTextureRequestComplete : UploadBakedTextureBlock + { + /// The request state (Always "complete") + public string State = "complete"; + /// The uploaded texture asset ID + public UUID AssetID; + + public override OSDMap Serialize() + { + OSDMap map = new OSDMap(2); + map["state"] = OSD.FromString(State); + map["new_asset"] = OSD.FromUUID(AssetID); + + return map; + } + + public override void Deserialize(OSDMap map) + { + AssetID = map["new_asset"].AsUUID(); + } + } + + /// + /// Request a capability for uploading baked textures + /// + public class UploadBakedTextureMessage : IMessage + { + /// + public UploadBakedTextureBlock Request; + + /// + /// Serialize the object + /// + /// An containing the objects data + public OSDMap Serialize() + { + return Request.Serialize(); + } + + /// + /// Deserialize the message + /// + /// An containing the data + public void Deserialize(OSDMap map) + { + if (map.ContainsKey("state") && map["state"].Equals("upload")) + Request = new UploadBakedTextureRequestUpload(); + else if (map.ContainsKey("state") && map["state"].Equals("complete")) + Request = new UploadBakedTextureRequestComplete(); + else + Logger.Log("Unable to deserialize UploadBakedTexture: No message handler exists for state " + map["state"].AsString(), Helpers.LogLevel.Warning); + + Request.Deserialize(map); + } + } #endregion #region Voice Messages @@ -1425,7 +1528,9 @@ namespace OpenMetaverse.Messages.Linden #endregion #region Script/Notecards Messages - // upload a script to a tasks inventory + /// + /// + /// public class UploadScriptTaskMessage : IMessage { public string State; // "upload" @@ -1808,7 +1913,7 @@ namespace OpenMetaverse.Messages.Linden /// An containing the data public void Deserialize(OSDMap map) { - + throw new NotImplementedException(); } } diff --git a/OpenMetaverse/Messages/MessageEventDecoder.cs b/OpenMetaverse/Messages/MessageEventDecoder.cs index f41f87d6..850c7166 100644 --- a/OpenMetaverse/Messages/MessageEventDecoder.cs +++ b/OpenMetaverse/Messages/MessageEventDecoder.cs @@ -82,36 +82,8 @@ namespace OpenMetaverse.Messages case "ScriptRunningReply": message = new ScriptRunningReplyMessage(); break; case "SearchStatRequest": message = new SearchStatRequestMessage(); break; case "AgentDropGroup": message = new AgentDropGroupMessage(); break; - /* - * { - 'body': - { - 'AgentData': - [ - { - 'AgentID':u8ec835d1-b61d-4563-86da-c91e174f0f2e - , - 'GroupID':u04f595b0-cdc8-97f0-e710-9564824c03b2 - } - ] - } - , - 'message':'AgentDropGroup' - }*/ case "ForceCloseChatterBoxSession": message = new ForceCloseChatterBoxSessionMessage(); break; - /* - * No Decoder for ForceCloseChatterBoxSession - - { - 'body': - { - 'reason':'removed' - , - 'session_id':u04f595b0-cdc8-97f0-e710-9564824c03b2 - } - , - 'message':'ForceCloseChatterBoxSession' - } */ + case "UploadBakedTexture": message = new UploadBakedTextureMessage(); break; //case "ProductInfoRequest": message = new ProductInfoRequestMessage(); break; // Capabilities TODO: diff --git a/OpenMetaverse/Settings.cs b/OpenMetaverse/Settings.cs index 141d3972..80a45146 100644 --- a/OpenMetaverse/Settings.cs +++ b/OpenMetaverse/Settings.cs @@ -252,7 +252,7 @@ namespace OpenMetaverse /// If true, images downloaded from the server will be cached /// in a local directory /// - public bool USE_TEXTURE_CACHE = false; + public bool USE_TEXTURE_CACHE = true; /// Path to store cached texture data public string TEXTURE_CACHE_DIR = RESOURCE_DIR + "/cache";