mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 01:06:30 +08:00
* Changed IPresenceService Logout, so that it takes a position and a lookat
* CommsManager.AvatarService rerouted
This commit is contained in:
@@ -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" />
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user