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) if (sceneObject == null || sceneObject.RootPart == null || sceneObject.RootPart.UUID == UUID.Zero)
return false; 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) if (m_parentScene.m_clampPrimSize)
{ {
@ -302,15 +314,6 @@ namespace OpenSim.Region.Framework.Scenes
if (sendClientUpdates) if (sendClientUpdates)
sceneObject.ScheduleGroupForFullUpdate(); 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); Entities.Add(sceneObject);
m_numPrim += sceneObject.Children.Count; 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> /// <summary>