From e19a76377c561df939df512fdaeb6d4e830eb68a Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Sat, 21 Jun 2008 20:12:01 +0000 Subject: [PATCH] * Refactor: Fold sog.DeleteParts() functionality into existing sog.DeleteGroup() --- OpenSim/Region/Environment/Scenes/Scene.cs | 3 +- .../Environment/Scenes/SceneObjectGroup.cs | 28 ++++++------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index aa74072613..4cf1ea4523 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1670,7 +1670,7 @@ namespace OpenSim.Region.Environment.Scenes /// public void DeleteSceneObject(SceneObjectGroup group) { - SceneObjectPart rootPart = (group).GetChildPart(group.UUID); + SceneObjectPart rootPart = group.GetChildPart(group.UUID); if (rootPart.PhysActor != null) { @@ -1685,7 +1685,6 @@ namespace OpenSim.Region.Environment.Scenes } group.DeleteGroup(); - group.DeleteParts(); } /// diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 814db0532b..202e3b83d9 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -931,12 +931,14 @@ namespace OpenSim.Region.Environment.Scenes // code needs a redesign. m_isDeleted = true; - DetachFromBackup(this); + DetachFromBackup(this); lock (m_parts) { foreach (SceneObjectPart part in m_parts.Values) { + part.StopScripts(); + List avatars = Scene.GetScenePresences(); for (int i = 0; i < avatars.Count; i++) { @@ -948,6 +950,9 @@ namespace OpenSim.Region.Environment.Scenes avatars[i].ControllingClient.SendKillObject(m_regionHandle, part.LocalId); } } + + m_rootPart = null; + m_parts.Clear(); } } @@ -968,23 +973,6 @@ namespace OpenSim.Region.Environment.Scenes } } - /// - /// Delete all the parts in this group. - /// - public void DeleteParts() - { - lock (m_parts) - { - foreach (SceneObjectPart part in m_parts.Values) - { - part.StopScripts(); - } - - m_rootPart = null; - m_parts.Clear(); - } - } - public void AddScriptLPS(int count) { if (scriptScore + count >= float.MaxValue - count) @@ -1793,11 +1781,11 @@ namespace OpenSim.Region.Environment.Scenes m_scene.UnlinkSceneObject(objectGroup.UUID, true); - // TODO Deleting the parts 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 // spurious, so it would be good not to send them at some point. // The traffic caused is always going to be pretty minor, so it's not high priority - //objectGroup.DeleteParts(); + //objectGroup.DeleteGroup(); ScheduleGroupForFullUpdate(); }