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.
0.6.0-stable
Melanie Thielker 2008-09-18 15:24:16 +00:00
parent 4cb430eb33
commit 23c217dd7b
2 changed files with 11 additions and 2 deletions

View File

@ -1519,6 +1519,12 @@ namespace OpenSim.Region.Environment.Scenes
if (m_isDeleted) if (m_isDeleted)
return; 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) lock (m_parts)
{ {
//if (m_rootPart.m_IsAttachment) //if (m_rootPart.m_IsAttachment)
@ -1815,6 +1821,8 @@ namespace OpenSim.Region.Environment.Scenes
} }
m_scene.UnlinkSceneObject(objectGroup.UUID, true); 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 // 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 // made it into the update queue. However, sending out updates for those parts is now

View File

@ -2812,10 +2812,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
parentPrim = targetPart.ParentGroup; parentPrim = targetPart.ParentGroup;
childPrim = m_host.ParentGroup; childPrim = m_host.ParentGroup;
} }
byte uf = childPrim.RootPart.UpdateFlag; // byte uf = childPrim.RootPart.UpdateFlag;
childPrim.RootPart.UpdateFlag = 0; childPrim.RootPart.UpdateFlag = 0;
parentPrim.LinkToGroup(childPrim); parentPrim.LinkToGroup(childPrim);
childPrim.RootPart.UpdateFlag = uf; // if(uf != (Byte)0)
// parent.RootPart.UpdateFlag = uf;
} }
parentPrim.TriggerScriptChangedEvent(Changed.LINK); parentPrim.TriggerScriptChangedEvent(Changed.LINK);
parentPrim.RootPart.AddFlag(PrimFlags.CreateSelected); parentPrim.RootPart.AddFlag(PrimFlags.CreateSelected);