FloatDistribution.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #include "FloatDistribution.h"
  2. #include "Noise.h"
  3. FloatDistribution::FloatDistribution()
  4. : Framework::ReferenceCounter()
  5. {}
  6. ConstantFloatDistribution::ConstantFloatDistribution(float value)
  7. : FloatDistribution(),
  8. value(value)
  9. {}
  10. float ConstantFloatDistribution::getValue(
  11. int x, int y, int z, int dimenstionId, Noise* zNoise) const
  12. {
  13. return value;
  14. }
  15. float ConstantFloatDistribution::getValue() const
  16. {
  17. return value;
  18. }
  19. ConstantFloatDistributionFactory::ConstantFloatDistributionFactory()
  20. : SubTypeFactory()
  21. {}
  22. JSONObjectValidationBuilder* ConstantFloatDistributionFactory::addToValidator(
  23. JSONObjectValidationBuilder* builder) const
  24. {
  25. return builder->withRequiredNumber("value")->finishNumber();
  26. }
  27. ConstantFloatDistribution* ConstantFloatDistributionFactory::fromJson(
  28. Framework::JSON::JSONObject* zJson) const
  29. {
  30. return new ConstantFloatDistribution(
  31. (float)zJson->zValue("value")->asNumber()->getNumber());
  32. }
  33. Framework::JSON::JSONObject* ConstantFloatDistributionFactory::toJsonObject(
  34. ConstantFloatDistribution* zObject) const
  35. {
  36. Framework::JSON::JSONObject* zJson = new Framework::JSON::JSONObject();
  37. zJson->addValue(
  38. "value", new Framework::JSON::JSONNumber(zObject->getValue()));
  39. return zJson;
  40. }
  41. const char* ConstantFloatDistributionFactory::getTypeToken() const
  42. {
  43. return "constant";
  44. }
  45. EqualyDistributedFloatDistribution::EqualyDistributedFloatDistribution(
  46. float minValue, float maxValue)
  47. : FloatDistribution(),
  48. minValue(minValue),
  49. maxValue(maxValue)
  50. {}
  51. float EqualyDistributedFloatDistribution::getValue(
  52. int x, int y, int z, int dimenstionId, Noise* zNoise) const
  53. {
  54. return zNoise->getNoise((float)z, (float)x, (float)y)
  55. * (maxValue - minValue)
  56. + minValue;
  57. }
  58. float EqualyDistributedFloatDistribution::getMinValue() const
  59. {
  60. return minValue;
  61. }
  62. float EqualyDistributedFloatDistribution::getMaxValue() const
  63. {
  64. return maxValue;
  65. }
  66. EqualyDistributedFloatDistributionFactory::
  67. EqualyDistributedFloatDistributionFactory()
  68. : SubTypeFactory()
  69. {}
  70. JSONObjectValidationBuilder*
  71. EqualyDistributedFloatDistributionFactory::addToValidator(
  72. JSONObjectValidationBuilder* builder) const
  73. {
  74. return builder->withRequiredNumber("minValue")
  75. ->finishNumber()
  76. ->withRequiredNumber("maxValue")
  77. ->finishNumber();
  78. }
  79. EqualyDistributedFloatDistribution*
  80. EqualyDistributedFloatDistributionFactory::fromJson(
  81. Framework::JSON::JSONObject* zJson) const
  82. {
  83. return new EqualyDistributedFloatDistribution(
  84. (float)zJson->zValue("minValue")->asNumber()->getNumber(),
  85. (float)zJson->zValue("maxValue")->asNumber()->getNumber());
  86. }
  87. Framework::JSON::JSONObject*
  88. EqualyDistributedFloatDistributionFactory::toJsonObject(
  89. EqualyDistributedFloatDistribution* zObject) const
  90. {
  91. Framework::JSON::JSONObject* zJson = new Framework::JSON::JSONObject();
  92. zJson->addValue(
  93. "minValue", new Framework::JSON::JSONNumber(zObject->getMinValue()));
  94. zJson->addValue(
  95. "maxValue", new Framework::JSON::JSONNumber(zObject->getMaxValue()));
  96. return zJson;
  97. }
  98. const char* EqualyDistributedFloatDistributionFactory::getTypeToken() const
  99. {
  100. return "equalyDistributed";
  101. }