private void modelsFromGrid(Grid grid, double[][] heightMap)
	{
		for (int r = 0; r < grid.rows; r++)
		{
			for (int c = 0; c < grid.cols; c++)
			{
				Tile t = grid.getTile(r,c);
				for (BaseEntity en: t.occupants)
				{
					Group candidate = LevelManager.loadFromXML(EntityData.getUniqueModel(en.name), "partTexture", "colorTexture"+(int)en.owner.primaryBrickColor);
					moveCandidate(candidate, r, c);
					units.put(en, candidate);
				}
				if (t.improvement != null)
				{
					String texture = t.owner != null ? "colorTexture"+(int)t.improvement.owner.primaryBrickColor : "partTexture";
					Group candidate = LevelManager.loadFromXML(EntityData.getUniqueModel(t.improvement.name), "partTexture", texture);
					moveCandidate(candidate, r, c);
					improvements.put(t.improvement, candidate);
				}
				Group candidate = getResources(t);
				if (candidate != null)
				{
					resources.put(t, candidate);
					moveCandidate(candidate, r, c);
				}
				candidate = getFeatures(t);
				if (candidate != null)
				{
					features.put(t, candidate);
					moveCandidate(candidate, r, c);
				}
			}
		}
	}