LIBOMV-686 Implements new event patterns based on the Microsoft Framework Design Guidelines in AvatarManager
* BREAKING CHANGE * this is a major shift in the way events are internally handled. * TODO: need to complete the EventArgs class documentation * Adds new TestClient commands "play" to play animations, and bots to detect other bots. git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3163 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -153,14 +153,40 @@ namespace OpenMetaverse.GUI
|
||||
private void InitializeClient(GridClient client)
|
||||
{
|
||||
_Client = client;
|
||||
_Client.Avatars.OnAvatarAppearance += new AvatarManager.AvatarAppearanceCallback(Avatars_OnAvatarAppearance);
|
||||
_Client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);
|
||||
_Client.Avatars.AvatarAppearance += Avatars_OnAvatarAppearance;
|
||||
_Client.Avatars.UUIDNameReply += new EventHandler<UUIDNameReplyEventArgs>(Avatars_UUIDNameReply);
|
||||
_Client.Grid.CoarseLocationUpdate += Grid_CoarseLocationUpdate;
|
||||
_Client.Network.OnCurrentSimChanged += new NetworkManager.CurrentSimChangedCallback(Network_OnCurrentSimChanged);
|
||||
_Client.Objects.OnNewAvatar += new ObjectManager.NewAvatarCallback(Objects_OnNewAvatar);
|
||||
_Client.Objects.OnObjectUpdated += new ObjectManager.ObjectUpdatedCallback(Objects_OnObjectUpdated);
|
||||
}
|
||||
|
||||
void Avatars_UUIDNameReply(object sender, UUIDNameReplyEventArgs e)
|
||||
{
|
||||
lock (_UntrackedAvatars)
|
||||
{
|
||||
foreach (KeyValuePair<UUID, string> name in e.Names)
|
||||
{
|
||||
TrackedAvatar trackedAvatar;
|
||||
if (_UntrackedAvatars.TryGetValue(name.Key, out trackedAvatar))
|
||||
{
|
||||
trackedAvatar.Name = name.Value;
|
||||
|
||||
if (OnAvatarAdded != null && trackedAvatar.ListViewItem.Text == "(Loading...)")
|
||||
{
|
||||
try { OnAvatarAdded(trackedAvatar); }
|
||||
catch (Exception ex) { Logger.Log(ex.Message, Helpers.LogLevel.Error, Client, ex); }
|
||||
}
|
||||
|
||||
this.BeginInvoke((MethodInvoker)delegate
|
||||
{
|
||||
trackedAvatar.ListViewItem.Text = name.Value;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Grid_CoarseLocationUpdate(object sender, CoarseLocationUpdateEventArgs e)
|
||||
{
|
||||
UpdateCoarseInfo(e.Simulator, e.NewEntries, e.RemovedEntries);
|
||||
@@ -387,50 +413,23 @@ namespace OpenMetaverse.GUI
|
||||
}
|
||||
}
|
||||
|
||||
void Avatars_OnAvatarAppearance(UUID avatarID, bool isTrial, Primitive.TextureEntryFace defaultTexture, Primitive.TextureEntryFace[] faceTextures, List<byte> visualParams)
|
||||
void Avatars_OnAvatarAppearance(object sender, AvatarAppearanceEventArgs e)
|
||||
{
|
||||
if (visualParams.Count > 31)
|
||||
if (e.VisualParams.Count > 31)
|
||||
{
|
||||
lock (_TrackedAvatars)
|
||||
{
|
||||
TrackedAvatar trackedAvatar;
|
||||
if (_TrackedAvatars.TryGetValue(avatarID, out trackedAvatar))
|
||||
if (_TrackedAvatars.TryGetValue(e.AvatarID, out trackedAvatar))
|
||||
{
|
||||
this.BeginInvoke((MethodInvoker)delegate
|
||||
{
|
||||
byte param = visualParams[31];
|
||||
byte param = e.VisualParams[31];
|
||||
if (param > 0)
|
||||
trackedAvatar.ListViewItem.ForeColor = Color.Blue;
|
||||
else
|
||||
trackedAvatar.ListViewItem.ForeColor = Color.Magenta;
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Avatars_OnAvatarNames(Dictionary<UUID, string> names)
|
||||
{
|
||||
lock (_UntrackedAvatars)
|
||||
{
|
||||
foreach (KeyValuePair<UUID, string> name in names)
|
||||
{
|
||||
TrackedAvatar trackedAvatar;
|
||||
if (_UntrackedAvatars.TryGetValue(name.Key, out trackedAvatar))
|
||||
{
|
||||
trackedAvatar.Name = name.Value;
|
||||
|
||||
if (OnAvatarAdded != null && trackedAvatar.ListViewItem.Text == "(Loading...)")
|
||||
{
|
||||
try { OnAvatarAdded(trackedAvatar); }
|
||||
catch (Exception ex) { Logger.Log(ex.Message, Helpers.LogLevel.Error, Client, ex); }
|
||||
}
|
||||
|
||||
this.BeginInvoke((MethodInvoker)delegate
|
||||
{
|
||||
trackedAvatar.ListViewItem.Text = name.Value;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user