* Applying dalien's patches from bug#177 and #179

This commit is contained in:
Adam Frisby
2007-07-11 02:51:51 +00:00
parent f0ecc1de4c
commit 561b87b303
11 changed files with 106 additions and 42 deletions

View File

@@ -546,6 +546,28 @@ namespace OpenSim.Region.Environment.Scenes
{
eventManager.TriggerOnRemovePresence(agentID);
ScenePresence avatar = this.RequestAvatar(agentID);
m_clientManager.ForEachClient(
delegate(IClientAPI client)
{
client.SendKillObject(avatar.RegionHandle, avatar.LocalId);
});
lock (Avatars) {
if (Avatars.ContainsKey(agentID)) {
Avatars.Remove(agentID);
}
}
lock (Entities) {
if (Entities.ContainsKey(agentID)) {
Entities.Remove(agentID);
}
}
// TODO: Add the removal from physics ?
return;
}
#endregion

View File

@@ -91,6 +91,12 @@ namespace OpenSim.Region.Environment.Scenes
return _physActor;
}
}
public ulong RegionHandle
{
get { return m_regionHandle; }
}
#endregion
#region Constructor(s)
@@ -390,6 +396,16 @@ namespace OpenSim.Region.Environment.Scenes
remoteAvatar.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos, DefaultTexture);
}
public void SendFullUpdateToALLClients()
{
List<ScenePresence> avatars = this.m_world.RequestAvatarList();
foreach (ScenePresence avatar in this.m_world.RequestAvatarList())
{
this.SendFullUpdateToOtherClient(avatar);
avatar.SendFullUpdateToOtherClient(this);
}
}
/// <summary>
///
/// </summary>
@@ -410,6 +426,7 @@ namespace OpenSim.Region.Environment.Scenes
public void SendOurAppearance(IClientAPI OurClient)
{
this.ControllingClient.SendWearables(this.Wearables);
this.SendFullUpdateToALLClients();
this.m_world.SendAllSceneObjectsToClient(this.ControllingClient);
}
@@ -429,13 +446,13 @@ namespace OpenSim.Region.Environment.Scenes
/// <param name="seq"></param>
public void SendAnimPack(LLUUID animID, int seq)
{
this.current_anim = animID;
this.anim_seq = anim_seq;
List<ScenePresence> avatars = this.m_world.RequestAvatarList();
for (int i = 0; i < avatars.Count; i++)
{
avatars[i].ControllingClient.SendAnimation(animID, seq, this.ControllingClient.AgentId);
}
this.current_anim = animID;
this.anim_seq = seq;
List<ScenePresence> avatars = this.m_world.RequestAvatarList();
for (int i = 0; i < avatars.Count; i++)
{
avatars[i].ControllingClient.SendAnimation(animID, seq, this.ControllingClient.AgentId);
}
}
/// <summary>