#include "mapgen_math.h"
-class EmergeThread : public SimpleThread
+class EmergeThread : public JThread
{
public:
Server *m_server;
std::queue<v3s16> blockqueue;
EmergeThread(Server *server, int ethreadid):
- SimpleThread(),
+ JThread(),
m_server(server),
map(NULL),
emerge(NULL),
mapgen(NULL),
+ enable_mapgen_debug_info(false),
id(ethreadid)
{
}
void *Thread();
-
- void trigger()
- {
- setRun(true);
- if(IsRunning() == false)
- {
- Start();
- }
- }
-
bool popBlockEmerge(v3s16 *pos, u8 *flags);
bool getBlockOrStartGen(v3s16 p, MapBlock **b,
BlockMakeData *data, bool allow_generate);
EmergeManager::EmergeManager(IGameDef *gamedef) {
//register built-in mapgens
- registerMapgen("v6", new MapgenFactoryV6());
- registerMapgen("v7", new MapgenFactoryV7());
- registerMapgen("indev", new MapgenFactoryIndev());
+ registerMapgen("v6", new MapgenFactoryV6());
+ registerMapgen("v7", new MapgenFactoryV7());
+ registerMapgen("indev", new MapgenFactoryIndev());
registerMapgen("singlenode", new MapgenFactorySinglenode());
- registerMapgen("math", new MapgenFactoryMath());
+ registerMapgen("math", new MapgenFactoryMath());
this->ndef = gamedef->getNodeDefManager();
this->biomedef = new BiomeDefManager();
EmergeManager::~EmergeManager() {
for (unsigned int i = 0; i != emergethread.size(); i++) {
- emergethread[i]->setRun(false);
+ emergethread[i]->Stop();
emergethread[i]->qevent.signal();
- emergethread[i]->stop();
+ emergethread[i]->Wait();
delete emergethread[i];
delete mapgen[i];
}
}
-void EmergeManager::triggerAllThreads() {
+void EmergeManager::startAllThreads() {
for (unsigned int i = 0; i != emergethread.size(); i++)
- emergethread[i]->trigger();
+ emergethread[i]->Start();
}
mapgen = emerge->mapgen[id];
enable_mapgen_debug_info = emerge->mapgen_debug_info;
- while (getRun())
+ while (!StopRequested())
try {
if (!popBlockEmerge(&p, &flags)) {
qevent.wait();