001package net.minecraft.entity.ai;
002
003import java.util.ArrayList;
004import java.util.List;
005import net.minecraft.entity.Entity;
006import net.minecraft.entity.EntityLiving;
007
008public 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}