diff options
author | Justin Clark-Casey (justincc) | 2012-06-12 02:43:33 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-06-12 02:43:33 +0100 |
commit | 1b1f0a2d77fb4d2ac572f16c71a7560860c8c040 (patch) | |
tree | 2e18738453d51b8a551ba5f9ba7a0cada4cff62c /OpenSim/Services | |
parent | Set IClientAPI.IsActive = false early on client removal due to ack timeout ra... (diff) | |
download | opensim-SC_OLD-1b1f0a2d77fb4d2ac572f16c71a7560860c8c040.zip opensim-SC_OLD-1b1f0a2d77fb4d2ac572f16c71a7560860c8c040.tar.gz opensim-SC_OLD-1b1f0a2d77fb4d2ac572f16c71a7560860c8c040.tar.bz2 opensim-SC_OLD-1b1f0a2d77fb4d2ac572f16c71a7560860c8c040.tar.xz |
OnConnectionClosed listeners, retrieve data from IClientAPI.SceneAgent rather than scanning all scene for the presence with the right id
Stop checking IsLoggingOut on these listeners, if called with a root agent then we always want to perform these actions.
This covers cases where the client is closed due to manual kick, simulator shutdown, etc.
Diffstat (limited to 'OpenSim/Services')
-rw-r--r-- | OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs index 2267325..95e4bab 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianActivityDetector.cs | |||
@@ -79,27 +79,13 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
79 | 79 | ||
80 | public void OnConnectionClose(IClientAPI client) | 80 | public void OnConnectionClose(IClientAPI client) |
81 | { | 81 | { |
82 | if (client.IsLoggingOut) | 82 | if (client.SceneAgent.IsChildAgent) |
83 | { | 83 | return; |
84 | object sp = null; | ||
85 | Vector3 position = new Vector3(128, 128, 0); | ||
86 | Vector3 lookat = new Vector3(0, 1, 0); | ||
87 | |||
88 | if (client.Scene.TryGetScenePresence(client.AgentId, out sp)) | ||
89 | { | ||
90 | if (sp is ScenePresence) | ||
91 | { | ||
92 | if (((ScenePresence)sp).IsChildAgent) | ||
93 | return; | ||
94 | |||
95 | position = ((ScenePresence)sp).AbsolutePosition; | ||
96 | lookat = ((ScenePresence)sp).Lookat; | ||
97 | } | ||
98 | } | ||
99 | 84 | ||
100 | // m_log.DebugFormat("[SIMIAN ACTIVITY DETECTOR]: Detected client logout {0} in {1}", client.AgentId, client.Scene.RegionInfo.RegionName); | 85 | // m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected client logout {0} in {1}", client.AgentId, client.Scene.RegionInfo.RegionName); |
101 | m_GridUserService.LoggedOut(client.AgentId.ToString(), client.SessionId, client.Scene.RegionInfo.RegionID, position, lookat); | 86 | m_GridUserService.LoggedOut( |
102 | } | 87 | client.AgentId.ToString(), client.SessionId, client.Scene.RegionInfo.RegionID, |
88 | client.SceneAgent.AbsolutePosition, client.SceneAgent.Lookat); | ||
103 | } | 89 | } |
104 | 90 | ||
105 | void OnEnteringNewParcel(ScenePresence sp, int localLandID, UUID regionID) | 91 | void OnEnteringNewParcel(ScenePresence sp, int localLandID, UUID regionID) |
@@ -111,4 +97,4 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
111 | }); | 97 | }); |
112 | } | 98 | } |
113 | } | 99 | } |
114 | } | 100 | } \ No newline at end of file |