protected void KillObjectHandler(object sender, PacketReceivedEventArgs e)
{
if (e.Simulator.Handle != Client.Network.CurrentSim.Handle) return;
if (InvokeRequired)
{
if (IsHandleCreated)
{
BeginInvoke(new MethodInvoker(() => KillObjectHandler(sender, e)));
}
return;
}
KillObjectPacket kill = (KillObjectPacket)e.Packet;
lock (Prims)
{
for (int i = 0; i < kill.ObjectData.Length; i++)
{
uint id = kill.ObjectData[i].ID;
if (Prims.ContainsKey(id))
{
Prims[id].Dispose();
Prims.Remove(id);
}
}
}
lock (Avatars)
{
for (int i = 0; i < kill.ObjectData.Length; i++)
{
uint id = kill.ObjectData[i].ID;
if (Avatars.ContainsKey(id))
{
Avatars[id].Dispose();
Avatars.Remove(id);
}
}
}
}