* Changed IPresenceService Logout, so that it takes a position and a lookat

* CommsManager.AvatarService rerouted
This commit is contained in:
Diva Canto
2010-01-10 15:34:56 -08:00
parent 6998668bbc
commit 4dd523b45d
18 changed files with 99 additions and 61 deletions

View File

@@ -46,8 +46,6 @@
<RegionModule id="RemoteNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.RemoteNeighbourServicesConnector" />
<RegionModule id="LocalLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.LocalLandServicesConnector" />
<RegionModule id="RemoteLandServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Land.RemoteLandServicesConnector" />
<RegionModule id="LocalInterregionComms" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion.LocalInterregionComms" />
<RegionModule id="RESTInterregionComms" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion.RESTInterregionComms" />
<RegionModule id="LocalGridServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.LocalGridServicesConnector" />
<RegionModule id="RemoteGridServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.RemoteGridServicesConnector" />
<RegionModule id="HGGridConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid.HGGridConnector" />

View File

@@ -781,13 +781,14 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Interregion
ipaddr = Util.GetHostFromDNS(parts[0]);
if (parts.Length == 2)
UInt32.TryParse(parts[1], out port);
return true;
// local authority (standalone), local call
if (m_thisIP.Equals(ipaddr) && (m_aScene.RegionInfo.HttpPort == port))
return ((IAuthentication)m_aScene.CommsManager.UserAdminService).VerifyKey(userID, key);
// remote call
else
return AuthClient.VerifyKey("http://" + authority, userID, key);
//// local authority (standalone), local call
//if (m_thisIP.Equals(ipaddr) && (m_aScene.RegionInfo.HttpPort == port))
// return ((IAuthentication)m_aScene.CommsManager.UserAdminService).VerifyKey(userID, key);
//// remote call
//else
// return AuthClient.VerifyKey("http://" + authority, userID, key);
}

View File

@@ -163,9 +163,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
return false;
}
public bool LogoutAgent(UUID sessionID)
public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat)
{
return m_PresenceService.LogoutAgent(sessionID);
return m_PresenceService.LogoutAgent(sessionID, position, lookat);
}

View File

@@ -42,6 +42,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private IPresenceService m_PresenceService;
private Scene m_aScene;
public PresenceDetector(IPresenceService presenceservice)
{
@@ -54,6 +55,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
scene.EventManager.OnNewClient += OnNewClient;
m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
if (m_aScene == null)
m_aScene = scene;
}
public void RemoveRegion(Scene scene)
@@ -62,6 +66,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
scene.EventManager.OnNewClient -= OnNewClient;
m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID);
}
public void OnMakeRootAgent(ScenePresence sp)
@@ -78,7 +83,18 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
public void OnLogout(IClientAPI client)
{
client.OnLogout -= OnLogout;
m_PresenceService.LogoutAgent(client.SessionId);
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))
{
position = sp.AbsolutePosition;
lookat = sp.Lookat;
}
m_PresenceService.LogoutAgent(client.SessionId, position, lookat);
}
}
}

View File

@@ -127,9 +127,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence
return false;
}
public bool LogoutAgent(UUID sessionID)
public bool LogoutAgent(UUID sessionID, Vector3 position, Vector3 lookat)
{
return m_RemoteConnector.LogoutAgent(sessionID);
return m_RemoteConnector.LogoutAgent(sessionID, position, lookat);
}

View File

@@ -91,7 +91,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence.Tests
result = m_LocalConnector.GetAgent(session1);
Assert.That(result.RegionID, Is.EqualTo(region2), "Agent is not in the right region (region2)");
r = m_LocalConnector.LogoutAgent(session1);
r = m_LocalConnector.LogoutAgent(session1, Vector3.Zero, Vector3.UnitY);
Assert.IsTrue(r, "LogoutAgent returned false");
result = m_LocalConnector.GetAgent(session1);
Assert.IsNotNull(result, "Agent session disappeared from storage after logout");