private void step() {
		for(int x = 0; x < Globals.width; x++){
			for(int y = 0; y < Globals.height; y++){
				float waterAmmount = 0.0f;
				for(int[] neighbor : HexagonUtils.neighborTiles(x, y, true)){
					//waterAmmount += Globals.water.getGroundWaterLevel(neighbor[0], neighbor[1]);
					for(NeedsControlled nc : NeedsController.getNeed("Water")){
						waterAmmount += nc.getNeed(new Needs("Water", 1.0f), neighbor[0], neighbor[1]);
					}
				}
				//-((x-3.5)^2)/6.125+1.0 = exponential, ranging from -1 to 1, with center i 3.5. This asumes that waterAmmount ranges from 0 to 7
				float grassGrowth = (float) (-(Math.pow(waterAmmount-3.5f, 2))/6.125f+1.0f);
				if(grassGrowth > 0.0f){
					float sunIntensity = 0.0f;
					for(NeedsControlled nc : NeedsController.getNeed("SunLight")){
						sunIntensity += nc.getNeed(new Needs("SunLight", 1.0f), x, y);
					}
					grassGrowth *= sunIntensity;
				}
				grassLevel[x][y] += grassGrowth*Globals.getSetting("Grass growth rate", "Grass");
				
				if(grassLevel[x][y] > 1.0f)
					grassLevel[x][y] = 1.0f;
				else if(grassLevel[x][y] < 0.0f)
					grassLevel[x][y] = 0.0f;
			}
		}
	}