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.
This commit is contained in:
Justin Clark-Casey (justincc)
2012-06-12 02:43:33 +01:00
parent b099f26376
commit 1b1f0a2d77
6 changed files with 43 additions and 70 deletions

View File

@@ -79,27 +79,13 @@ namespace OpenSim.Services.Connectors.SimianGrid
public void OnConnectionClose(IClientAPI client)
{
if (client.IsLoggingOut)
{
object sp = null;
Vector3 position = new Vector3(128, 128, 0);
Vector3 lookat = new Vector3(0, 1, 0);
if (client.SceneAgent.IsChildAgent)
return;
if (client.Scene.TryGetScenePresence(client.AgentId, out sp))
{
if (sp is ScenePresence)
{
if (((ScenePresence)sp).IsChildAgent)
return;
position = ((ScenePresence)sp).AbsolutePosition;
lookat = ((ScenePresence)sp).Lookat;
}
}
// m_log.DebugFormat("[SIMIAN ACTIVITY DETECTOR]: Detected client logout {0} in {1}", client.AgentId, client.Scene.RegionInfo.RegionName);
m_GridUserService.LoggedOut(client.AgentId.ToString(), client.SessionId, client.Scene.RegionInfo.RegionID, position, lookat);
}
// m_log.DebugFormat("[ACTIVITY DETECTOR]: Detected client logout {0} in {1}", client.AgentId, client.Scene.RegionInfo.RegionName);
m_GridUserService.LoggedOut(
client.AgentId.ToString(), client.SessionId, client.Scene.RegionInfo.RegionID,
client.SceneAgent.AbsolutePosition, client.SceneAgent.Lookat);
}
void OnEnteringNewParcel(ScenePresence sp, int localLandID, UUID regionID)
@@ -111,4 +97,4 @@ namespace OpenSim.Services.Connectors.SimianGrid
});
}
}
}
}