private void CheckCollisions(Entity e)
{
foreach (object o in BoxCollidesWith)
{
if (o is EntityPool)
{
foreach (Entity collEnt in ((EntityPool)o).Entities)
{
if (!collEnt.Active) continue;
if (collEnt == e) continue;
Rectangle intersect = Rectangle.Intersect(e.HitBox, collEnt.HitBox);
if (intersect.IsEmpty) continue;
e.OnBoxCollision(collEnt, intersect);
}
}
if (o is Entity)
{
Entity collEnt = (Entity)o;
if (!collEnt.Active) continue;
if (collEnt == e) continue;
Rectangle intersect = Rectangle.Intersect(e.HitBox, collEnt.HitBox);
if (intersect.IsEmpty) continue;
e.OnBoxCollision(collEnt, intersect);
collEnt.OnBoxCollision(e, intersect);
}
}
foreach (object o in PolyCollidesWith)
{
if (o is EntityPool)
{
foreach (Entity collEnt in ((EntityPool)o).Entities)
{
if (!collEnt.Active) continue;
if (collEnt == e) continue;
bool collides = false;
foreach (Vector2 vector2 in e.HitPolyPoints)
if (Helper.IsPointInShape(vector2, collEnt.HitPolyPoints)) collides = true;
if (!collides) continue;
e.OnPolyCollision(collEnt);
}
}
if (o is Entity)
{
Entity collEnt = (Entity)o;
if (!collEnt.Active) continue;
if (collEnt == e) continue;
bool collides = false;
foreach (Vector2 vector2 in e.HitPolyPoints)
if (Helper.IsPointInShape(vector2, collEnt.HitPolyPoints)) collides = true;
if (!collides) continue;
e.OnPolyCollision(collEnt);
collEnt.OnPolyCollision(e);
}
}
}