From e734d526fce393195355c964fef53c2eff95302e Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 19 Aug 2016 17:57:19 +0100 Subject: [PATCH] on object delete send a direct kill and a delayed one via updates queue, Until we find why some are missing, (if its not by udp nature). also remove redundant avatar stands --- OpenSim/Region/Framework/Scenes/Scene.cs | 7 ------- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 4 +++- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index d5dbcaf7d1..7b1b3c9772 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2780,13 +2780,6 @@ namespace OpenSim.Region.Framework.Scenes else group.StopScriptInstances(); - List avatars = group.GetSittingAvatars(); - foreach (ScenePresence av in avatars) - { - if(av.ParentUUID == UUID.Zero) - av.StandUp(); - } - SceneObjectPart[] partList = group.Parts; foreach (SceneObjectPart part in partList) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index df6a1cf00f..573cfe372b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -2078,7 +2078,7 @@ namespace OpenSim.Region.Framework.Scenes Scene.ForEachScenePresence(delegate(ScenePresence avatar) { - if (!avatar.IsChildAgent && avatar.ParentID == LocalId) + if (!avatar.IsChildAgent && avatar.ParentID == LocalId && avatar.ParentUUID == UUID.Zero) avatar.StandUp(); if (!silent) @@ -2092,6 +2092,8 @@ namespace OpenSim.Region.Framework.Scenes { // Send a kill object immediately avatar.ControllingClient.SendKillObject(new List { part.LocalId }); + //direct enqueue another delayed kill + avatar.ControllingClient.SendEntityUpdate(part,PrimUpdateFlags.Kill); } } }