public ElevationHelper smooth(List <Center> centers, int passes) { for (int i = 0; i < passes; i++) { ElevationFunctions.smooth(centers); } return(this); }
public ElevationHelper erode(List <Corner> corners) { updateCornerElevations(corners); ElevationUtils.calculateDownslopes(corners); ElevationUtils.calculateMoisture(corners); ElevationFunctions.performWaterErosion(corners); return(this); }
public ElevationHelper applyFeatures(List <ElevationFeature> features) { foreach (var feature in features) { int iterations = feature.getIterations(random); foreach (var i in Enumerable.Range(0, iterations)) { Vector2 offset = feature.getOffsetVector(random); switch (feature.feature) { case ElevationFeature.FeatureType.RADIAL_GRADIENT: linearRadialGradient(offset.x, offset.y, feature.getHeight(random), feature.getRadius(random)); break; case ElevationFeature.FeatureType.NOISE: noise(feature.noiseScale, feature.getHeight(random)); break; case ElevationFeature.FeatureType.POSITION_BIASED_NOISE: radialNoise(offset.x, offset.y, feature.getRadius(random), feature.noiseScale, feature.getHeight(random)); break; case ElevationFeature.FeatureType.SMOOTH: ElevationFunctions.smooth(centers); break; case ElevationFeature.FeatureType.MOUND: mound(offset.x, offset.y, feature.getHeight(random), feature.getRadius(random)); break; case ElevationFeature.FeatureType.PLATEAU: plateau(offset.x, offset.y, feature.getHeight(random), feature.getRadius(random)); break; case ElevationFeature.FeatureType.CRATER: crater(offset.x, offset.y, feature.getRadius(random)); break; } } } return(this); }
/** * radius, x and y are normalised to map size */ public ElevationHelper linearRadialGradient(float x, float y, float height, float radius) { ElevationFunctions.addCone(coords, radius, x * size, y * size, height); cornersUpToDate = false; return(this); }
public ElevationHelper normalise() { ElevationFunctions.normalise(coords); return(this); }
public ElevationHelper radialNoise(float x, float y, float radius, float scale, float height) { Debug.Log($"radialNoise({x}, {y})"); ElevationFunctions.addRadialWeightedNoise(new Vector3(x * size, 0, y * size), radius, coords, random, scale, height); return(this); }
/** * Smaller scale = less detailed noise. */ public ElevationHelper noise(float scale, float height) { ElevationFunctions.addNoise(coords, random, scale, height); cornersUpToDate = false; return(this); }
public ElevationHelper mound(float x, float y, float height, float radius) { ElevationFunctions.addBump(centerPos, size, coords, radius, height, x * size, y * size); return(this); }