package kernel; import rescuecore2.config.Config; import rescuecore2.worldmodel.Entity; import rescuecore2.worldmodel.WorldModel; import rescuecore2.worldmodel.ChangeSet; /** Implementations of this interface are responsible for determining what entities/properties each agent can see. */ public interface Perception { /** Initialise this perception object. @param config The kernel configuration. @param world The world model. */ void initialise(Config config, WorldModel<? extends Entity> world); /** Determine what Entities are visible to a particular agent. The returned Entities should be copies of Entities in the ground-truth WorldModel. Only visible properties should have defined values. @param agent The agent that is perceiving the world. @return A collection of entities that the agent can perceive. */ ChangeSet getVisibleEntities(AgentProxy agent); /** Notify this perception object of the current time. @param timestep The current timestep. */ void setTime(int timestep); }