diff options
author | Diva Canto | 2010-03-06 08:21:54 -0800 |
---|---|---|
committer | Diva Canto | 2010-03-06 08:21:54 -0800 |
commit | f4c165afe7003ad6276ad7d015fd1c9164a84328 (patch) | |
tree | 33274c973c23edee794964f1104fd60e02d82555 /OpenSim/Region/CoreModules | |
parent | Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim (diff) | |
download | opensim-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.cs | 29 |
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 | } |