using EcsRx.Entities;
using EcsRx.Systems;
namespace EcsRx.Plugins.ReactiveSystems.Systems
{
///
/// Setup systems are run ONCE when an entity joins a given group,
/// there is also some additional logic around handling predicates so if
/// an entity matches a group BUT it has a predicate that is not met, the entity
/// will be monitored and when the entity matches the group and the predicate
/// passes it will then run the setup.
///
///
/// If the entity leaves the group and re-joins it will re-trigger the setup
/// method on there so keep this in mind, and just because components match
/// if there is a predicate that doesn't match then it wont be run until it
/// does match.
///
public interface ISetupSystem : ISystem
{
///
/// The logic run when the entity needs setting up
///
/// The entity to setup
void Setup(IEntity entity);
}
}