diff --git a/OpenMetaverse/Messages/LindenMessages.cs b/OpenMetaverse/Messages/LindenMessages.cs
index c149bc1d..fe745237 100644
--- a/OpenMetaverse/Messages/LindenMessages.cs
+++ b/OpenMetaverse/Messages/LindenMessages.cs
@@ -2205,16 +2205,50 @@ namespace OpenMetaverse.Messages.Linden
#region Grid/Maps
- ///
- /// A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates
- ///
- public class MapLayerMessage : IMessage
+ /// Base class for Map Layers via Capabilities
+ public abstract class MapLayerMessageBase
{
///
public int Flags;
///
- /// A n object containing map location details
+ /// 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);
+ }
+
+ ///
+ /// Sent by an agent to the capabilities server to request map layers
+ ///
+ public class MapLayerRequestVariant : MapLayerMessageBase
+ {
+ public override OSDMap Serialize()
+ {
+ OSDMap map = new OSDMap(1);
+ map["Flags"] = OSD.FromInteger(Flags);
+ return map;
+ }
+
+ public override void Deserialize(OSDMap map)
+ {
+ Flags = map["Flags"].AsInteger();
+ }
+ }
+
+ ///
+ /// A message sent from the simulator to the viewer which contains an array of map images and their grid coordinates
+ ///
+ public class MapLayerReplyVariant : MapLayerMessageBase
+ {
+ ///
+ /// An object containing map location details
///
public class LayerData
{
@@ -2237,7 +2271,7 @@ namespace OpenMetaverse.Messages.Linden
/// Serialize the object
///
/// An containing the objects data
- public OSDMap Serialize()
+ public override OSDMap Serialize()
{
OSDMap map = new OSDMap(2);
OSDMap agentMap = new OSDMap(1);
@@ -2267,7 +2301,7 @@ namespace OpenMetaverse.Messages.Linden
/// Deserialize the message
///
/// An containing the data
- public void Deserialize(OSDMap map)
+ public override void Deserialize(OSDMap map)
{
OSDMap agentMap = (OSDMap)map["AgentData"];
Flags = agentMap["Flags"].AsInteger();
@@ -2292,6 +2326,38 @@ namespace OpenMetaverse.Messages.Linden
}
}
+ public class MapLayerMessage : IMessage
+ {
+ /// Object containing request or response
+ public MapLayerMessageBase 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("LayerData"))
+ Request = new MapLayerReplyVariant();
+ else if (map.ContainsKey("Flags"))
+ Request = new MapLayerRequestVariant();
+ else
+ Logger.Log("Unable to deserialize MapLayerMessage: No message handler exists", Helpers.LogLevel.Warning);
+
+ if (Request != null)
+ Request.Deserialize(map);
+ }
+ }
+
#endregion
#region Session/Communication
diff --git a/OpenMetaverse/Messages/MessageEventDecoder.cs b/OpenMetaverse/Messages/MessageEventDecoder.cs
index 73770d6a..9c868ad3 100644
--- a/OpenMetaverse/Messages/MessageEventDecoder.cs
+++ b/OpenMetaverse/Messages/MessageEventDecoder.cs
@@ -119,7 +119,7 @@ namespace OpenMetaverse.Messages
}
catch (Exception e)
{
- Logger.Log("Exception while tring to Deserialize " + eventName + ":" + e.Message + ": " + e.StackTrace, Helpers.LogLevel.Error);
+ Logger.Log("Exception while tring to Deserialize " + eventName + ":" + e.Message + ": " + e.StackTrace, Helpers.LogLevel.Error);
}
return null;