From 23c217dd7b7fe53e5640854183c53da8dd0b25b1 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Thu, 18 Sep 2008 15:24:16 +0000 Subject: 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. --- OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 8 ++++++++ OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region') 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 if (m_isDeleted) return; + // This is what happens when an orphanced link set child prim's + // group was queued when it was linked + // + if (m_rootPart == null) + return; + lock (m_parts) { //if (m_rootPart.m_IsAttachment) @@ -1815,6 +1821,8 @@ namespace OpenSim.Region.Environment.Scenes } m_scene.UnlinkSceneObject(objectGroup.UUID, true); + objectGroup.Children.Clear(); + objectGroup.RootPart = null; // TODO Deleting the original group object may cause problems later on if they have already // 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 parentPrim = targetPart.ParentGroup; childPrim = m_host.ParentGroup; } - byte uf = childPrim.RootPart.UpdateFlag; +// byte uf = childPrim.RootPart.UpdateFlag; childPrim.RootPart.UpdateFlag = 0; parentPrim.LinkToGroup(childPrim); - childPrim.RootPart.UpdateFlag = uf; +// if(uf != (Byte)0) +// parent.RootPart.UpdateFlag = uf; } parentPrim.TriggerScriptChangedEvent(Changed.LINK); parentPrim.RootPart.AddFlag(PrimFlags.CreateSelected); -- cgit v1.1