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
master
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);
for (std::vector<RemotePlayer *>::iterator i = m_players.begin();
i != m_players.end(); ++i) {
RemotePlayer *player = dynamic_cast<RemotePlayer *>(*i);
assert(player);
for (RemotePlayer *player : m_players) {
// Ignore disconnected players
if(player->peer_id == 0)
if (player->peer_id == 0)
continue;
// 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
*/
std::vector<v3s16> players_blockpos;
for (std::vector<RemotePlayer *>::iterator i = m_players.begin();
i != m_players.end(); ++i) {
RemotePlayer *player = dynamic_cast<RemotePlayer *>(*i);
assert(player);
for (RemotePlayer *player: m_players) {
// Ignore disconnected players
if (player->peer_id == 0)
continue;
@ -1204,9 +1196,8 @@ void ServerEnvironment::step(float dtime)
PlayerSAO *playersao = player->getPlayerSAO();
assert(playersao);
v3s16 blockpos = getNodeBlockPos(
floatToInt(playersao->getBasePosition(), BS));
players_blockpos.push_back(blockpos);
players_blockpos.push_back(
getNodeBlockPos(floatToInt(playersao->getBasePosition(), BS)));
}
/*
@ -1226,16 +1217,9 @@ void ServerEnvironment::step(float dtime)
// Convert active objects that are no more in active blocks to static
deactivateFarObjects(false);
for(std::set<v3s16>::iterator
i = blocks_removed.begin();
i != blocks_removed.end(); ++i) {
v3s16 p = *i;
/* infostream<<"Server: Block " << PP(p)
<< " became inactive"<<std::endl; */
for (const v3s16 &p: blocks_removed) {
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL)
if (!block)
continue;
// Set current time as timestamp (and let it set ChangedFlag)
@ -1246,21 +1230,14 @@ void ServerEnvironment::step(float dtime)
Handle added blocks
*/
for(std::set<v3s16>::iterator
i = blocks_added.begin();
i != blocks_added.end(); ++i)
{
v3s16 p = *i;
for (const v3s16 &p: blocks_added) {
MapBlock *block = m_map->getBlockOrEmerge(p);
if(block==NULL){
if (!block) {
m_active_blocks.m_list.erase(p);
continue;
}
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;
for(std::set<v3s16>::iterator
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;*/
for (const v3s16 &p: m_active_blocks.m_list) {
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block==NULL)
if (!block)
continue;
// Reset block usage timer
@ -1297,17 +1266,16 @@ void ServerEnvironment::step(float dtime)
MOD_REASON_BLOCK_EXPIRED);
// Run node timers
std::vector<NodeTimer> elapsed_timers =
block->m_node_timers.step((float)dtime);
std::vector<NodeTimer> elapsed_timers = block->m_node_timers.step(dtime);
if (!elapsed_timers.empty()) {
MapNode n;
for (std::vector<NodeTimer>::iterator i = elapsed_timers.begin();
i != elapsed_timers.end(); ++i) {
n = block->getNodeNoEx(i->position);
p = i->position + block->getPosRelative();
if (m_script->node_on_timer(p, n, i->elapsed)) {
v3s16 p2;
for (const NodeTimer &elapsed_timer: elapsed_timers) {
n = block->getNodeNoEx(elapsed_timer.position);
p2 = elapsed_timer.position + block->getPosRelative();
if (m_script->node_on_timer(p2, n, elapsed_timer.elapsed)) {
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))
do{ // breakable
if(m_active_block_interval_overload_skip > 0){
do { // breakable
if (m_active_block_interval_overload_skip > 0) {
ScopeProfiler sp(g_profiler, "SEnv: ABM overload skips");
m_active_block_interval_overload_skip--;
break;
@ -1327,17 +1295,9 @@ void ServerEnvironment::step(float dtime)
// Initialize handling of ActiveBlockModifiers
ABMHandler abmhandler(m_abms, m_cache_abm_interval, this, true);
for(std::set<v3s16>::iterator
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;*/
for (const v3s16 &p : m_active_blocks.m_list) {
MapBlock *block = m_map->getBlockNoCreateNoEx(p);
if(block == NULL)
if (!block)
continue;
// Set current time as timestamp
@ -1349,7 +1309,7 @@ void ServerEnvironment::step(float dtime)
u32 time_ms = timer.stop(true);
u32 max_time_ms = 200;
if(time_ms > max_time_ms){
if (time_ms > max_time_ms) {
warningstream<<"active block modifiers took "
<<time_ms<<"ms (longer than "
<<max_time_ms<<"ms)"<<std::endl;
@ -1401,8 +1361,7 @@ void ServerEnvironment::step(float dtime)
/*
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);
/*
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)
{
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()) {
u16 obj_id = (*it).second;
u16 obj_id = it->second;
ServerActiveObject *sao = getActiveObject(obj_id);
if (sao != NULL && remove_from_object) {
sao->detachParticleSpawner(id);

View File

@ -78,7 +78,7 @@ public:
/*
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; }
ServerEnvironment* getEnv(){ return m_env; }