protected void setScale(ModelInfo objInfo, BasicModelData obj) { double scaleX = randomizeDouble(objInfo.getScaleSettings().getMinX(), objInfo.getScaleSettings().getMaxX()); if (objInfo.getScaleSettings().isEqual()) { obj.setScale(scaleX, scaleX, scaleX); } else { obj.setScale( scaleX, randomizeDouble( objInfo.getScaleSettings().getMinY(), objInfo.getScaleSettings().getMaxY()), randomizeDouble( objInfo.getScaleSettings().getMinZ(), objInfo.getScaleSettings().getMaxZ())); } }
protected void correctPosition( BasicModelData obj, PositionSettings pos, List<HeightInfo> positions) { double xVar = xRatio; double zVar = zRatio; double x = obj.getX(); double z = obj.getZ(); if (!positions.isEmpty() || collisionTree != null) { HeightInfo actual = new HeightInfo(obj.getX(), 0, obj.getZ()); HeightInfo nearest = new HeightInfo(Double.MAX_VALUE, 0, Double.MAX_VALUE); if (!positions.isEmpty()) { nearest = findNearest(positions, actual, nearest); x = nearest.getX(); z = nearest.getZ(); } if (collisionTree != null) { actual.setSx(obj.getSx()); actual.setSz(obj.getSz()); TreeNode place = collisionTree.findPlace(actual); if (place != null) { x = place.getMid()[0]; z = place.getMid()[1]; double nodeRange = place.getRange(); xVar = nodeRange + 1 - actual.getSx(); zVar = nodeRange + 1 - actual.getSz(); TreeNode.mark(place); } else { collisionDetected = true; } } } obj.setX(x + randomizeDouble(-xVar, xVar)); obj.setZ(z + randomizeDouble(-zVar, zVar)); correctPosition(obj, pos); }
protected void setRotation(ModelInfo objInfo, BasicModelData obj) { obj.setRotation( randomizeDouble( objInfo.getRotationSettings().getMinX(), objInfo.getRotationSettings().getMaxX()), randomizeDouble( objInfo.getRotationSettings().getMinY(), objInfo.getRotationSettings().getMaxY()), randomizeDouble( objInfo.getRotationSettings().getMinZ(), objInfo.getRotationSettings().getMaxZ())); }
protected void setPosition( PositionSettings pos, List<HeightInfo> heights, BasicModelData obj, int heightPos) { HeightInfo height = heights.get(heightPos); obj.setPosition( height.getX() + randomizeDouble(-xRatio, xRatio), randomizeDouble(pos.getMinY(), pos.getMaxY()), height.getZ() + randomizeDouble(-zRatio, zRatio)); correctPosition(obj, pos, heights); }
protected void correctPosition(BasicModelData obj, PositionSettings pos) { if (obj.getX() > pos.getMaxX()) { obj.setX(pos.getMaxX() - randomizeDouble(0, xRatio)); } if (obj.getX() < pos.getMinX()) { obj.setX(pos.getMinX() + randomizeDouble(0, xRatio)); } if (obj.getZ() > pos.getMaxZ()) { obj.setZ(pos.getMaxZ() - randomizeDouble(0, zRatio)); } if (obj.getZ() < pos.getMinZ()) { obj.setZ(pos.getMinZ() + randomizeDouble(0, zRatio)); } }