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 /OpenSim/Region/Framework | |
parent | * Fixes teleporting within megaregions on HG enabled regions. You can tele... (diff) | |
download | opensim-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.
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 7 |
1 files changed, 6 insertions, 1 deletions
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 | } |