EntityGenerator.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include <Vec3.h>
  3. #include "TypeRegistry.h"
  4. class EntityType;
  5. class Entity;
  6. class JBoolExpression;
  7. class JExpressionMemory;
  8. class Noise;
  9. class EntityGeneratorFactory;
  10. class EntityGenerator : public Framework::ReferenceCounter
  11. {
  12. private:
  13. Noise* noise;
  14. Framework::JSON::JSONObject* noiseConfig;
  15. double threshold;
  16. const EntityType* zType;
  17. JBoolExpression* condition;
  18. public:
  19. EntityGenerator();
  20. ~EntityGenerator();
  21. void initialize(JExpressionMemory* zMemory);
  22. bool isGenerated(int x, int y, int z, int dimensionId);
  23. Entity* generate(Framework::Vec3<float> pos, int dimesnionId);
  24. friend EntityGeneratorFactory;
  25. };
  26. class EntityGeneratorFactory : public ObjectTypeFactory<EntityGenerator>
  27. {
  28. public:
  29. EntityGeneratorFactory();
  30. EntityGenerator* fromJson(
  31. Framework::JSON::JSONObject* zJson) const override;
  32. Framework::JSON::JSONObject* toJsonObject(
  33. EntityGenerator* zObject) const override;
  34. JSONObjectValidationBuilder* addToValidator(
  35. JSONObjectValidationBuilder* builder) const override;
  36. };