diff options
author | Melanie Thielker | 2008-09-18 15:24:16 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-09-18 15:24:16 +0000 |
commit | 23c217dd7b7fe53e5640854183c53da8dd0b25b1 (patch) | |
tree | bd316d982b7e0779b768de8f57409b48abd69eb6 | |
parent | Mantis #2213 (diff) | |
download | opensim-SC-23c217dd7b7fe53e5640854183c53da8dd0b25b1.zip opensim-SC-23c217dd7b7fe53e5640854183c53da8dd0b25b1.tar.gz opensim-SC-23c217dd7b7fe53e5640854183c53da8dd0b25b1.tar.bz2 opensim-SC-23c217dd7b7fe53e5640854183c53da8dd0b25b1.tar.xz |
Kan-Ed fix series.
Correct a condition where a prim is linked before it has been persisted
for the first time and is then persisted through it's former SOG with
a bad offset position.
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 5670492..b0b402c 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -1519,6 +1519,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1519 | if (m_isDeleted) | 1519 | if (m_isDeleted) |
1520 | return; | 1520 | return; |
1521 | 1521 | ||
1522 | // This is what happens when an orphanced link set child prim's | ||
1523 | // group was queued when it was linked | ||
1524 | // | ||
1525 | if (m_rootPart == null) | ||
1526 | return; | ||
1527 | |||
1522 | lock (m_parts) | 1528 | lock (m_parts) |
1523 | { | 1529 | { |
1524 | //if (m_rootPart.m_IsAttachment) | 1530 | //if (m_rootPart.m_IsAttachment) |
@@ -1815,6 +1821,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1815 | } | 1821 | } |
1816 | 1822 | ||
1817 | m_scene.UnlinkSceneObject(objectGroup.UUID, true); | 1823 | m_scene.UnlinkSceneObject(objectGroup.UUID, true); |
1824 | objectGroup.Children.Clear(); | ||
1825 | objectGroup.RootPart = null; | ||
1818 | 1826 | ||
1819 | // TODO Deleting the original group object may cause problems later on if they have already | 1827 | // TODO Deleting the original group object may cause problems later on if they have already |
1820 | // made it into the update queue. However, sending out updates for those parts is now | 1828 | // made it into the update queue. However, sending out updates for those parts is now |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index b4369df..3295a96 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -2812,10 +2812,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
2812 | parentPrim = targetPart.ParentGroup; | 2812 | parentPrim = targetPart.ParentGroup; |
2813 | childPrim = m_host.ParentGroup; | 2813 | childPrim = m_host.ParentGroup; |
2814 | } | 2814 | } |
2815 | byte uf = childPrim.RootPart.UpdateFlag; | 2815 | // byte uf = childPrim.RootPart.UpdateFlag; |
2816 | childPrim.RootPart.UpdateFlag = 0; | 2816 | childPrim.RootPart.UpdateFlag = 0; |
2817 | parentPrim.LinkToGroup(childPrim); | 2817 | parentPrim.LinkToGroup(childPrim); |
2818 | childPrim.RootPart.UpdateFlag = uf; | 2818 | // if(uf != (Byte)0) |
2819 | // parent.RootPart.UpdateFlag = uf; | ||
2819 | } | 2820 | } |
2820 | parentPrim.TriggerScriptChangedEvent(Changed.LINK); | 2821 | parentPrim.TriggerScriptChangedEvent(Changed.LINK); |
2821 | parentPrim.RootPart.AddFlag(PrimFlags.CreateSelected); | 2822 | parentPrim.RootPart.AddFlag(PrimFlags.CreateSelected); |