aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-05-09 18:02:19 +0100
committerJustin Clark-Casey (justincc)2013-05-09 18:02:19 +0100
commit2cb2f1d7e30fa583a9f43ddd6b420deb8e9b56bd (patch)
tree9987f2b312bed1e82d9f9c69bb0f2b5a7b341b6b /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
parentMerge branch 'master' of ssh://opensimulator.org/var/git/opensim (diff)
downloadopensim-SC-2cb2f1d7e30fa583a9f43ddd6b420deb8e9b56bd.zip
opensim-SC-2cb2f1d7e30fa583a9f43ddd6b420deb8e9b56bd.tar.gz
opensim-SC-2cb2f1d7e30fa583a9f43ddd6b420deb8e9b56bd.tar.bz2
opensim-SC-2cb2f1d7e30fa583a9f43ddd6b420deb8e9b56bd.tar.xz
Fix issue where objects removed via llDie() would not disappear for users looking in from neighbouring sims.
This was because this particular code path (unlike user delete) only sent kills to root presences, for no apparent good reason. Added regression test for this case. This fixes http://opensimulator.org/mantis/view.php?id=6627
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs14
1 files changed, 7 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 9e7a986..3b2f537 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1221,11 +1221,11 @@ namespace OpenSim.Region.Framework.Scenes
1221 /// <summary> 1221 /// <summary>
1222 /// Delete this group from its scene. 1222 /// Delete this group from its scene.
1223 /// </summary> 1223 /// </summary>
1224 /// 1224 /// <remarks>
1225 /// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood 1225 /// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood
1226 /// up and all avatars receive notification of its removal. Removal of the scene object from database backup 1226 /// up and all avatars receive notification of its removal. Removal of the scene object from database backup
1227 /// must be handled by the caller. 1227 /// must be handled by the caller.
1228 /// 1228 /// </remarks>
1229 /// <param name="silent">If true then deletion is not broadcast to clients</param> 1229 /// <param name="silent">If true then deletion is not broadcast to clients</param>
1230 public void DeleteGroupFromScene(bool silent) 1230 public void DeleteGroupFromScene(bool silent)
1231 { 1231 {
@@ -1234,10 +1234,10 @@ namespace OpenSim.Region.Framework.Scenes
1234 { 1234 {
1235 SceneObjectPart part = parts[i]; 1235 SceneObjectPart part = parts[i];
1236 1236
1237 Scene.ForEachRootScenePresence(delegate(ScenePresence avatar) 1237 Scene.ForEachScenePresence(sp =>
1238 { 1238 {
1239 if (avatar.ParentID == LocalId) 1239 if (!sp.IsChildAgent && sp.ParentID == LocalId)
1240 avatar.StandUp(); 1240 sp.StandUp();
1241 1241
1242 if (!silent) 1242 if (!silent)
1243 { 1243 {
@@ -1245,9 +1245,9 @@ namespace OpenSim.Region.Framework.Scenes
1245 if (part == m_rootPart) 1245 if (part == m_rootPart)
1246 { 1246 {
1247 if (!IsAttachment 1247 if (!IsAttachment
1248 || AttachedAvatar == avatar.ControllingClient.AgentId 1248 || AttachedAvatar == sp.UUID
1249 || !HasPrivateAttachmentPoint) 1249 || !HasPrivateAttachmentPoint)
1250 avatar.ControllingClient.SendKillObject(m_regionHandle, new List<uint> { part.LocalId }); 1250 sp.ControllingClient.SendKillObject(m_regionHandle, new List<uint> { part.LocalId });
1251 } 1251 }
1252 } 1252 }
1253 }); 1253 });