From 4dd523b45d1e635c66eb4e556764fabe29dbfc58 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 10 Jan 2010 15:34:56 -0800 Subject: * Changed IPresenceService Logout, so that it takes a position and a lookat * CommsManager.AvatarService rerouted --- OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs | 4 +++- OpenSim/Services/Interfaces/IPresenceService.cs | 2 +- OpenSim/Services/LLLoginService/LLLoginService.cs | 6 +++--- OpenSim/Services/PresenceService/PresenceService.cs | 4 +++- 4 files changed, 10 insertions(+), 6 deletions(-) (limited to 'OpenSim/Services') diff --git a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs index 29cfd6e..fac3d1f 100644 --- a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs +++ b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs @@ -132,7 +132,7 @@ namespace OpenSim.Services.Connectors } - public bool LogoutAgent(UUID sessionID) + public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat) { Dictionary sendData = new Dictionary(); //sendData["SCOPEID"] = scopeID.ToString(); @@ -141,6 +141,8 @@ namespace OpenSim.Services.Connectors sendData["METHOD"] = "logout"; sendData["SessionID"] = sessionID.ToString(); + sendData["Position"] = position.ToString(); + sendData["LookAt"] = lookat.ToString(); string reqString = ServerUtils.BuildQueryString(sendData); // m_log.DebugFormat("[PRESENCE CONNECTOR]: queryString = {0}", reqString); diff --git a/OpenSim/Services/Interfaces/IPresenceService.cs b/OpenSim/Services/Interfaces/IPresenceService.cs index a010611..b4c1859 100644 --- a/OpenSim/Services/Interfaces/IPresenceService.cs +++ b/OpenSim/Services/Interfaces/IPresenceService.cs @@ -115,7 +115,7 @@ namespace OpenSim.Services.Interfaces public interface IPresenceService { bool LoginAgent(string userID, UUID sessionID, UUID secureSessionID); - bool LogoutAgent(UUID sessionID); + bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookAt); bool LogoutRegionAgents(UUID regionID); bool ReportAgent(UUID sessionID, UUID regionID, Vector3 position, Vector3 lookAt); diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 2ae552f..47d1b16 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs @@ -163,7 +163,7 @@ namespace OpenSim.Services.LLLoginService GridRegion destination = FindDestination(account, presence, session, startLocation, out where, out position, out lookAt); if (destination == null) { - m_PresenceService.LogoutAgent(session); + m_PresenceService.LogoutAgent(session, presence.Position, presence.LookAt); m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: destination not found"); return LLFailedLoginResponse.GridProblem; } @@ -195,7 +195,7 @@ namespace OpenSim.Services.LLLoginService } if (aCircuit == null) { - m_PresenceService.LogoutAgent(session); + m_PresenceService.LogoutAgent(session, presence.Position, presence.LookAt); m_log.InfoFormat("[LLOGIN SERVICE]: Login failed, reason: {0}", reason); return LLFailedLoginResponse.AuthorizationProblem; } @@ -212,7 +212,7 @@ namespace OpenSim.Services.LLLoginService { m_log.WarnFormat("[LLOGIN SERVICE]: Exception processing login for {0} {1}: {2}", firstName, lastName, e.StackTrace); if (m_PresenceService != null) - m_PresenceService.LogoutAgent(session); + m_PresenceService.LogoutAgent(session, new Vector3(128, 128, 0), new Vector3(0, 1, 0)); return LLFailedLoginResponse.InternalError; } } diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs index 2884199..34a3154 100644 --- a/OpenSim/Services/PresenceService/PresenceService.cs +++ b/OpenSim/Services/PresenceService/PresenceService.cs @@ -87,7 +87,7 @@ namespace OpenSim.Services.PresenceService return true; } - public bool LogoutAgent(UUID sessionID) + public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat) { PresenceData data = m_Database.Get(sessionID); if (data == null) @@ -103,6 +103,8 @@ namespace OpenSim.Services.PresenceService data.Data["Online"] = "false"; data.Data["Logout"] = Util.UnixTimeSinceEpoch().ToString(); + data.Data["Position"] = position.ToString(); + data.Data["LookAt"] = lookat.ToString(); m_Database.Store(data); -- cgit v1.1