public override void Remove(BroadPhaseEntry entry)
{
base.Remove(entry);
for (int i = 0; i < entries.Count; i++)
{
if (entries.Elements[i].item == entry)
{
var gridEntry = entries.Elements[i];
entries.RemoveAt(i);
//Remove the object from any cells that it is held by.
for (int j = gridEntry.previousMin.Y; j <= gridEntry.previousMax.Y; j++)
{
for (int k = gridEntry.previousMin.Z; k <= gridEntry.previousMax.Z; k++)
{
var index = new Int2 {Y = j, Z = k};
cellSet.Remove(ref index, gridEntry);
}
}
gridEntry.item = null;
entryPool.GiveBack(gridEntry);
return;
}
}
}