FloatDistribution.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #pragma once
  2. #include "TypeRegistry.h"
  3. class Noise;
  4. class FloatDistribution : public Framework::ReferenceCounter
  5. {
  6. public:
  7. FloatDistribution();
  8. virtual ~FloatDistribution() = default;
  9. virtual float getValue(
  10. int x, int y, int z, int dimenstionId, Noise* zNoise) const
  11. = 0;
  12. };
  13. class ConstantFloatDistribution : public FloatDistribution
  14. {
  15. private:
  16. float value;
  17. public:
  18. ConstantFloatDistribution(float value);
  19. float getValue(
  20. int x, int y, int z, int dimenstionId, Noise* zNoise) const override;
  21. float getValue() const;
  22. };
  23. class ConstantFloatDistributionFactory
  24. : public SubTypeFactory<FloatDistribution, ConstantFloatDistribution>
  25. {
  26. public:
  27. ConstantFloatDistributionFactory();
  28. JSONObjectValidationBuilder* addToValidator(
  29. JSONObjectValidationBuilder* builder) const override;
  30. ConstantFloatDistribution* fromJson(
  31. Framework::JSON::JSONObject* zJson) const override;
  32. Framework::JSON::JSONObject* toJsonObject(
  33. ConstantFloatDistribution* zObject) const override;
  34. const char* getTypeToken() const override;
  35. };
  36. class EqualyDistributedFloatDistribution : public FloatDistribution
  37. {
  38. private:
  39. float minValue;
  40. float maxValue;
  41. public:
  42. EqualyDistributedFloatDistribution(float minValue, float maxValue);
  43. float getValue(
  44. int x, int y, int z, int dimenstionId, Noise* zNoise) const override;
  45. float getMinValue() const;
  46. float getMaxValue() const;
  47. };
  48. class EqualyDistributedFloatDistributionFactory
  49. : public SubTypeFactory<FloatDistribution,
  50. EqualyDistributedFloatDistribution>
  51. {
  52. public:
  53. EqualyDistributedFloatDistributionFactory();
  54. JSONObjectValidationBuilder* addToValidator(
  55. JSONObjectValidationBuilder* builder) const override;
  56. EqualyDistributedFloatDistribution* fromJson(
  57. Framework::JSON::JSONObject* zJson) const override;
  58. Framework::JSON::JSONObject* toJsonObject(
  59. EqualyDistributedFloatDistribution* zObject) const override;
  60. const char* getTypeToken() const override;
  61. };