diff options
author | Sean Dague | 2009-08-31 20:16:32 -0400 |
---|---|---|
committer | Sean Dague | 2009-08-31 20:16:32 -0400 |
commit | 4333bc7742b1aac3f548073cde2048ef678ffa3b (patch) | |
tree | 84dcf03ea648ae1b3a70f99faff3b2faff7492ff /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |
parent | change regular test target to use nunit exec mode (diff) | |
parent | Merge branch 'master' of ssh://MyConnection/var/git/opensim (diff) | |
download | opensim-SC-4333bc7742b1aac3f548073cde2048ef678ffa3b.zip opensim-SC-4333bc7742b1aac3f548073cde2048ef678ffa3b.tar.gz opensim-SC-4333bc7742b1aac3f548073cde2048ef678ffa3b.tar.bz2 opensim-SC-4333bc7742b1aac3f548073cde2048ef678ffa3b.tar.xz |
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index e5c6bf1..d72ed7d 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1477,8 +1477,26 @@ namespace OpenSim.Region.Framework.Scenes | |||
1477 | SceneObjectGroup dupe = (SceneObjectGroup)MemberwiseClone(); | 1477 | SceneObjectGroup dupe = (SceneObjectGroup)MemberwiseClone(); |
1478 | dupe.m_isBackedUp = false; | 1478 | dupe.m_isBackedUp = false; |
1479 | dupe.m_parts = new Dictionary<UUID, SceneObjectPart>(); | 1479 | dupe.m_parts = new Dictionary<UUID, SceneObjectPart>(); |
1480 | |||
1481 | // Warning, The following code related to previousAttachmentStatus is needed so that clones of | ||
1482 | // attachments do not bordercross while they're being duplicated. This is hacktastic! | ||
1483 | // Normally, setting AbsolutePosition will bordercross a prim if it's outside the region! | ||
1484 | // unless IsAttachment is true!, so to prevent border crossing, we save it's attachment state | ||
1485 | // (which should be false anyway) set it as an Attachment and then set it's Absolute Position, | ||
1486 | // then restore it's attachment state | ||
1487 | |||
1488 | // This is only necessary when userExposed is false! | ||
1489 | |||
1490 | bool previousAttachmentStatus = dupe.RootPart.IsAttachment; | ||
1491 | |||
1492 | if (!userExposed) | ||
1493 | dupe.RootPart.IsAttachment = true; | ||
1494 | |||
1480 | dupe.AbsolutePosition = new Vector3(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z); | 1495 | dupe.AbsolutePosition = new Vector3(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z); |
1481 | 1496 | ||
1497 | if (!userExposed) | ||
1498 | dupe.RootPart.IsAttachment = previousAttachmentStatus; | ||
1499 | |||
1482 | dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); | 1500 | dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); |
1483 | dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; | 1501 | dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; |
1484 | 1502 | ||