private Vector see(Vector dis, SimulationEntity otherObject){

        double len = dis.getLength();

        //We only act on what's in range of vision
        if(len > 0 && len <= Constants.maxVision){

            //First we normalize the vector to get the direction
            dis.normalize();

            if (otherObject.isPlant()) {
            	dis.scale(gen.getPlantAttraction());
            }
            else if (otherObject.isBacteria()) {
            	if (!otherObject.isDying()) {

            		//We classify depending on whether their aggression is above or below zero. 
            		//For example at 0.2 aggression we classify as 80% omnivore, 20% carnivore 
            		
                    //If the bacteria is exactly an omnivore
            		if (otherObject.getGenetics().getAggression() == 0) {
            			dis.scale(gen.getOmnivoreAttraction());
                    //If leans towards herbivore
            		} else if (otherObject.getGenetics().getAggression() < 0){
            			dis.scale(gen.getHerbivoreAttraction() * -otherObject.getGenetics().getAggression() + gen.getOmnivoreAttraction() * (1 + otherObject.getGenetics().getAggression()));
                    //If leans toward carnivore
            		} else if (otherObject.getGenetics().getAggression() > 0){
                        dis.scale(gen.getCarnivoreAttraction() * otherObject.getGenetics().getAggression() + gen.getOmnivoreAttraction() * (1 - otherObject.getGenetics().getAggression()));
                    }
            	} else {
            		dis.scale(gen.getDyingAttraction());
            	}
            }

            //We make sure that vectors further away are less important
            dis.scale(1 / Math.pow(len, 0.8));

            return dis;
        }
        else{
            return new Vector(0, 0);
        }
    }