diff options
author | MW | 2007-11-05 13:58:44 +0000 |
---|---|---|
committer | MW | 2007-11-05 13:58:44 +0000 |
commit | 73fbacea1fe18873fab175d82189a1becb0f8e10 (patch) | |
tree | 4078f63bb77e7a512a7069b209ca5be569882b52 /OpenSim/Region/Environment/Scenes/Scene.cs | |
parent | prim cuts in ODE (diff) | |
download | opensim-SC-73fbacea1fe18873fab175d82189a1becb0f8e10.zip opensim-SC-73fbacea1fe18873fab175d82189a1becb0f8e10.tar.gz opensim-SC-73fbacea1fe18873fab175d82189a1becb0f8e10.tar.bz2 opensim-SC-73fbacea1fe18873fab175d82189a1becb0f8e10.tar.xz |
Started to cleanup/close down childagent connections when a user teleports. As the client will not close old childagent connections without being told explicitly to do so by each region the connection is to. Currently only implemented in standalone mode. ( the TellRegionToCloseChildConnection( ) in OGS1GridServices.cs needs implementing for grid mode, and the inter region .net remoting added for the new messages).
hopefully fixed the echo bug in chatmodule.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 8262478..d436bb3 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -816,6 +816,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
816 | m_sceneGridService.RegisterRegion(m_regInfo); | 816 | m_sceneGridService.RegisterRegion(m_regInfo); |
817 | m_sceneGridService.OnExpectUser += NewUserConnection; | 817 | m_sceneGridService.OnExpectUser += NewUserConnection; |
818 | m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing; | 818 | m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing; |
819 | m_sceneGridService.OnCloseAgentConnection += CloseConnection; | ||
819 | } | 820 | } |
820 | 821 | ||
821 | /// <summary> | 822 | /// <summary> |
@@ -864,13 +865,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
864 | } | 865 | } |
865 | } | 866 | } |
866 | 867 | ||
868 | public void CloseConnection(ulong regionHandle, LLUUID agentID) | ||
869 | { | ||
870 | if (regionHandle == m_regionHandle) | ||
871 | { | ||
872 | ScenePresence presence = m_innerScene.GetScenePresence(agentID); | ||
873 | if(presence != null) | ||
874 | { | ||
875 | libsecondlife.Packets.DisableSimulatorPacket disable = new libsecondlife.Packets.DisableSimulatorPacket(); | ||
876 | presence.ControllingClient.OutPacket(disable); | ||
877 | } | ||
878 | } | ||
879 | } | ||
880 | |||
867 | 881 | ||
868 | /// <summary> | 882 | /// <summary> |
869 | /// | 883 | /// |
870 | /// </summary> | 884 | /// </summary> |
871 | public void InformClientOfNeighbours(ScenePresence presence) | 885 | public void InformClientOfNeighbours(ScenePresence presence) |
872 | { | 886 | { |
873 | m_sceneGridService.InformClientOfNeighbours(presence); | 887 | m_sceneGridService.EnableNeighbourChildAgents(presence); |
874 | } | 888 | } |
875 | 889 | ||
876 | /// <summary> | 890 | /// <summary> |
@@ -908,7 +922,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
908 | { | 922 | { |
909 | if (m_scenePresences.ContainsKey(remoteClient.AgentId)) | 923 | if (m_scenePresences.ContainsKey(remoteClient.AgentId)) |
910 | { | 924 | { |
911 | m_sceneGridService.RequestTeleportLocation(m_scenePresences[remoteClient.AgentId], regionHandle, position, lookAt, flags); | 925 | m_sceneGridService.RequestTeleportToLocation(m_scenePresences[remoteClient.AgentId], regionHandle, position, lookAt, flags); |
912 | } | 926 | } |
913 | } | 927 | } |
914 | 928 | ||
@@ -920,7 +934,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
920 | /// <param name="position"></param> | 934 | /// <param name="position"></param> |
921 | public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position, bool isFlying) | 935 | public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position, bool isFlying) |
922 | { | 936 | { |
923 | return m_sceneGridService.InformNeighbourOfCrossing(regionhandle, agentID, position, isFlying); | 937 | return m_sceneGridService.CrossToNeighbouringRegion(regionhandle, agentID, position, isFlying); |
924 | } | 938 | } |
925 | 939 | ||
926 | #endregion | 940 | #endregion |