001 package net.minecraft.entity.ai;
002
003 import java.util.ArrayList;
004 import java.util.List;
005 import net.minecraft.entity.Entity;
006 import net.minecraft.entity.EntityLiving;
007
008 public class EntitySenses
009 {
010 EntityLiving entityObj;
011
012 /** Cache of entities which we can see */
013 List seenEntities = new ArrayList();
014
015 /** Cache of entities which we cannot see */
016 List unseenEntities = new ArrayList();
017
018 public EntitySenses(EntityLiving par1EntityLiving)
019 {
020 this.entityObj = par1EntityLiving;
021 }
022
023 /**
024 * Clears canSeeCachePositive and canSeeCacheNegative.
025 */
026 public void clearSensingCache()
027 {
028 this.seenEntities.clear();
029 this.unseenEntities.clear();
030 }
031
032 /**
033 * Checks, whether 'our' entity can see the entity given as argument (true) or not (false), caching the result.
034 */
035 public boolean canSee(Entity par1Entity)
036 {
037 if (this.seenEntities.contains(par1Entity))
038 {
039 return true;
040 }
041 else if (this.unseenEntities.contains(par1Entity))
042 {
043 return false;
044 }
045 else
046 {
047 this.entityObj.worldObj.theProfiler.startSection("canSee");
048 boolean var2 = this.entityObj.canEntityBeSeen(par1Entity);
049 this.entityObj.worldObj.theProfiler.endSection();
050
051 if (var2)
052 {
053 this.seenEntities.add(par1Entity);
054 }
055 else
056 {
057 this.unseenEntities.add(par1Entity);
058 }
059
060 return var2;
061 }
062 }
063 }