public List<GeneratedObject> generate(GenerationInfo info) { long time = System.currentTimeMillis(); int collisionsValue = info.getArgs().get(Consts.COLLISIONS).intValue(); collisions = collisionsValue == 1 ? true : false; Dimension mapDimensions = Mediator.getMapDimensions(); if (mapDimensions == null) { WindowUtil.displayError(PropertiesKeys.NO_HEIGHTMAP); return new ArrayList<>(); } if (collisions) { collisionTree = TreeNode.createTree( Mediator.getMapWidth(), Mediator.getMapHeight(), (short) (Math.log(mapDimensions.getWidth()) / Math.log(2))); } xRatio = Mediator.getMapWidth() / mapDimensions.width; zRatio = Mediator.getMapHeight() / mapDimensions.height; yRatio = Mediator.getMapMaxYSetting() / Mediator.getMapMaxY(); HeightInfo.setThreshold((xRatio + zRatio) / 2.0); List<GeneratedObject> result = generationMethod(info); Mediator.updateModels(result); time = System.currentTimeMillis() - time; System.out.println("Time used: " + time + " ms."); time /= 1000F; collisionTree = null; int size = result.size(); if (collisionDetected) { collisionDetected = false; WindowUtil.displayError(PropertiesKeys.COLLISION, size, time); } else { if (size > 0) { WindowUtil.displayInfo(PropertiesKeys.RESULT, size, time); } else { WindowUtil.displayError(PropertiesKeys.NO_RESULT); } } return result; }