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

LSLKeyTest
UbitUmarov 2016-08-19 17:57:19 +01:00
parent 52afd8588d
commit e734d526fc
2 changed files with 3 additions and 8 deletions

View File

@ -2780,13 +2780,6 @@ namespace OpenSim.Region.Framework.Scenes
else
group.StopScriptInstances();
List<ScenePresence> avatars = group.GetSittingAvatars();
foreach (ScenePresence av in avatars)
{
if(av.ParentUUID == UUID.Zero)
av.StandUp();
}
SceneObjectPart[] partList = group.Parts;
foreach (SceneObjectPart part in partList)

View File

@ -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<uint> { part.LocalId });
//direct enqueue another delayed kill
avatar.ControllingClient.SendEntityUpdate(part,PrimUpdateFlags.Kill);
}
}
}