public void proccess(MatrixGraph graph) {
		if (monsters <= 0)
			return;
		long currentTime = System.currentTimeMillis();
		if (currentTime - lastSpaw > spawRate) {
			int half = GameConfig.TILE_WIDTH / 2;
			int halfSize = half * GameConfig.TILE_SIZE;
			int halfUtil = (halfSize - (5 * GameConfig.TILE_SIZE));
			int tilesUtil = 5 * GameConfig.TILE_SIZE;
			for (int i = 0; i < monstersPerSpaw; i++) {
				Vector2D pos = new Vector2D(0, halfUtil
						+ rdm.nextInt(tilesUtil));
				Vector2D target = new Vector2D(GameConfig.MAP_WIDTH - 20,
						halfUtil + rdm.nextInt(tilesUtil));
				Monster toAdd = monster.createMonster(pos, target, graph,
						level, bossLvl);
				toAdd.setDirection(toAdd.getPosition());
				toAdd.remakePath();

				TDGame.getInstance().getPiecesManager().add(toAdd);
				monsters--;
			}
			lastSpaw = currentTime;
		}
	}