示例#1
0
 public ElevationHelper smooth(List <Center> centers, int passes)
 {
     for (int i = 0; i < passes; i++)
     {
         ElevationFunctions.smooth(centers);
     }
     return(this);
 }
示例#2
0
 public ElevationHelper erode(List <Corner> corners)
 {
     updateCornerElevations(corners);
     ElevationUtils.calculateDownslopes(corners);
     ElevationUtils.calculateMoisture(corners);
     ElevationFunctions.performWaterErosion(corners);
     return(this);
 }
示例#3
0
        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);
        }
示例#4
0
 /**
  *              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);
 }
示例#5
0
 public ElevationHelper normalise()
 {
     ElevationFunctions.normalise(coords);
     return(this);
 }
示例#6
0
 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);
 }
示例#7
0
 /**
  *              Smaller scale = less detailed noise.
  */
 public ElevationHelper noise(float scale, float height)
 {
     ElevationFunctions.addNoise(coords, random, scale, height);
     cornersUpToDate = false;
     return(this);
 }
示例#8
0
 public ElevationHelper mound(float x, float y, float height, float radius)
 {
     ElevationFunctions.addBump(centerPos, size, coords, radius, height, x * size, y * size);
     return(this);
 }