diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 20b3b5c..54ac792 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -297,44 +297,34 @@ namespace OpenSim.Region.Framework.Scenes | |||
297 | 297 | ||
298 | sceneObject.AttachToScene(m_parentScene); | 298 | sceneObject.AttachToScene(m_parentScene); |
299 | 299 | ||
300 | List<SceneObjectPart> parts = null; | ||
301 | bool found = false; | ||
302 | lock (sceneObject) | 300 | lock (sceneObject) |
303 | { | 301 | { |
304 | if (!Entities.ContainsKey(sceneObject.UUID)) | 302 | if (!Entities.ContainsKey(sceneObject.UUID)) |
305 | { | 303 | { |
306 | found = true; | ||
307 | Entities.Add(sceneObject); | 304 | Entities.Add(sceneObject); |
308 | m_numPrim += sceneObject.Children.Count; | 305 | m_numPrim += sceneObject.Children.Count; |
309 | 306 | ||
310 | if (attachToBackup) | 307 | if (attachToBackup) |
311 | sceneObject.AttachToBackup(); | 308 | sceneObject.AttachToBackup(); |
312 | 309 | ||
313 | parts = new List<SceneObjectPart>(sceneObject.Children.Values); | 310 | if (OnObjectCreate != null) |
314 | 311 | OnObjectCreate(sceneObject); | |
315 | } | 312 | |
316 | } | 313 | lock (m_dictionary_lock) |
317 | |||
318 | if (found) | ||
319 | { | ||
320 | lock (m_dictionary_lock) | ||
321 | { | ||
322 | SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; | ||
323 | SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject; | ||
324 | foreach (SceneObjectPart part in parts) | ||
325 | { | 314 | { |
326 | SceneObjectGroupsByFullID[part.UUID] = sceneObject; | 315 | SceneObjectGroupsByFullID[sceneObject.UUID] = sceneObject; |
327 | SceneObjectGroupsByLocalID[part.LocalId] = sceneObject; | 316 | SceneObjectGroupsByLocalID[sceneObject.LocalId] = sceneObject; |
317 | foreach (SceneObjectPart part in sceneObject.Children.Values) | ||
318 | { | ||
319 | SceneObjectGroupsByFullID[part.UUID] = sceneObject; | ||
320 | SceneObjectGroupsByLocalID[part.LocalId] = sceneObject; | ||
321 | } | ||
328 | } | 322 | } |
329 | } | ||
330 | 323 | ||
331 | if (OnObjectCreate != null) | 324 | return true; |
332 | OnObjectCreate(sceneObject); | 325 | } |
333 | |||
334 | return true; | ||
335 | } | 326 | } |
336 | 327 | ||
337 | |||
338 | return false; | 328 | return false; |
339 | } | 329 | } |
340 | 330 | ||