void Sweep(int segment)
{
int intervalLength = entries.Count / sweepSegmentCount;
int end;
if (segment == sweepSegmentCount - 1)
end = entries.Count;
else
end = intervalLength * (segment + 1);
for (int i = intervalLength * segment; i < end; i++)
{
BoundingBox a = entries.Elements[i].boundingBox;
for (int j = i + 1; j < entries.Count && a.Max.X >= entries.Elements[j].boundingBox.Min.X; j++)
{
if (!(a.Min.Y > entries.Elements[j].boundingBox.Max.Y || a.Max.Y < entries.Elements[j].boundingBox.Min.Y ||
a.Min.Z > entries.Elements[j].boundingBox.Max.Z || a.Max.Z < entries.Elements[j].boundingBox.Min.Z))
{
TryToAddOverlap(entries.Elements[i], entries.Elements[j]);
}
}
}
}