worldGeneratorSettings.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #pragma once
  2. #include <FastNoiseSIMD.h>
  3. #include <splines.h>
  4. #include <string>
  5. struct NoiseSetting
  6. {
  7. float scale = 0.35;
  8. int type = FastNoiseSIMD::NoiseType::SimplexFractal;
  9. float frequency = 0.015;
  10. int octaves = 3;
  11. int perturbFractalOctaves = 0;
  12. float power = 1;
  13. Spline spline;
  14. std::string saveSettings(int tabs, bool saveSpline = true);
  15. void sanitize();
  16. };
  17. struct WorldGeneratorSettings
  18. {
  19. int seed = 1234;
  20. NoiseSetting continentalnessNoiseSettings;
  21. NoiseSetting peaksAndValies;
  22. NoiseSetting oceansAndTerases;
  23. NoiseSetting stone3Dnoise;
  24. NoiseSetting humidityNoise;
  25. NoiseSetting temperatureNoise;
  26. NoiseSetting spagettiNoise;
  27. Spline peaksAndValiesContributionSpline;
  28. Spline oceansAndTerasesContributionSpline;
  29. NoiseSetting vegetationNoise;
  30. float densityBias = 0.1;
  31. float densityBiasPower = 1;
  32. float spagettiBias = 0.1;
  33. float spagettiBiasPower = 1;
  34. std::string saveSettings();
  35. void sanitize();
  36. bool loadSettings(const char *data);
  37. };
  38. struct WorldGenerator
  39. {
  40. FastNoiseSIMD *continentalnessNoise;
  41. Spline continentalSplines;
  42. float continentalPower = 1.f;
  43. FastNoiseSIMD *peaksValiesNoise;
  44. Spline peaksValiesSplines;
  45. Spline peaksValiesContributionSplines;
  46. float peaksValiesPower = 1.f;
  47. FastNoiseSIMD *oceansAndTerasesNoise;
  48. Spline oceansAndTerasesSplines;
  49. Spline oceansAndTerasesContributionSplines;
  50. float oceansAndTerasesPower = 1.f;
  51. FastNoiseSIMD *stone3Dnoise;
  52. Spline stone3DnoiseSplines;
  53. float stone3Dpower = 1.f;
  54. float densityBias = 0.1;
  55. float densityBiasPower = 1;
  56. FastNoiseSIMD *spagettiNoise;
  57. Spline spagettiNoiseSplines;
  58. float spagettiNoisePower = 1.f;
  59. float spagettiNoiseBias = 0.1;
  60. float spagettiNoiseBiasPower = 1;
  61. FastNoiseSIMD *temperatureNoise;
  62. Spline temperatureSplines;
  63. float temperaturePower = 1.f;
  64. FastNoiseSIMD *humidityNoise;
  65. Spline humiditySplines;
  66. float humidityPower = 1.f;
  67. FastNoiseSIMD *vegetationNoise;
  68. float vegetationPower = 1;
  69. Spline vegetationSplines;
  70. FastNoiseSIMD *whiteNoise;
  71. FastNoiseSIMD *whiteNoise2;
  72. void init();
  73. void clear();
  74. void applySettings(WorldGeneratorSettings &s);
  75. };