From 70d3b9aecaf5bf2447b43a1359c631eb60ca66aa Mon Sep 17 00:00:00 2001
From: Tom Grimshaw
Date: Sat, 26 Jun 2010 11:14:58 -0700
Subject: Add a DeleteAllSceneObjects(bool exceptNoCopy) method to allow
NoCopy objects to be retained when the scene is cleared.
---
OpenSim/Region/Framework/Scenes/Scene.cs | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index dc58d84..c596baa 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2183,6 +2183,14 @@ namespace OpenSim.Region.Framework.Scenes
///
public void DeleteAllSceneObjects()
{
+ DeleteAllSceneObjects(false);
+ }
+
+ ///
+ /// Delete every object from the scene. This does not include attachments worn by avatars.
+ ///
+ public void DeleteAllSceneObjects(bool exceptNoCopy)
+ {
lock (Entities)
{
ICollection entities = new List(Entities);
@@ -2192,8 +2200,13 @@ namespace OpenSim.Region.Framework.Scenes
if (e is SceneObjectGroup)
{
SceneObjectGroup sog = (SceneObjectGroup)e;
- if (!sog.IsAttachment)
- DeleteSceneObject((SceneObjectGroup)e, false);
+ if (sog != null && !sog.IsAttachment)
+ {
+ if (!exceptNoCopy || ((sog.GetEffectivePermissions() & (uint)PermissionMask.Copy) != 0))
+ {
+ DeleteSceneObject((SceneObjectGroup)e, false);
+ }
+ }
}
}
}
--
cgit v1.1