aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Hypergrid
diff options
context:
space:
mode:
authorMelanie Thielker2008-11-29 13:49:20 +0000
committerMelanie Thielker2008-11-29 13:49:20 +0000
commitb8e8a33d60b98894671a34a19e8d982463fa4785 (patch)
treeb6bb8e0a719b24664d391dd76c3add2c5d2f6666 /OpenSim/Region/Environment/Scenes/Hypergrid
parentFinally make attachments stay put. Randomize local ID generation to (diff)
downloadopensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.zip
opensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.tar.gz
opensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.tar.bz2
opensim-SC-b8e8a33d60b98894671a34a19e8d982463fa4785.tar.xz
Mantis #2584
Applying a patch from Diva. This patch introduces significant improvements in teleporting. Thank you, Diva.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/Hypergrid')
-rw-r--r--OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs18
1 files changed, 18 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs
index 9dd2426..5d34773 100644
--- a/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs
+++ b/OpenSim/Region/Environment/Scenes/Hypergrid/HGSceneCommunicationService.cs
@@ -149,6 +149,7 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid
149 149
150 if (destRegionUp) 150 if (destRegionUp)
151 { 151 {
152
152 // Fixing a bug where teleporting while sitting results in the avatar ending up removed from 153 // Fixing a bug where teleporting while sitting results in the avatar ending up removed from
153 // both regions 154 // both regions
154 if (avatar.ParentID != (uint)0) 155 if (avatar.ParentID != (uint)0)
@@ -169,6 +170,17 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid
169 agent.child = false; 170 agent.child = false;
170 m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agent); 171 m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agent);
171 172
173 if (eq != null)
174 {
175 OSD Item = EventQueueHelper.EnableSimulator(realHandle, reg.ExternalEndPoint);
176 eq.Enqueue(Item, avatar.UUID);
177 }
178 else
179 {
180 avatar.ControllingClient.InformClientOfNeighbour(realHandle, reg.ExternalEndPoint);
181 // TODO: make Event Queue disablable!
182 }
183
172 m_commsProvider.InterRegion.ExpectAvatarCrossing(reg.RegionHandle, avatar.ControllingClient.AgentId, 184 m_commsProvider.InterRegion.ExpectAvatarCrossing(reg.RegionHandle, avatar.ControllingClient.AgentId,
173 position, false); 185 position, false);
174 Thread.Sleep(2000); 186 Thread.Sleep(2000);
@@ -223,6 +235,12 @@ namespace OpenSim.Region.Environment.Scenes.Hypergrid
223 { 235 {
224 //SendCloseChildAgentConnections(avatar.UUID, avatar.GetKnownRegionList()); 236 //SendCloseChildAgentConnections(avatar.UUID, avatar.GetKnownRegionList());
225 SendCloseChildAgentConnections(avatar.UUID, childRegions); 237 SendCloseChildAgentConnections(avatar.UUID, childRegions);
238 if (eq != null)
239 {
240 OSD Item = EventQueueHelper.DisableSimulator(m_regionInfo.RegionHandle);
241 eq.Enqueue(Item, avatar.UUID);
242 }
243 Thread.Sleep(2000);
226 CloseConnection(avatar.UUID); 244 CloseConnection(avatar.UUID);
227 } 245 }
228 // if (teleport success) // seems to be always success here 246 // if (teleport success) // seems to be always success here