aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorTeravus Ovares (Dan Olivares)2009-09-25 16:06:04 -0400
committerTeravus Ovares (Dan Olivares)2009-09-25 16:06:04 -0400
commit2bb513329ac98914ff13a2817aa83b60d85603d9 (patch)
tree1495da131800b5e95a0b29178dc875ae458ff14c
parent* Fixes teleporting within megaregions on HG enabled regions. You can tele... (diff)
downloadopensim-SC-2bb513329ac98914ff13a2817aa83b60d85603d9.zip
opensim-SC-2bb513329ac98914ff13a2817aa83b60d85603d9.tar.gz
opensim-SC-2bb513329ac98914ff13a2817aa83b60d85603d9.tar.bz2
opensim-SC-2bb513329ac98914ff13a2817aa83b60d85603d9.tar.xz
* Does a full battery of tests to ensure that the object isn't an attachment before border crossing
* Fixes 'Inconsistent Attachment State' when teleporting into another region besides the SW most region slot on a MegaRegion. * Fixes a host of other unintended attachment border cross edge cases that lead to Inconsistent attachment state.
-rw-r--r--OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs7
2 files changed, 9 insertions, 4 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs
index 1436912..181c5ae 100644
--- a/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/RegionCombinerModule.cs
@@ -79,12 +79,12 @@ namespace OpenSim.Region.CoreModules.World.Land
79 { 79 {
80 if (!enabledYN) 80 if (!enabledYN)
81 return; 81 return;
82 82/*
83 // For testing on a single instance 83 // For testing on a single instance
84 if (scene.RegionInfo.RegionLocX == 1004 && scene.RegionInfo.RegionLocY == 1000) 84 if (scene.RegionInfo.RegionLocX == 1004 && scene.RegionInfo.RegionLocY == 1000)
85 return; 85 return;
86 // 86 //
87 87*/
88 lock (m_startingScenes) 88 lock (m_startingScenes)
89 m_startingScenes.Add(scene.RegionInfo.originRegionID, scene); 89 m_startingScenes.Add(scene.RegionInfo.originRegionID, scene);
90 90
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 3c17bbe..ad5d56f 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -245,6 +245,11 @@ namespace OpenSim.Region.Framework.Scenes
245 } 245 }
246 } 246 }
247 247
248 private bool IsAttachmentCheckFull()
249 {
250 return (IsAttachment || (m_rootPart.Shape.PCode == 9 && m_rootPart.Shape.State != 0));
251 }
252
248 /// <summary> 253 /// <summary>
249 /// The absolute position of this scene object in the scene 254 /// The absolute position of this scene object in the scene
250 /// </summary> 255 /// </summary>
@@ -257,7 +262,7 @@ namespace OpenSim.Region.Framework.Scenes
257 262
258 if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) 263 if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W)
259 || m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S)) 264 || m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S))
260 && !IsAttachment) 265 && !IsAttachmentCheckFull())
261 { 266 {
262 m_scene.CrossPrimGroupIntoNewRegion(val, this, true); 267 m_scene.CrossPrimGroupIntoNewRegion(val, this, true);
263 } 268 }