#pragma once #include <Thread.h> #include <Critical.h> #include "DimensionGenerator.h" #include "Area.h" class WorldGenerator : public Framework::Thread { private: Framework::Critical cs; Framework::Array<Area> requestQueue; bool exit; int seed; public: WorldGenerator(int seed); ~WorldGenerator(); void thread() override; void requestGeneration(Area request); void exitAndWait(); Framework::Either<Block*, int> generateSingleBlock(Framework::Vec3<int> location, int dimensionId); };