diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 22 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 31 |
2 files changed, 46 insertions, 7 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index cd81384..d1f6038 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -546,6 +546,28 @@ namespace OpenSim.Region.Environment.Scenes | |||
546 | { | 546 | { |
547 | eventManager.TriggerOnRemovePresence(agentID); | 547 | eventManager.TriggerOnRemovePresence(agentID); |
548 | 548 | ||
549 | ScenePresence avatar = this.RequestAvatar(agentID); | ||
550 | |||
551 | m_clientManager.ForEachClient( | ||
552 | delegate(IClientAPI client) | ||
553 | { | ||
554 | client.SendKillObject(avatar.RegionHandle, avatar.LocalId); | ||
555 | }); | ||
556 | |||
557 | lock (Avatars) { | ||
558 | if (Avatars.ContainsKey(agentID)) { | ||
559 | Avatars.Remove(agentID); | ||
560 | } | ||
561 | } | ||
562 | lock (Entities) { | ||
563 | if (Entities.ContainsKey(agentID)) { | ||
564 | Entities.Remove(agentID); | ||
565 | } | ||
566 | } | ||
567 | // TODO: Add the removal from physics ? | ||
568 | |||
569 | |||
570 | |||
549 | return; | 571 | return; |
550 | } | 572 | } |
551 | #endregion | 573 | #endregion |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 7330bc5..e65ab7c 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -91,6 +91,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
91 | return _physActor; | 91 | return _physActor; |
92 | } | 92 | } |
93 | } | 93 | } |
94 | |||
95 | public ulong RegionHandle | ||
96 | { | ||
97 | get { return m_regionHandle; } | ||
98 | } | ||
99 | |||
94 | #endregion | 100 | #endregion |
95 | 101 | ||
96 | #region Constructor(s) | 102 | #region Constructor(s) |
@@ -390,6 +396,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
390 | remoteAvatar.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos, DefaultTexture); | 396 | remoteAvatar.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, this.firstname, this.lastname, this.uuid, this.LocalId, this.Pos, DefaultTexture); |
391 | } | 397 | } |
392 | 398 | ||
399 | public void SendFullUpdateToALLClients() | ||
400 | { | ||
401 | List<ScenePresence> avatars = this.m_world.RequestAvatarList(); | ||
402 | foreach (ScenePresence avatar in this.m_world.RequestAvatarList()) | ||
403 | { | ||
404 | this.SendFullUpdateToOtherClient(avatar); | ||
405 | avatar.SendFullUpdateToOtherClient(this); | ||
406 | } | ||
407 | } | ||
408 | |||
393 | /// <summary> | 409 | /// <summary> |
394 | /// | 410 | /// |
395 | /// </summary> | 411 | /// </summary> |
@@ -410,6 +426,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
410 | public void SendOurAppearance(IClientAPI OurClient) | 426 | public void SendOurAppearance(IClientAPI OurClient) |
411 | { | 427 | { |
412 | this.ControllingClient.SendWearables(this.Wearables); | 428 | this.ControllingClient.SendWearables(this.Wearables); |
429 | this.SendFullUpdateToALLClients(); | ||
413 | this.m_world.SendAllSceneObjectsToClient(this.ControllingClient); | 430 | this.m_world.SendAllSceneObjectsToClient(this.ControllingClient); |
414 | } | 431 | } |
415 | 432 | ||
@@ -429,13 +446,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
429 | /// <param name="seq"></param> | 446 | /// <param name="seq"></param> |
430 | public void SendAnimPack(LLUUID animID, int seq) | 447 | public void SendAnimPack(LLUUID animID, int seq) |
431 | { | 448 | { |
432 | this.current_anim = animID; | 449 | this.current_anim = animID; |
433 | this.anim_seq = anim_seq; | 450 | this.anim_seq = seq; |
434 | List<ScenePresence> avatars = this.m_world.RequestAvatarList(); | 451 | List<ScenePresence> avatars = this.m_world.RequestAvatarList(); |
435 | for (int i = 0; i < avatars.Count; i++) | 452 | for (int i = 0; i < avatars.Count; i++) |
436 | { | 453 | { |
437 | avatars[i].ControllingClient.SendAnimation(animID, seq, this.ControllingClient.AgentId); | 454 | avatars[i].ControllingClient.SendAnimation(animID, seq, this.ControllingClient.AgentId); |
438 | } | 455 | } |
439 | } | 456 | } |
440 | 457 | ||
441 | /// <summary> | 458 | /// <summary> |