using System.Collections.Generic;
namespace Chernobyl.Mathematics.Collision
{
///
/// An and
/// that can check for collisions with many different objects. This collision
/// group builds a collision graph for optimized collision detection. Each
/// held within this group must be derive from
/// .
///
/// The type of
/// being held
/// within this .
/// This ICollidable type must derive from .
/// The type that will
/// be passed in to check for collisions against the
/// instances contained within
/// this .
public interface ICollidableEnumerable
: IEnumerable, IExtendedCollidable
where TContainedCollidable : IExtendedCollidable
{
///
/// Returns an that can be iterated
/// over to collect the objects that are colliding with the passed in
/// . Note this method should never
/// pre-compute the collisions. It should return an
/// that returns an
/// that checks for collisions as it
/// iterates.
///
/// The to check
/// against for collisions.
/// The that can be iterated over
/// to get the s that are being collided
/// against.
IEnumerable GetCollidables(TCollider collidable);
}
}