aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMelanie Thielker2010-08-24 18:20:24 +0200
committerMelanie2010-11-08 02:36:51 +0000
commit2317b6767beb1c171a8a9b087510ad4111ec0a01 (patch)
treec75c523087b124bd7d747f3b8a980e37c0c41ea3
parentDetach attachments displaced by other attachments (diff)
downloadopensim-SC-2317b6767beb1c171a8a9b087510ad4111ec0a01.zip
opensim-SC-2317b6767beb1c171a8a9b087510ad4111ec0a01.tar.gz
opensim-SC-2317b6767beb1c171a8a9b087510ad4111ec0a01.tar.bz2
opensim-SC-2317b6767beb1c171a8a9b087510ad4111ec0a01.tar.xz
Add a method to delete left over / dropped attachments
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs32
1 files changed, 32 insertions, 0 deletions
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
4984 throw new Exception(error); 4984 throw new Exception(error);
4985 } 4985 }
4986 } 4986 }
4987
4988 public void CleanDroppedAttachments()
4989 {
4990 List<SceneObjectGroup> objectsToDelete =
4991 new List<SceneObjectGroup>();
4992
4993 ForEachSOG(delegate (SceneObjectGroup grp)
4994 {
4995 if (grp.RootPart.Shape.State != 0)
4996 {
4997 UUID agentID = grp.OwnerID;
4998 if (agentID == UUID.Zero)
4999 {
5000 objectsToDelete.Add(grp);
5001 return;
5002 }
5003
5004 ScenePresence sp = GetScenePresence(agentID);
5005 if (sp == null)
5006 {
5007 objectsToDelete.Add(grp);
5008 return;
5009 }
5010 }
5011 });
5012
5013 foreach (SceneObjectGroup grp in objectsToDelete)
5014 {
5015 m_log.InfoFormat("[SCENE]: Deleting dropped attachment {0} of user {1}", grp.UUID, grp.OwnerID);
5016 DeleteSceneObject(grp, true);
5017 }
5018 }
4987 } 5019 }
4988} 5020}