diff options
author | Teravus Ovares (Dan Olivares) | 2009-09-25 16:06:04 -0400 |
---|---|---|
committer | Teravus Ovares (Dan Olivares) | 2009-09-25 16:06:04 -0400 |
commit | 2bb513329ac98914ff13a2817aa83b60d85603d9 (patch) | |
tree | 1495da131800b5e95a0b29178dc875ae458ff14c | |
parent | * Fixes teleporting within megaregions on HG enabled regions. You can tele... (diff) | |
download | opensim-SC_OLD-2bb513329ac98914ff13a2817aa83b60d85603d9.zip opensim-SC_OLD-2bb513329ac98914ff13a2817aa83b60d85603d9.tar.gz opensim-SC_OLD-2bb513329ac98914ff13a2817aa83b60d85603d9.tar.bz2 opensim-SC_OLD-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.cs | 6 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 7 |
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 | } |