From 2cb2f1d7e30fa583a9f43ddd6b420deb8e9b56bd Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Thu, 9 May 2013 18:02:19 +0100 Subject: 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 --- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs') 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 /// /// Delete this group from its scene. /// - /// + /// /// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood /// up and all avatars receive notification of its removal. Removal of the scene object from database backup /// must be handled by the caller. - /// + /// /// If true then deletion is not broadcast to clients public void DeleteGroupFromScene(bool silent) { @@ -1234,10 +1234,10 @@ namespace OpenSim.Region.Framework.Scenes { SceneObjectPart part = parts[i]; - Scene.ForEachRootScenePresence(delegate(ScenePresence avatar) + Scene.ForEachScenePresence(sp => { - if (avatar.ParentID == LocalId) - avatar.StandUp(); + if (!sp.IsChildAgent && sp.ParentID == LocalId) + sp.StandUp(); if (!silent) { @@ -1245,9 +1245,9 @@ namespace OpenSim.Region.Framework.Scenes if (part == m_rootPart) { if (!IsAttachment - || AttachedAvatar == avatar.ControllingClient.AgentId + || AttachedAvatar == sp.UUID || !HasPrivateAttachmentPoint) - avatar.ControllingClient.SendKillObject(m_regionHandle, new List { part.LocalId }); + sp.ControllingClient.SendKillObject(m_regionHandle, new List { part.LocalId }); } } }); -- cgit v1.1 From 3290cd09d3ecd45c52bd131ada2a793c48fd99dc Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Thu, 9 May 2013 18:12:17 +0100 Subject: remove pointless region handle paramter from IClientAPI.SendKillObject() --- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs') diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 3b2f537..38fa26a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -1247,7 +1247,7 @@ namespace OpenSim.Region.Framework.Scenes if (!IsAttachment || AttachedAvatar == sp.UUID || !HasPrivateAttachmentPoint) - sp.ControllingClient.SendKillObject(m_regionHandle, new List { part.LocalId }); + sp.ControllingClient.SendKillObject(new List { part.LocalId }); } } }); -- cgit v1.1