ServerEnvironment::step: modernize loops

Use various ranged-based for loops in ServerEnvironment::step
Also set ServerObject::getBasePosition const to be compliant
ServerEnvironment::deleteParticleSpawner: use a const iterator
This commit is contained in:
Loic Blot 2017-08-11 09:57:27 +02:00
parent a4048e4e2e
commit bb1c711586
No known key found for this signature in database
GPG Key ID: EFAA458E8C153987
2 changed files with 28 additions and 69 deletions

View File

@ -1169,17 +1169,13 @@ void ServerEnvironment::step(float dtime)
*/ */
{ {
ScopeProfiler sp(g_profiler, "SEnv: handle players avg", SPT_AVG); ScopeProfiler sp(g_profiler, "SEnv: handle players avg", SPT_AVG);
for (std::vector<RemotePlayer *>::iterator i = m_players.begin(); for (RemotePlayer *player : m_players) {
i != m_players.end(); ++i) {
RemotePlayer *player = dynamic_cast<RemotePlayer *>(*i);
assert(player);
// Ignore disconnected players // Ignore disconnected players
if(player->peer_id == 0) if (player->peer_id == 0)
continue; continue;
// Move // Move
player->move(dtime, this, 100*BS); player->move(dtime, this, 100 * BS);
} }
} }
@ -1192,11 +1188,7 @@ void ServerEnvironment::step(float dtime)
Get player block positions Get player block positions
*/ */
std::vector<v3s16> players_blockpos; std::vector<v3s16> players_blockpos;
for (std::vector<RemotePlayer *>::iterator i = m_players.begin(); for (RemotePlayer *player: m_players) {
i != m_players.end(); ++i) {
RemotePlayer *player = dynamic_cast<RemotePlayer *>(*i);
assert(player);
// Ignore disconnected players // Ignore disconnected players
if (player->peer_id == 0) if (player->peer_id == 0)
continue; continue;
@ -1204,9 +1196,8 @@ void ServerEnvironment::step(float dtime)
PlayerSAO *playersao = player->getPlayerSAO(); PlayerSAO *playersao = player->getPlayerSAO();
assert(playersao); assert(playersao);
v3s16 blockpos = getNodeBlockPos( players_blockpos.push_back(
floatToInt(playersao->getBasePosition(), BS)); getNodeBlockPos(floatToInt(playersao->getBasePosition(), BS)));
players_blockpos.push_back(blockpos);
} }
/* /*
@ -1226,16 +1217,9 @@ void ServerEnvironment::step(float dtime)
// Convert active objects that are no more in active blocks to static // Convert active objects that are no more in active blocks to static
deactivateFarObjects(false); deactivateFarObjects(false);
for(std::set<v3s16>::iterator for (const v3s16 &p: blocks_removed) {
i = blocks_removed.begin();
i != blocks_removed.end(); ++i) {
v3s16 p = *i;
/* infostream<<"Server: Block " << PP(p)
<< " became inactive"<<std::endl; */
MapBlock *block = m_map->getBlockNoCreateNoEx(p); MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL) if (!block)
continue; continue;
// Set current time as timestamp (and let it set ChangedFlag) // Set current time as timestamp (and let it set ChangedFlag)
@ -1246,21 +1230,14 @@ void ServerEnvironment::step(float dtime)
Handle added blocks Handle added blocks
*/ */
for(std::set<v3s16>::iterator for (const v3s16 &p: blocks_added) {
i = blocks_added.begin();
i != blocks_added.end(); ++i)
{
v3s16 p = *i;
MapBlock *block = m_map->getBlockOrEmerge(p); MapBlock *block = m_map->getBlockOrEmerge(p);
if(block==NULL){ if (!block) {
m_active_blocks.m_list.erase(p); m_active_blocks.m_list.erase(p);
continue; continue;
} }
activateBlock(block); activateBlock(block);
/* infostream<<"Server: Block " << PP(p)
<< " became active"<<std::endl; */
} }
} }
@ -1272,17 +1249,9 @@ void ServerEnvironment::step(float dtime)
float dtime = m_cache_nodetimer_interval; float dtime = m_cache_nodetimer_interval;
for(std::set<v3s16>::iterator for (const v3s16 &p: m_active_blocks.m_list) {
i = m_active_blocks.m_list.begin();
i != m_active_blocks.m_list.end(); ++i)
{
v3s16 p = *i;
/*infostream<<"Server: Block ("<<p.X<<","<<p.Y<<","<<p.Z
<<") being handled"<<std::endl;*/
MapBlock *block = m_map->getBlockNoCreateNoEx(p); MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL) if (!block)
continue; continue;
// Reset block usage timer // Reset block usage timer
@ -1297,17 +1266,16 @@ void ServerEnvironment::step(float dtime)
MOD_REASON_BLOCK_EXPIRED); MOD_REASON_BLOCK_EXPIRED);
// Run node timers // Run node timers
std::vector<NodeTimer> elapsed_timers = std::vector<NodeTimer> elapsed_timers = block->m_node_timers.step(dtime);
block->m_node_timers.step((float)dtime);
if (!elapsed_timers.empty()) { if (!elapsed_timers.empty()) {
MapNode n; MapNode n;
for (std::vector<NodeTimer>::iterator i = elapsed_timers.begin(); v3s16 p2;
i != elapsed_timers.end(); ++i) { for (const NodeTimer &elapsed_timer: elapsed_timers) {
n = block->getNodeNoEx(i->position); n = block->getNodeNoEx(elapsed_timer.position);
p = i->position + block->getPosRelative(); p2 = elapsed_timer.position + block->getPosRelative();
if (m_script->node_on_timer(p, n, i->elapsed)) { if (m_script->node_on_timer(p2, n, elapsed_timer.elapsed)) {
block->setNodeTimer(NodeTimer( block->setNodeTimer(NodeTimer(
i->timeout, 0, i->position)); elapsed_timer.timeout, 0, elapsed_timer.position));
} }
} }
} }
@ -1315,8 +1283,8 @@ void ServerEnvironment::step(float dtime)
} }
if (m_active_block_modifier_interval.step(dtime, m_cache_abm_interval)) if (m_active_block_modifier_interval.step(dtime, m_cache_abm_interval))
do{ // breakable do { // breakable
if(m_active_block_interval_overload_skip > 0){ if (m_active_block_interval_overload_skip > 0) {
ScopeProfiler sp(g_profiler, "SEnv: ABM overload skips"); ScopeProfiler sp(g_profiler, "SEnv: ABM overload skips");
m_active_block_interval_overload_skip--; m_active_block_interval_overload_skip--;
break; break;
@ -1327,17 +1295,9 @@ void ServerEnvironment::step(float dtime)
// Initialize handling of ActiveBlockModifiers // Initialize handling of ActiveBlockModifiers
ABMHandler abmhandler(m_abms, m_cache_abm_interval, this, true); ABMHandler abmhandler(m_abms, m_cache_abm_interval, this, true);
for(std::set<v3s16>::iterator for (const v3s16 &p : m_active_blocks.m_list) {
i = m_active_blocks.m_list.begin();
i != m_active_blocks.m_list.end(); ++i)
{
v3s16 p = *i;
/*infostream<<"Server: Block ("<<p.X<<","<<p.Y<<","<<p.Z
<<") being handled"<<std::endl;*/
MapBlock *block = m_map->getBlockNoCreateNoEx(p); MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block == NULL) if (!block)
continue; continue;
// Set current time as timestamp // Set current time as timestamp
@ -1349,7 +1309,7 @@ void ServerEnvironment::step(float dtime)
u32 time_ms = timer.stop(true); u32 time_ms = timer.stop(true);
u32 max_time_ms = 200; u32 max_time_ms = 200;
if(time_ms > max_time_ms){ if (time_ms > max_time_ms) {
warningstream<<"active block modifiers took " warningstream<<"active block modifiers took "
<<time_ms<<"ms (longer than " <<time_ms<<"ms (longer than "
<<max_time_ms<<"ms)"<<std::endl; <<max_time_ms<<"ms)"<<std::endl;
@ -1401,8 +1361,7 @@ void ServerEnvironment::step(float dtime)
/* /*
Manage active objects Manage active objects
*/ */
if(m_object_management_interval.step(dtime, 0.5)) if (m_object_management_interval.step(dtime, 0.5)) {
{
ScopeProfiler sp(g_profiler, "SEnv: remove removed objs avg /.5s", SPT_AVG); ScopeProfiler sp(g_profiler, "SEnv: remove removed objs avg /.5s", SPT_AVG);
/* /*
Remove objects that satisfy (m_removed && m_known_by_count==0) Remove objects that satisfy (m_removed && m_known_by_count==0)
@ -1461,9 +1420,9 @@ u32 ServerEnvironment::addParticleSpawner(float exptime, u16 attached_id)
void ServerEnvironment::deleteParticleSpawner(u32 id, bool remove_from_object) void ServerEnvironment::deleteParticleSpawner(u32 id, bool remove_from_object)
{ {
m_particle_spawners.erase(id); m_particle_spawners.erase(id);
std::unordered_map<u32, u16>::iterator it = m_particle_spawner_attachments.find(id); const auto &it = m_particle_spawner_attachments.find(id);
if (it != m_particle_spawner_attachments.end()) { if (it != m_particle_spawner_attachments.end()) {
u16 obj_id = (*it).second; u16 obj_id = it->second;
ServerActiveObject *sao = getActiveObject(obj_id); ServerActiveObject *sao = getActiveObject(obj_id);
if (sao != NULL && remove_from_object) { if (sao != NULL && remove_from_object) {
sao->detachParticleSpawner(id); sao->detachParticleSpawner(id);

View File

@ -78,7 +78,7 @@ public:
/* /*
Some simple getters/setters Some simple getters/setters
*/ */
v3f getBasePosition(){ return m_base_position; } v3f getBasePosition() const { return m_base_position; }
void setBasePosition(v3f pos){ m_base_position = pos; } void setBasePosition(v3f pos){ m_base_position = pos; }
ServerEnvironment* getEnv(){ return m_env; } ServerEnvironment* getEnv(){ return m_env; }