#ifndef WORLD_WORLDGENERATORS_HPP_ #define WORLD_WORLDGENERATORS_HPP_ #include "../voxels/WorldGenerator.hpp" #include "../content/Content.hpp" #include #include #include typedef WorldGenerator* (*gen_constructor) (const Content*); class WorldGenerators { static inline std::map generators; public: template static void addGenerator(std::string id); static std::vector getGeneratorsIDs(); static std::string getDefaultGeneratorID(); static std::unique_ptr createGenerator( std::string id, const Content* content ); }; template void WorldGenerators::addGenerator(std::string id) { generators[id] = [] (const Content* content) { return (WorldGenerator*) new T(content); }; } #endif /* WORLD_WORLDGENERATORS_HPP_ */