mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-02 16:38:41 +00:00
Add emerge.cpp, initial EmergeThread changes
- Neatly placed all emerge related code into a new file, emerge.cpp - Greatly cleaned up the code in EmergeThread::Thread() - Reworked Emerge queue. Now an actual std::queue of v3s16 block positions - Removed the completely unnecessary map of peer ids requesting blocks
This commit is contained in:
parent
6d0ea26c2d
commit
b9d8e59bbf
12 changed files with 886 additions and 560 deletions
39
src/server.h
39
src/server.h
|
@ -39,6 +39,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
#include "rollback_interface.h" // Needed for rollbackRevertActions()
|
||||
#include <list> // Needed for rollbackRevertActions()
|
||||
|
||||
#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
|
||||
|
||||
struct LuaState;
|
||||
typedef struct lua_State lua_State;
|
||||
class IWritableItemDefManager;
|
||||
|
@ -47,6 +49,7 @@ class IWritableCraftDefManager;
|
|||
class EventManager;
|
||||
class PlayerSAO;
|
||||
class IRollbackManager;
|
||||
class EmergeManager;
|
||||
|
||||
class ServerError : public std::exception
|
||||
{
|
||||
|
@ -120,11 +123,9 @@ public:
|
|||
If it is, update the peer to it and quit.
|
||||
*/
|
||||
core::list<QueuedBlockEmerge*>::Iterator i;
|
||||
for(i=m_queue.begin(); i!=m_queue.end(); i++)
|
||||
{
|
||||
for(i=m_queue.begin(); i!=m_queue.end(); i++) {
|
||||
QueuedBlockEmerge *q = *i;
|
||||
if(q->pos == pos)
|
||||
{
|
||||
if (q->pos == pos) {
|
||||
q->peer_ids[peer_id] = flags;
|
||||
return;
|
||||
}
|
||||
|
@ -136,7 +137,7 @@ public:
|
|||
*/
|
||||
QueuedBlockEmerge *q = new QueuedBlockEmerge;
|
||||
q->pos = pos;
|
||||
if(peer_id != 0)
|
||||
if (peer_id != 0)
|
||||
q->peer_ids[peer_id] = flags;
|
||||
m_queue.push_back(q);
|
||||
}
|
||||
|
@ -200,30 +201,6 @@ public:
|
|||
void * Thread();
|
||||
};
|
||||
|
||||
class EmergeThread : public SimpleThread
|
||||
{
|
||||
Server *m_server;
|
||||
|
||||
public:
|
||||
|
||||
EmergeThread(Server *server):
|
||||
SimpleThread(),
|
||||
m_server(server)
|
||||
{
|
||||
}
|
||||
|
||||
void * Thread();
|
||||
|
||||
void trigger()
|
||||
{
|
||||
setRun(true);
|
||||
if(IsRunning() == false)
|
||||
{
|
||||
Start();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
struct PlayerInfo
|
||||
{
|
||||
u16 id;
|
||||
|
@ -785,9 +762,9 @@ private:
|
|||
// The server mainly operates in this thread
|
||||
ServerThread m_thread;
|
||||
// This thread fetches and generates map
|
||||
EmergeThread m_emergethread;
|
||||
//EmergeThread m_emergethread;
|
||||
// Queue of block coordinates to be processed by the emerge thread
|
||||
BlockEmergeQueue m_emerge_queue;
|
||||
//BlockEmergeQueue m_emerge_queue;
|
||||
|
||||
/*
|
||||
Time related stuff
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue