From f4c165afe7003ad6276ad7d015fd1c9164a84328 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 6 Mar 2010 08:21:54 -0800 Subject: Bug fix: store correct position information upon logout. Fixes mantis #4608 --- .../Presence/PresenceDetector.cs | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs') 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 public void OnNewClient(IClientAPI client) { - client.OnLogout += OnLogout; + client.OnConnectionClosed += OnConnectionClose; } - public void OnLogout(IClientAPI client) + public void OnConnectionClose(IClientAPI client) { - client.OnLogout -= OnLogout; - - ScenePresence sp = null; - Vector3 position = new Vector3(128, 128, 0); - Vector3 lookat = new Vector3(0, 1, 0); - - if (m_aScene.TryGetAvatar(client.AgentId, out sp)) + if (client.IsLoggingOut) { - position = sp.AbsolutePosition; - lookat = sp.Lookat; + object sp = null; + Vector3 position = new Vector3(128, 128, 0); + Vector3 lookat = new Vector3(0, 1, 0); + + if (client.Scene.TryGetAvatar(client.AgentId, out sp)) + { + if (sp is ScenePresence) + { + position = ((ScenePresence)sp).AbsolutePosition; + lookat = ((ScenePresence)sp).Lookat; + } + } + + m_PresenceService.LogoutAgent(client.SessionId, position, lookat); } - m_PresenceService.LogoutAgent(client.SessionId, position, lookat); } } -- cgit v1.1