X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Femerge.h;h=1653199ecbb15d5f59fb83b4c79b7cfab3a79d59;hb=3444dec2db30b8aa8a4e9c268fdba2f84b870ce3;hp=458a366fc803a87515ac850293445be70f1d905a;hpb=4e1f50035e860a00636ca5d804c267119df99601;p=minetest.git diff --git a/src/emerge.h b/src/emerge.h index 458a366fc..1653199ec 100644 --- a/src/emerge.h +++ b/src/emerge.h @@ -23,32 +23,28 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include "irr_v3d.h" #include "util/container.h" -#include "map.h" // for ManualMapVoxelManipulator - -#define MGPARAMS_SET_MGNAME 1 -#define MGPARAMS_SET_SEED 2 -#define MGPARAMS_SET_WATER_LEVEL 4 -#define MGPARAMS_SET_FLAGS 8 +#include "mapgen.h" // for MapgenParams +#include "map.h" #define BLOCK_EMERGE_ALLOWGEN (1<<0) #define EMERGE_DBG_OUT(x) \ - { if (enable_mapgen_debug_info) \ - infostream << "EmergeThread: " x << std::endl; } + do { \ + if (enable_mapgen_debug_info) \ + infostream << "EmergeThread: " x << std::endl; \ + } while (0) class EmergeThread; -class Mapgen; -struct MapgenParams; -struct MapgenFactory; -class Biome; -class BiomeDefManager; -class Decoration; -class Ore; class INodeDefManager; class Settings; +class BiomeManager; +class OreManager; +class DecorationManager; +class SchematicManager; + struct BlockMakeData { - ManualMapVoxelManipulator *vmanip; + MMVManip *vmanip; u64 seed; v3s16 blockpos_min; v3s16 blockpos_max; @@ -70,63 +66,55 @@ struct BlockEmergeData { u8 flags; }; -class IBackgroundBlockEmerger -{ -public: - virtual bool enqueueBlockEmerge(u16 peer_id, v3s16 p, - bool allow_generate) = 0; -}; - -class EmergeManager : public IBackgroundBlockEmerger { +class EmergeManager { public: INodeDefManager *ndef; - std::map mglist; - std::vector mapgen; std::vector emergethread; - + + bool threads_active; + //settings - MapgenParams *params; + MapgenParams params; bool mapgen_debug_info; u16 qlimit_total; u16 qlimit_diskonly; u16 qlimit_generate; - - MapgenParams *luaoverride_params; - u32 luaoverride_params_modified; - u32 luaoverride_flagmask; - - //block emerge queue data structures + + u32 gen_notify_on; + std::set gen_notify_on_deco_ids; + + //// Block emerge queue data structures JMutex queuemutex; std::map blocks_enqueued; std::map peer_queue_count; - //Mapgen-related structures - BiomeDefManager *biomedef; - std::vector ores; - std::vector decorations; + //// Managers of map generation-related components + BiomeManager *biomemgr; + OreManager *oremgr; + DecorationManager *decomgr; + SchematicManager *schemmgr; + //// Methods EmergeManager(IGameDef *gamedef); ~EmergeManager(); - void initMapgens(MapgenParams *mgparams); + void loadMapgenParams(); + static MapgenSpecificParams *createMapgenParams(const std::string &mgname); + void initMapgens(); Mapgen *getCurrentMapgen(); - Mapgen *createMapgen(std::string mgname, int mgid, - MapgenParams *mgparams); - MapgenParams *createMapgenParams(std::string mgname); - void triggerAllThreads(); + Mapgen *createMapgen(const std::string &mgname, int mgid, + MapgenParams *mgparams); + static void getMapgenNames(std::list &mgnames); + void startThreads(); + void stopThreads(); bool enqueueBlockEmerge(u16 peer_id, v3s16 p, bool allow_generate); - - void registerMapgen(std::string name, MapgenFactory *mgfactory); - MapgenParams *getParamsFromSettings(Settings *settings); - void setParamsToSettings(Settings *settings); - + //mapgen helper methods Biome *getBiomeAtPoint(v3s16 p); int getGroundLevelAtPoint(v2s16 p); bool isBlockUnderground(v3s16 blockpos); - u32 getBlockSeed(v3s16 p); }; #endif