diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 9548200..9bd7632 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -3235,13 +3235,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
3235 | 3235 | ||
3236 | Vector3 oldPos; | 3236 | Vector3 oldPos; |
3237 | 3237 | ||
3238 | // FIXME: This improves the situation where editing just the root prim of an attached object would send | ||
3239 | // all the other parts to oblivion after detach/reattach. However, a problem remains since the root prim | ||
3240 | // still ends up in the wrong position on reattach. | ||
3241 | if (IsAttachment) | 3238 | if (IsAttachment) |
3242 | oldPos = RootPart.OffsetPosition; | 3239 | oldPos = m_rootPart.AttachedPos + m_rootPart.OffsetPosition; // OffsetPosition should always be 0 in an attachments's root prim |
3243 | else | 3240 | else |
3244 | oldPos = AbsolutePosition + RootPart.OffsetPosition; | 3241 | oldPos = AbsolutePosition + m_rootPart.OffsetPosition; |
3245 | 3242 | ||
3246 | Vector3 diff = oldPos - newPos; | 3243 | Vector3 diff = oldPos - newPos; |
3247 | Quaternion partRotation = m_rootPart.RotationOffset; | 3244 | Quaternion partRotation = m_rootPart.RotationOffset; |
@@ -3256,6 +3253,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3256 | } | 3253 | } |
3257 | 3254 | ||
3258 | AbsolutePosition = newPos; | 3255 | AbsolutePosition = newPos; |
3256 | |||
3257 | if (IsAttachment) | ||
3258 | m_rootPart.AttachedPos = newPos; | ||
3259 | 3259 | ||
3260 | HasGroupChanged = true; | 3260 | HasGroupChanged = true; |
3261 | ScheduleGroupForTerseUpdate(); | 3261 | ScheduleGroupForTerseUpdate(); |