X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Femerge.h;h=b4c8e9ffd43f7281ae11f3999fff23693f84548d;hb=9e4e7072da8f565eef37da7558053a436b9cbba3;hp=458a366fc803a87515ac850293445be70f1d905a;hpb=4e1f50035e860a00636ca5d804c267119df99601;p=oweals%2Fminetest.git diff --git a/src/emerge.h b/src/emerge.h index 458a366fc..b4c8e9ffd 100644 --- a/src/emerge.h +++ b/src/emerge.h @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irr_v3d.h" #include "util/container.h" #include "map.h" // for ManualMapVoxelManipulator +#include "mapgen.h" // for MapgenParams #define MGPARAMS_SET_MGNAME 1 #define MGPARAMS_SET_SEED 2 @@ -37,9 +38,8 @@ with this program; if not, write to the Free Software Foundation, Inc., infostream << "EmergeThread: " x << std::endl; } class EmergeThread; -class Mapgen; -struct MapgenParams; -struct MapgenFactory; +//class Mapgen; +//struct MapgenFactory; class Biome; class BiomeDefManager; class Decoration; @@ -70,33 +70,26 @@ 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; - + + u32 gennotify; + //block emerge queue data structures JMutex queuemutex; std::map blocks_enqueued; @@ -110,18 +103,20 @@ public: EmergeManager(IGameDef *gamedef); ~EmergeManager(); - void initMapgens(MapgenParams *mgparams); + void loadMapgenParams(); + void initMapgens(); Mapgen *getCurrentMapgen(); Mapgen *createMapgen(std::string mgname, int mgid, MapgenParams *mgparams); - MapgenParams *createMapgenParams(std::string mgname); - void triggerAllThreads(); + MapgenSpecificParams *createMapgenParams(std::string mgname); + 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); - + void loadParamsFromSettings(Settings *settings); + void saveParamsToSettings(Settings *settings); + //mapgen helper methods Biome *getBiomeAtPoint(v3s16 p); int getGroundLevelAtPoint(v2s16 p);