aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs')
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs18
1 files changed, 17 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs
index 3ca5560..891fc14 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs
@@ -42,6 +42,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
42 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 42 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
43 43
44 private IPresenceService m_PresenceService; 44 private IPresenceService m_PresenceService;
45 private Scene m_aScene;
45 46
46 public PresenceDetector(IPresenceService presenceservice) 47 public PresenceDetector(IPresenceService presenceservice)
47 { 48 {
@@ -54,6 +55,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
54 scene.EventManager.OnNewClient += OnNewClient; 55 scene.EventManager.OnNewClient += OnNewClient;
55 56
56 m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID); 57 m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
58
59 if (m_aScene == null)
60 m_aScene = scene;
57 } 61 }
58 62
59 public void RemoveRegion(Scene scene) 63 public void RemoveRegion(Scene scene)
@@ -62,6 +66,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
62 scene.EventManager.OnNewClient -= OnNewClient; 66 scene.EventManager.OnNewClient -= OnNewClient;
63 67
64 m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID); 68 m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
69
65 } 70 }
66 71
67 public void OnMakeRootAgent(ScenePresence sp) 72 public void OnMakeRootAgent(ScenePresence sp)
@@ -78,7 +83,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
78 public void OnLogout(IClientAPI client) 83 public void OnLogout(IClientAPI client)
79 { 84 {
80 client.OnLogout -= OnLogout; 85 client.OnLogout -= OnLogout;
81 m_PresenceService.LogoutAgent(client.SessionId); 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 {
93 position = sp.AbsolutePosition;
94 lookat = sp.Lookat;
95 }
96 m_PresenceService.LogoutAgent(client.SessionId, position, lookat);
97
82 } 98 }
83 } 99 }
84} 100}