aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs15
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs19
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs3
3 files changed, 6 insertions, 31 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 3d21820..bef79f8 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -2887,11 +2887,11 @@ namespace OpenSim.Region.Environment.Scenes
2887 2887
2888 capsPaths[agent.AgentID] = agent.CapsPath; 2888 capsPaths[agent.AgentID] = agent.CapsPath;
2889 2889
2890 AddCapsHandler(agent.AgentID);
2891
2892 if (!agent.child) 2890 if (!agent.child)
2893 { 2891 {
2894 2892
2893 AddCapsHandler(agent.AgentID);
2894
2895 // Honor parcel landing type and position. 2895 // Honor parcel landing type and position.
2896 ILandObject land = LandChannel.GetLandObject(agent.startpos.X, agent.startpos.Y); 2896 ILandObject land = LandChannel.GetLandObject(agent.startpos.X, agent.startpos.Y);
2897 if (land != null) 2897 if (land != null)
@@ -3108,18 +3108,7 @@ namespace OpenSim.Region.Environment.Scenes
3108 // } 3108 // }
3109 3109
3110 // Tell a single agent to disconnect from the region. 3110 // Tell a single agent to disconnect from the region.
3111 // This sends DisableSimulator over UDP, but that doesn't seem to be working
3112 // well with the latest LL viewer, so we're sending it also via the EQ
3113 presence.ControllingClient.SendShutdownConnectionNotice(); 3111 presence.ControllingClient.SendShutdownConnectionNotice();
3114 IEventQueue eq = RequestModuleInterface<IEventQueue>();
3115 if (eq != null)
3116 {
3117 OSD Item = EventQueueHelper.DisableSimulator(m_regInfo.RegionHandle);
3118 eq.Enqueue(Item, agentID);
3119 m_log.Debug("[Scene]: Enqueuing DisableSimulator for " + agentID + " in region " + m_regInfo.RegionName);
3120 Thread.Sleep(2000);
3121 }
3122 RemoveCapsHandler(agentID);
3123 3112
3124 presence.ControllingClient.Close(true); 3113 presence.ControllingClient.Close(true);
3125 } 3114 }
diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
index c36c5ba..2b638e3 100644
--- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
@@ -675,7 +675,7 @@ namespace OpenSim.Region.Environment.Scenes
675 675
676 // the avatar.Close below will clear the child region list. We need this below for (possibly) 676 // the avatar.Close below will clear the child region list. We need this below for (possibly)
677 // closing the child agents, so save it here (we need a copy as it is Clear()-ed). 677 // closing the child agents, so save it here (we need a copy as it is Clear()-ed).
678 //List<ulong> childRegions = new List<ulong>(avatar.GetKnownRegionList()); 678 List<ulong> childRegions = new List<ulong>(avatar.GetKnownRegionList());
679 // Compared to ScenePresence.CrossToNewRegion(), there's no obvious code to handle a teleport 679 // Compared to ScenePresence.CrossToNewRegion(), there's no obvious code to handle a teleport
680 // failure at this point (unlike a border crossing failure). So perhaps this can never fail 680 // failure at this point (unlike a border crossing failure). So perhaps this can never fail
681 // once we reach here... 681 // once we reach here...
@@ -727,28 +727,17 @@ namespace OpenSim.Region.Environment.Scenes
727 KiPrimitive(avatar.LocalId); 727 KiPrimitive(avatar.LocalId);
728 } 728 }
729 729
730 avatar.Close();
730 731
731 uint newRegionX = (uint)(reg.RegionHandle >> 40); 732 uint newRegionX = (uint)(reg.RegionHandle >> 40);
732 uint newRegionY = (((uint)(reg.RegionHandle)) >> 8); 733 uint newRegionY = (((uint)(reg.RegionHandle)) >> 8);
733 uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40); 734 uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40);
734 uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8); 735 uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8);
735 736
736 // Let's close some children agents 737 if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3)
737 avatar.CloseChildAgents(newRegionX, newRegionY);
738
739 avatar.Close();
740
741 // Finally, let's close this previously-known-as-root agent, when the jump is outside the view zone
742
743 // This is a little too fast of a distance computation... it's not consistent with the rule
744 // of having child agents in exactly the adjacent regions. Some topologies result in orphan
745 // children
746 //if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3)
747 //if (((int)Math.Abs((int)(newRegionX - oldRegionX)) > 1) || ((int)Math.Abs((int)(newRegionY - oldRegionY)) > 1))
748 if (Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY))
749 { 738 {
750 //SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList()); 739 //SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList());
751 //SendCloseChildAgentConnections(avatar.UUID, childRegions); 740 SendCloseChildAgentConnections(avatar.UUID, childRegions);
752 CloseConnection(avatar.UUID); 741 CloseConnection(avatar.UUID);
753 } 742 }
754 743
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 30063eb..3bd6be9 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -2385,9 +2385,6 @@ namespace OpenSim.Region.Environment.Scenes
2385 2385
2386 CrossAttachmentsIntoNewRegion(neighbourHandle, true); 2386 CrossAttachmentsIntoNewRegion(neighbourHandle, true);
2387 2387
2388 // Next, let's close the child agent connections that are too far away.
2389 CloseChildAgents(neighbourx, neighboury);
2390
2391 // m_scene.SendKillObject(m_localId); 2388 // m_scene.SendKillObject(m_localId);
2392 2389
2393 m_scene.NotifyMyCoarseLocationChange(); 2390 m_scene.NotifyMyCoarseLocationChange();