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.
---
OpenSim/Services/Interfaces/IAvatarService.cs | 32 +++++++++++++++++++++------
1 file changed, 25 insertions(+), 7 deletions(-)
(limited to 'OpenSim/Services/Interfaces/IAvatarService.cs')
diff --git a/OpenSim/Services/Interfaces/IAvatarService.cs b/OpenSim/Services/Interfaces/IAvatarService.cs
index de3bcf9..93b977b 100644
--- a/OpenSim/Services/Interfaces/IAvatarService.cs
+++ b/OpenSim/Services/Interfaces/IAvatarService.cs
@@ -42,6 +42,21 @@ namespace OpenSim.Services.Interfaces
///
///
///
+ AvatarAppearance GetAppearance(UUID userID);
+
+ ///
+ /// Called by everyone who can change the avatar data (so, regions)
+ ///
+ ///
+ ///
+ ///
+ bool SetAppearance(UUID userID, AvatarAppearance appearance);
+
+ ///
+ /// Called by the login service
+ ///
+ ///
+ ///
AvatarData GetAvatar(UUID userID);
///
@@ -217,23 +232,26 @@ namespace OpenSim.Services.Interfaces
foreach (KeyValuePair _kvp in Data)
if (_kvp.Key.StartsWith("_ap_"))
attchs[_kvp.Key] = _kvp.Value;
- Hashtable aaAttachs = new Hashtable();
+
foreach (KeyValuePair _kvp in attchs)
{
string pointStr = _kvp.Key.Substring(4);
int point = 0;
if (!Int32.TryParse(pointStr, out point))
continue;
- Hashtable tmp = new Hashtable();
+
UUID uuid = UUID.Zero;
UUID.TryParse(_kvp.Value, out uuid);
- tmp["item"] = uuid;
- tmp["asset"] = UUID.Zero.ToString();
- aaAttachs[point] = tmp;
+
+ appearance.SetAttachment(point,uuid,UUID.Zero);
}
- appearance.SetAttachments(aaAttachs);
}
- catch { }
+ catch
+ {
+ // We really should report something here, returning null
+ // will at least break the wrapper
+ return null;
+ }
return appearance;
}
--
cgit v1.1