Orientation.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <ReferenceCounter.h>
  3. #include <Vec3.h>
  4. #include "Area.h"
  5. #include "TypeRegistry.h"
  6. class Block;
  7. class Chunk;
  8. class BlockFilter;
  9. class OrientationConfig : public virtual Framework::ReferenceCounter
  10. {
  11. public:
  12. OrientationConfig();
  13. virtual Direction calculateOrientation(
  14. Framework::Vec3<int> pos, int dimensionId, Chunk* zChunk) const
  15. = 0;
  16. };
  17. class AttachToNeighborOrientationConfig : public OrientationConfig
  18. {
  19. private:
  20. Directions validDirections;
  21. BlockFilter* filter;
  22. public:
  23. AttachToNeighborOrientationConfig();
  24. ~AttachToNeighborOrientationConfig();
  25. Direction calculateOrientation(Framework::Vec3<int> pos,
  26. int dimensionId,
  27. Chunk* zChunk) const override;
  28. void setValidDirections(Directions validDirections);
  29. Directions getValidDirections() const;
  30. void setFilter(BlockFilter* filter);
  31. BlockFilter* zFilter() const;
  32. };
  33. class AttachToNeighborOrientationConfigFactory
  34. : public SubTypeFactory<OrientationConfig,
  35. AttachToNeighborOrientationConfig>
  36. {
  37. public:
  38. AttachToNeighborOrientationConfigFactory();
  39. AttachToNeighborOrientationConfig* fromJson(
  40. Framework::JSON::JSONObject* zJson) const override;
  41. Framework::JSON::JSONObject* toJsonObject(
  42. AttachToNeighborOrientationConfig* zObject) const override;
  43. JSONObjectValidationBuilder* addToValidator(
  44. JSONObjectValidationBuilder* builder) const override;
  45. const char* getTypeToken() const override;
  46. };