mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 02:05:34 +08:00
Make SendKillObject send multiple localIDs in one packet. This avoids the
halting visual behavior of large group deletes and eliminates the packet flood
This commit is contained in:
@@ -947,7 +947,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
|
||||
|
||||
}
|
||||
|
||||
public void SendKillObject(ulong regionHandle, uint localID)
|
||||
public void SendKillObject(ulong regionHandle, List<uint> localID)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -259,9 +259,10 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
|
||||
// I thought that the DeleteGroup() function would handle all of this, but it doesn't. I'm not sure WHAT it handles.
|
||||
((SceneObjectGroup)scene.Entities[uuid]).DetachFromBackup();
|
||||
scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor);
|
||||
scene.SendKillObject(scene.Entities[uuid].LocalId);
|
||||
scene.SendKillObject(new List<uint>() { scene.Entities[uuid].LocalId });
|
||||
scene.SceneGraph.DeleteSceneObject(uuid, false);
|
||||
((SceneObjectGroup)scene.Entities[uuid]).DeleteGroupFromScene(false);
|
||||
scene.SendKillObject(new List<uint>() { ((SceneObjectGroup)scene.Entities[uuid]).LocalId });
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
|
||||
@@ -175,7 +175,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
|
||||
//This is important because we are not IN any database.
|
||||
//m_Entity.FakeDeleteGroup();
|
||||
foreach (SceneObjectPart part in m_Entity.Parts)
|
||||
client.SendKillObject(m_Entity.RegionHandle, part.LocalId);
|
||||
client.SendKillObject(m_Entity.RegionHandle, new List<uint>() { part.LocalId });
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -187,7 +187,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement
|
||||
{
|
||||
m_Entity.Scene.ForEachClient(
|
||||
delegate(IClientAPI controller)
|
||||
{ controller.SendKillObject(m_Entity.RegionHandle, part.LocalId); }
|
||||
{ controller.SendKillObject(m_Entity.RegionHandle, new List<uint>() { part.LocalId }); }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -519,7 +519,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||
|
||||
}
|
||||
|
||||
public virtual void SendKillObject(ulong regionHandle, uint localID)
|
||||
public virtual void SendKillObject(ulong regionHandle, List<uint> localID)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -386,7 +386,7 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
|
||||
m_scene.ForEachClient(delegate(IClientAPI controller)
|
||||
{
|
||||
controller.SendKillObject(m_scene.RegionInfo.RegionHandle,
|
||||
selectedTree.LocalId);
|
||||
new List<uint>() { selectedTree.LocalId });
|
||||
});
|
||||
}
|
||||
else
|
||||
@@ -727,7 +727,7 @@ namespace OpenSim.Region.OptionalModules.World.TreePopulator
|
||||
m_scene.ForEachClient(delegate(IClientAPI controller)
|
||||
{
|
||||
controller.SendKillObject(m_scene.RegionInfo.RegionHandle,
|
||||
selectedTree.LocalId);
|
||||
new List<uint>() { selectedTree.LocalId });
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user