StructureCollection.h 2.0 KB

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