aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules
diff options
context:
space:
mode:
authorDiva Canto2010-03-06 08:21:54 -0800
committerDiva Canto2010-03-06 08:21:54 -0800
commitf4c165afe7003ad6276ad7d015fd1c9164a84328 (patch)
tree33274c973c23edee794964f1104fd60e02d82555 /OpenSim/Region/CoreModules
parentMerge branch 'master' of melanie@opensimulator.org:/var/git/opensim (diff)
downloadopensim-SC-f4c165afe7003ad6276ad7d015fd1c9164a84328.zip
opensim-SC-f4c165afe7003ad6276ad7d015fd1c9164a84328.tar.gz
opensim-SC-f4c165afe7003ad6276ad7d015fd1c9164a84328.tar.bz2
opensim-SC-f4c165afe7003ad6276ad7d015fd1c9164a84328.tar.xz
Bug fix: store correct position information upon logout. Fixes mantis #4608
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs29
1 files changed, 17 insertions, 12 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs
index 891fc14..e98df28 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs
@@ -77,23 +77,28 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
77 77
78 public void OnNewClient(IClientAPI client) 78 public void OnNewClient(IClientAPI client)
79 { 79 {
80 client.OnLogout += OnLogout; 80 client.OnConnectionClosed += OnConnectionClose;
81 } 81 }
82 82
83 public void OnLogout(IClientAPI client) 83 public void OnConnectionClose(IClientAPI client)
84 { 84 {
85 client.OnLogout -= OnLogout; 85 if (client.IsLoggingOut)
86
87 ScenePresence sp = null;
88 Vector3 position = new Vector3(128, 128, 0);
89 Vector3 lookat = new Vector3(0, 1, 0);
90
91 if (m_aScene.TryGetAvatar(client.AgentId, out sp))
92 { 86 {
93 position = sp.AbsolutePosition; 87 object sp = null;
94 lookat = sp.Lookat; 88 Vector3 position = new Vector3(128, 128, 0);
89 Vector3 lookat = new Vector3(0, 1, 0);
90
91 if (client.Scene.TryGetAvatar(client.AgentId, out sp))
92 {
93 if (sp is ScenePresence)
94 {
95 position = ((ScenePresence)sp).AbsolutePosition;
96 lookat = ((ScenePresence)sp).Lookat;
97 }
98 }
99
100 m_PresenceService.LogoutAgent(client.SessionId, position, lookat);
95 } 101 }
96 m_PresenceService.LogoutAgent(client.SessionId, position, lookat);
97 102
98 } 103 }
99 } 104 }