rearrange SceneGraph.AddSceneObject() to return earlier if an object with that uuid is already in the scene

this means that we don't perform pointless work
soprefactor
Justin Clark-Casey (justincc) 2010-05-21 21:57:56 +01:00
parent 4b518e0288
commit 5287c5f7fb
1 changed files with 53 additions and 57 deletions

View File

@ -278,7 +278,19 @@ namespace OpenSim.Region.Framework.Scenes
if (sceneObject == null || sceneObject.RootPart == null || sceneObject.RootPart.UUID == UUID.Zero)
return false;
bool newlyAdded = false;
lock (sceneObject)
{
if (Entities.ContainsKey(sceneObject.UUID))
{
// m_log.WarnFormat(
// "[SCENE GRAPH]: Scene object {0} {1} was already in region {2} on add request",
// sceneObject.Name, sceneObject.UUID, m_parentScene.RegionInfo.RegionName);
return false;
}
// m_log.DebugFormat(
// "[SCENE GRAPH]: Adding object {0} {1} to region {2}",
// sceneObject.Name, sceneObject.UUID, m_parentScene.RegionInfo.RegionName);
if (m_parentScene.m_clampPrimSize)
{
@ -302,15 +314,6 @@ namespace OpenSim.Region.Framework.Scenes
if (sendClientUpdates)
sceneObject.ScheduleGroupForFullUpdate();
lock (sceneObject)
{
if (!Entities.ContainsKey(sceneObject.UUID))
{
// m_log.DebugFormat(
// "[SCENE GRAPH]: Adding object {0} {1} to region {2}",
// sceneObject.Name, sceneObject.UUID, m_parentScene.RegionInfo.RegionName);
newlyAdded = true;
Entities.Add(sceneObject);
m_numPrim += sceneObject.Children.Count;
@ -331,15 +334,8 @@ namespace OpenSim.Region.Framework.Scenes
}
}
}
// else
// {
// m_log.WarnFormat(
// "[SCENE GRAPH]: Scene object {0} {1} was already in region {2} on add request",
// sceneObject.Name, sceneObject.UUID, m_parentScene.RegionInfo.RegionName);
// }
}
return newlyAdded;
return true;
}
/// <summary>