From b1c8d0588829dfa76f89460eeb8406d9c4fc479f Mon Sep 17 00:00:00 2001
From: Master ScienceSim
Date: Wed, 20 Oct 2010 16:17:54 -0700
Subject: Major refactoring of appearance handling.
AvatarService -- add two new methods, GetAppearance and SetAppearance
to get around the lossy encoding in AvatarData. Preseve the old
functions to avoid changing the behavior for ROBUST services.
AvatarAppearance -- major refactor, moved the various encoding
methods used by AgentCircuitData, ClientAgentUpdate and
ScenePresence into one location. Changed initialization.
AvatarAttachments -- added a class specifically to handle
attachments in preparation for additional functionality
that will be needed for viewer 2.
AvatarFactory -- removed a number of unused or methods duplicated
in other locations. Moved in all appearance event handling from
ScenePresence. Required a change to IClientAPI that propogated
throughout all the IClientAPI implementations.
---
.../SimianGrid/SimianAvatarServiceConnector.cs | 82 +++++++++++++++++++++-
1 file changed, 81 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Services/Connectors/SimianGrid')
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
index 4d0d53e..ea9b4b4 100644
--- a/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
+++ b/OpenSim/Services/Connectors/SimianGrid/SimianAvatarServiceConnector.cs
@@ -28,6 +28,9 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
+// DEBUG ON
+using System.Diagnostics;
+// DEBUG OFF
using System.Reflection;
using log4net;
using Mono.Addins;
@@ -106,6 +109,80 @@ namespace OpenSim.Services.Connectors.SimianGrid
#region IAvatarService
+ //
+ // Retrieves the LLPackedAppearance field from user data and unpacks
+ // it into an AvatarAppearance structure
+ //
+ //
+ public AvatarAppearance GetAppearance(UUID userID)
+ {
+ NameValueCollection requestArgs = new NameValueCollection
+ {
+ { "RequestMethod", "GetUser" },
+ { "UserID", userID.ToString() }
+ };
+
+ OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs);
+ if (response["Success"].AsBoolean())
+ {
+ OSDMap map = null;
+ try { map = OSDParser.DeserializeJson(response["LLPackedAppearance"].AsString()) as OSDMap; }
+ catch { }
+
+ if (map != null)
+ {
+ AvatarAppearance appearance = new AvatarAppearance(map);
+// DEBUG ON
+ m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR] retrieved appearance for {0}:\n{1}",userID,appearance.ToString());
+// DEBUG OFF
+ return appearance;
+ }
+
+ m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to decode appearance for {0}",userID);
+ return null;
+ }
+
+ m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to get appearance for {0}: {1}",
+ userID,response["Message"].AsString());
+ return null;
+ }
+
+ //
+ //
+ //
+ public bool SetAppearance(UUID userID, AvatarAppearance appearance)
+ {
+ OSDMap map = appearance.Pack();
+ if (map == null)
+ {
+ m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to encode appearance for {0}",userID);
+ return false;
+ }
+
+// DEBUG ON
+ m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR] save appearance for {0}",userID);
+// DEBUG OFF
+
+ NameValueCollection requestArgs = new NameValueCollection
+ {
+ { "RequestMethod", "AddUserData" },
+ { "UserID", userID.ToString() },
+ { "LLPackedAppearance", OSDParser.SerializeJsonString(map) }
+ };
+
+ OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs);
+ bool success = response["Success"].AsBoolean();
+
+ if (! success)
+ m_log.WarnFormat("[SIMIAN AVATAR CONNECTOR]: Failed to save appearance for {0}: {1}",
+ userID,response["Message"].AsString());
+
+ return success;
+ }
+
+ //
+ //
+ //
public AvatarData GetAvatar(UUID userID)
{
NameValueCollection requestArgs = new NameValueCollection
@@ -154,7 +231,7 @@ namespace OpenSim.Services.Connectors.SimianGrid
foreach (KeyValuePair kvp in map)
avatar.Data[kvp.Key] = kvp.Value.AsString();
}
-
+
return avatar;
}
else
@@ -173,6 +250,9 @@ namespace OpenSim.Services.Connectors.SimianGrid
return null;
}
+ //
+ //
+ //
public bool SetAvatar(UUID userID, AvatarData avatar)
{
m_log.Debug("[SIMIAN AVATAR CONNECTOR]: SetAvatar called for " + userID);
--
cgit v1.1