diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 436b24eb5a..33dae66e76 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -1881,7 +1881,8 @@ namespace OpenSim.Region.Environment.Scenes /// /// Synchronously delete the given object from the scene. /// - /// + /// Object Id + /// Suppress broadcasting changes to other clients. public void DeleteSceneObject(SceneObjectGroup group, bool silent) { //SceneObjectPart rootPart = group.GetChildPart(group.UUID); @@ -1924,15 +1925,19 @@ namespace OpenSim.Region.Environment.Scenes /// Unlink the given object from the scene. Unlike delete, this just removes the record of the object - the /// object itself is not destroyed. /// - /// + /// Id of object. /// true if the object was in the scene, false if it was not - public bool UnlinkSceneObject(UUID uuid, bool resultOfLinkingObjects) + /// If true, only deletes from scene, but keeps object in database. + public bool UnlinkSceneObject(UUID uuid, bool softDelete) { - if (m_sceneGraph.DeleteSceneObject(uuid, resultOfLinkingObjects)) + if (m_sceneGraph.DeleteSceneObject(uuid, softDelete)) { - if (!resultOfLinkingObjects) + if (!softDelete) + { m_storageManager.DataStore.RemoveObject(uuid, - m_regInfo.RegionID); + m_regInfo.RegionID); + } + return true; } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 8a024b7c55..908bb0d4c1 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -1063,7 +1063,8 @@ namespace OpenSim.Region.Environment.Scenes /// /// Delete this group from its scene and tell all the scene presences about that deletion. - /// + /// + /// Broadcast deletions to all clients. public void DeleteGroup(bool silent) { // We need to keep track of this state in case this group is still queued for backup.