mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 02:36:00 +08:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user