Skip to content

Commit 89f7dc1

Browse files
committedFeb 9, 2014
ServerEnvironment: Remove direct dependency on EmergeManager
1 parent a0683b8 commit 89f7dc1

File tree

6 files changed

+27
-24
lines changed

6 files changed

+27
-24
lines changed
 

‎src/emerge.h

+1-9
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,7 @@ struct BlockEmergeData {
7070
u8 flags;
7171
};
7272

73-
class IBackgroundBlockEmerger
74-
{
75-
public:
76-
virtual bool enqueueBlockEmerge(u16 peer_id, v3s16 p,
77-
bool allow_generate) = 0;
78-
virtual ~IBackgroundBlockEmerger() {}
79-
};
80-
81-
class EmergeManager : public IBackgroundBlockEmerger {
73+
class EmergeManager {
8274
public:
8375
INodeDefManager *ndef;
8476

‎src/environment.cpp

+2-7
Original file line numberDiff line numberDiff line change
@@ -312,12 +312,10 @@ void ActiveBlockList::update(std::list<v3s16> &active_positions,
312312
*/
313313

314314
ServerEnvironment::ServerEnvironment(ServerMap *map,
315-
GameScripting *scriptIface,
316-
IGameDef *gamedef, IBackgroundBlockEmerger *emerger):
315+
GameScripting *scriptIface, IGameDef *gamedef):
317316
m_map(map),
318317
m_script(scriptIface),
319318
m_gamedef(gamedef),
320-
m_emerger(emerger),
321319
m_random_spawn_timer(3),
322320
m_send_recommended_timer(0),
323321
m_active_block_interval_overload_skip(0),
@@ -1148,11 +1146,8 @@ void ServerEnvironment::step(float dtime)
11481146
{
11491147
v3s16 p = *i;
11501148

1151-
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
1149+
MapBlock *block = m_map->getBlockOrEmerge(p);
11521150
if(block==NULL){
1153-
// Block needs to be fetched first
1154-
m_emerger->enqueueBlockEmerge(
1155-
PEER_ID_INEXISTENT, p, false);
11561151
m_active_blocks.m_list.erase(p);
11571152
continue;
11581153
}

‎src/environment.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ class ActiveBlockModifier;
4444
class ServerActiveObject;
4545
class ITextureSource;
4646
class IGameDef;
47-
class IBackgroundBlockEmerger;
4847
class Map;
4948
class ServerMap;
5049
class ClientMap;
@@ -194,8 +193,7 @@ class ServerEnvironment : public Environment
194193
{
195194
public:
196195
ServerEnvironment(ServerMap *map, GameScripting *scriptIface,
197-
IGameDef *gamedef,
198-
IBackgroundBlockEmerger *emerger);
196+
IGameDef *gamedef);
199197
~ServerEnvironment();
200198

201199
Map & getMap();
@@ -367,8 +365,6 @@ class ServerEnvironment : public Environment
367365
GameScripting* m_script;
368366
// Game definition
369367
IGameDef *m_gamedef;
370-
// Background block emerger (the EmergeManager, in practice)
371-
IBackgroundBlockEmerger *m_emerger;
372368
// Active object list
373369
std::map<u16, ServerActiveObject*> m_active_objects;
374370
// Outgoing network message buffer for active objects

‎src/map.cpp

+14-2
Original file line numberDiff line numberDiff line change
@@ -3126,7 +3126,9 @@ MapBlock * ServerMap::emergeBlock(v3s16 p, bool create_blank)
31263126

31273127
return block;
31283128
}
3129-
/*if(allow_generate)
3129+
3130+
#if 0
3131+
if(allow_generate)
31303132
{
31313133
std::map<v3s16, MapBlock*> modified_blocks;
31323134
MapBlock *block = generateBlock(p, modified_blocks);
@@ -3149,11 +3151,21 @@ MapBlock * ServerMap::emergeBlock(v3s16 p, bool create_blank)
31493151

31503152
return block;
31513153
}
3152-
}*/
3154+
}
3155+
#endif
31533156

31543157
return NULL;
31553158
}
31563159

3160+
MapBlock *ServerMap::getBlockOrEmerge(v3s16 p3d)
3161+
{
3162+
MapBlock *block = getBlockNoCreateNoEx(p3d);
3163+
if (block == NULL)
3164+
m_emerge->enqueueBlockEmerge(PEER_ID_INEXISTENT, p3d, false);
3165+
3166+
return block;
3167+
}
3168+
31573169
void ServerMap::prepareBlock(MapBlock *block) {
31583170
ServerEnvironment *senv = &((Server *)m_gamedef)->getEnv();
31593171

‎src/map.h

+8
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,14 @@ class ServerMap : public Map
424424
*/
425425
MapBlock * emergeBlock(v3s16 p, bool create_blank=true);
426426

427+
/*
428+
Try to get a block.
429+
If it does not exist in memory, add it to the emerge queue.
430+
- Memory
431+
- Emerge Queue (deferred disk or generate)
432+
*/
433+
MapBlock *getBlockOrEmerge(v3s16 p3d);
434+
427435
// Carries out any initialization necessary before block is sent
428436
void prepareBlock(MapBlock *block);
429437

‎src/server.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ Server::Server(
343343

344344
// Initialize Environment
345345
ServerMap *servermap = new ServerMap(path_world, this, m_emerge);
346-
m_env = new ServerEnvironment(servermap, m_script, this, m_emerge);
346+
m_env = new ServerEnvironment(servermap, m_script, this);
347347

348348
m_clients.setEnv(m_env);
349349

0 commit comments

Comments
 (0)
Please sign in to comment.