add sog TemporaryInstance flag

master
UbitUmarov 2020-05-14 12:51:55 +01:00
parent 8b77162020
commit 67bc086782
2 changed files with 12 additions and 3 deletions

View File

@ -195,6 +195,8 @@ namespace OpenSim.Region.Framework.Scenes
get { return m_hasGroupChanged; }
}
public bool TemporaryInstance = false;
private bool m_groupContainsForeignPrims = false;
/// <summary>
@ -3294,9 +3296,8 @@ namespace OpenSim.Region.Framework.Scenes
// Now that we've aquired all of the old SOG's parts, remove the old SOG from the scene.
m_scene.UnlinkSceneObject(objectGroup, true);
objectGroup.IsDeleted = true;
objectGroup.m_parts.Clear();
objectGroup.m_parts.Clear(); // do not dispose the parts moved to new group
objectGroup.Dispose();
// Can't do this yet since backup still makes use of the root part without any synchronization
// objectGroup.m_rootPart = null;

View File

@ -420,6 +420,8 @@ namespace OpenSim.Region.Framework.Scenes
m_log.ErrorFormat("[UUID GATHERER]: Failed to get part - {0}", e);
}
}
if(sceneObject.TemporaryInstance)
sceneObject.Dispose();
}
/// <summary>
@ -782,14 +784,20 @@ namespace OpenSim.Region.Framework.Scenes
if (CoalescedSceneObjectsSerializer.TryFromXml(xml, out coa))
{
foreach (SceneObjectGroup sog in coa.Objects)
{
sog.TemporaryInstance = true;
AddForInspection(sog);
}
}
else
{
SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml);
if (null != sog)
{
sog.TemporaryInstance = true;
AddForInspection(sog);
}
}
}