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.
This commit is contained in:
Master ScienceSim
2010-10-20 16:17:54 -07:00
parent b2478b41c8
commit b1c8d05888
28 changed files with 1056 additions and 880 deletions

View File

@@ -37,6 +37,21 @@ namespace OpenSim.Services.Interfaces
{
public interface IAvatarService
{
/// <summary>
/// Called by the login service
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
AvatarAppearance GetAppearance(UUID userID);
/// <summary>
/// Called by everyone who can change the avatar data (so, regions)
/// </summary>
/// <param name="userID"></param>
/// <param name="appearance"></param>
/// <returns></returns>
bool SetAppearance(UUID userID, AvatarAppearance appearance);
/// <summary>
/// Called by the login service
/// </summary>
@@ -217,23 +232,26 @@ namespace OpenSim.Services.Interfaces
foreach (KeyValuePair<string, string> _kvp in Data)
if (_kvp.Key.StartsWith("_ap_"))
attchs[_kvp.Key] = _kvp.Value;
Hashtable aaAttachs = new Hashtable();
foreach (KeyValuePair<string, string> _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;
}