From 2317b6767beb1c171a8a9b087510ad4111ec0a01 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Tue, 24 Aug 2010 18:20:24 +0200
Subject: Add a method to delete left over / dropped attachments

---
 OpenSim/Region/Framework/Scenes/Scene.cs | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

(limited to 'OpenSim')

diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 3343d08..be01d44 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -4984,5 +4984,37 @@ namespace OpenSim.Region.Framework.Scenes
                     throw new Exception(error);
             }
         }
+
+        public void CleanDroppedAttachments()
+        {
+            List<SceneObjectGroup> objectsToDelete =
+                    new List<SceneObjectGroup>();
+
+            ForEachSOG(delegate (SceneObjectGroup grp)
+                    {
+                        if (grp.RootPart.Shape.State != 0)
+                        {
+                            UUID agentID = grp.OwnerID;
+                            if (agentID == UUID.Zero)
+                            {
+                                objectsToDelete.Add(grp);
+                                return;
+                            }
+
+                            ScenePresence sp = GetScenePresence(agentID);
+                            if (sp == null)
+                            {
+                                objectsToDelete.Add(grp);
+                                return;
+                            }
+                        }
+                    });
+            
+            foreach (SceneObjectGroup grp in objectsToDelete)
+            {
+                m_log.InfoFormat("[SCENE]: Deleting dropped attachment {0} of user {1}", grp.UUID, grp.OwnerID);
+                DeleteSceneObject(grp, true);
+            }
+        }
     }
 }
-- 
cgit v1.1