mirror of
https://github.com/moparisthebest/minetest
synced 2024-11-11 20:05:05 -05:00
ABM and liquid overload skip
This commit is contained in:
parent
98ff4eb4ee
commit
1d44a98f2f
@ -326,6 +326,7 @@ ServerEnvironment::ServerEnvironment(ServerMap *map, lua_State *L,
|
|||||||
m_emerger(emerger),
|
m_emerger(emerger),
|
||||||
m_random_spawn_timer(3),
|
m_random_spawn_timer(3),
|
||||||
m_send_recommended_timer(0),
|
m_send_recommended_timer(0),
|
||||||
|
m_active_block_interval_overload_skip(0),
|
||||||
m_game_time(0),
|
m_game_time(0),
|
||||||
m_game_time_fraction_counter(0)
|
m_game_time_fraction_counter(0)
|
||||||
{
|
{
|
||||||
@ -1095,7 +1096,12 @@ void ServerEnvironment::step(float dtime)
|
|||||||
|
|
||||||
const float abm_interval = 1.0;
|
const float abm_interval = 1.0;
|
||||||
if(m_active_block_modifier_interval.step(dtime, abm_interval))
|
if(m_active_block_modifier_interval.step(dtime, abm_interval))
|
||||||
{
|
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;
|
||||||
|
}
|
||||||
ScopeProfiler sp(g_profiler, "SEnv: modify in blocks avg /1s", SPT_AVG);
|
ScopeProfiler sp(g_profiler, "SEnv: modify in blocks avg /1s", SPT_AVG);
|
||||||
TimeTaker timer("modify in active blocks");
|
TimeTaker timer("modify in active blocks");
|
||||||
|
|
||||||
@ -1128,8 +1134,9 @@ void ServerEnvironment::step(float dtime)
|
|||||||
infostream<<"WARNING: active block modifiers took "
|
infostream<<"WARNING: 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;
|
||||||
|
m_active_block_interval_overload_skip = (time_ms / max_time_ms) + 1;
|
||||||
}
|
}
|
||||||
}
|
}while(0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Step script environment (run global on_step())
|
Step script environment (run global on_step())
|
||||||
|
@ -360,6 +360,7 @@ private:
|
|||||||
IntervalLimiter m_active_blocks_management_interval;
|
IntervalLimiter m_active_blocks_management_interval;
|
||||||
IntervalLimiter m_active_block_modifier_interval;
|
IntervalLimiter m_active_block_modifier_interval;
|
||||||
IntervalLimiter m_active_blocks_nodemetadata_interval;
|
IntervalLimiter m_active_blocks_nodemetadata_interval;
|
||||||
|
int m_active_block_interval_overload_skip;
|
||||||
// Time from the beginning of the game in seconds.
|
// Time from the beginning of the game in seconds.
|
||||||
// Incremented in step().
|
// Incremented in step().
|
||||||
u32 m_game_time;
|
u32 m_game_time;
|
||||||
|
@ -1636,7 +1636,7 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
|
|||||||
while(m_transforming_liquid.size() != 0)
|
while(m_transforming_liquid.size() != 0)
|
||||||
{
|
{
|
||||||
// This should be done here so that it is done when continue is used
|
// This should be done here so that it is done when continue is used
|
||||||
if(loopcount >= initial_size * 3)
|
if(loopcount >= initial_size || loopcount >= 1000)
|
||||||
break;
|
break;
|
||||||
loopcount++;
|
loopcount++;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user