StructureCollection.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #pragma once
  2. #include <functional>
  3. #include "GeneratorTemplate.h"
  4. #include "JsonExpression.h"
  5. #include "Noise.h"
  6. class StructureTemplateCollection : public virtual Framework::ReferenceCounter
  7. {
  8. private:
  9. Noise* activeNoise;
  10. Framework::JSON::JSONObject* activeNoiseConfig;
  11. Noise* structureNoise;
  12. Framework::JSON::JSONObject* structureNoiseConfig;
  13. double threshold;
  14. Framework::RCArray<GeneratorTemplate> structures;
  15. Framework::Vec3<int> minAffected;
  16. Framework::Vec3<int> maxAffected;
  17. JBoolExpression* condition;
  18. public:
  19. StructureTemplateCollection();
  20. ~StructureTemplateCollection();
  21. void initialize(JExpressionMemory* zMemory);
  22. void generateStructures(int x,
  23. int y,
  24. int z,
  25. int dimensionId,
  26. Framework::Vec3<int>& minPos,
  27. Framework::Vec3<int>& maxPos,
  28. Framework::RCArray<GeneratedStructure>* zResult);
  29. void setThreshold(double threshold);
  30. double getThreshold() const;
  31. void setCondition(JBoolExpression* condition);
  32. JBoolExpression* zCondition() const;
  33. void setActiveNoiseConfig(Framework::JSON::JSONObject* activeNoiseConfig);
  34. Framework::JSON::JSONObject* zActiveNoiseConfig() const;
  35. void setStructureNoiseConfig(
  36. Framework::JSON::JSONObject* structureNoiseConfig);
  37. Framework::JSON::JSONObject* zStructureNoiseConfig() const;
  38. void addStructure(GeneratorTemplate* structure);
  39. const Framework::RCArray<GeneratorTemplate>& getStructures() const;
  40. Framework::Vec3<int> getMinAffected() const;
  41. Framework::Vec3<int> getMaxAffected() const;
  42. };
  43. class StructureTemplateCollectionFactory
  44. : public ObjectTypeFactory<StructureTemplateCollection>
  45. {
  46. public:
  47. StructureTemplateCollectionFactory();
  48. StructureTemplateCollection* fromJson(
  49. Framework::JSON::JSONObject* zJson) const override;
  50. Framework::JSON::JSONObject* toJsonObject(
  51. StructureTemplateCollection* zObject) const override;
  52. JSONObjectValidationBuilder* addToValidator(
  53. JSONObjectValidationBuilder* builder) const override;
  54. };