Skip to content

Commit

Permalink
Add a setting for max loop count per step in liquid update
Browse files Browse the repository at this point in the history
  • Loading branch information
PilzAdam committed Jun 20, 2013
1 parent c2cdace commit b1ebd9f
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
8 changes: 7 additions & 1 deletion minetest.conf.example
Expand Up @@ -93,11 +93,17 @@
#new_style_water = false
# Constant volume liquids
#liquid_finite = false
# Max liquids processed per step
#liquid_loop_max = 1000
# Update liquids every .. recommend for finite: 0.2
#liquid_update = 1.0
# When finite liquid: relax flowing blocks to source if level near max and N nearby source blocks, more realistic, but not true constant. values: 0,1,2,3,4 : 0 - disable, 1 - most aggresive
# Relax flowing blocks to source if level near max and N nearby
# source blocks, more realistic, but not true constant.
# values: 0,1,2,3,4 : 0 - disable, 1 - most aggresive
# (for finite liquids)
#liquid_relax = 2
# Optimization: faster cave flood (and not true constant)
# (for finite liquids)
#liquid_fast_flood = 1
# Underground water and lava springs, its infnity sources if liquid_finite enabled
#underground_springs = 1
Expand Down
1 change: 1 addition & 0 deletions src/defaultsettings.cpp
Expand Up @@ -209,6 +209,7 @@ void set_default_settings(Settings *settings)

//liquid stuff
settings->setDefault("liquid_finite", "false");
settings->setDefault("liquid_loop_max", "1000");
settings->setDefault("liquid_update", "1.0");
settings->setDefault("liquid_relax", "2");
settings->setDefault("liquid_fast_flood", "1");
Expand Down
8 changes: 6 additions & 2 deletions src/map.cpp
Expand Up @@ -1651,10 +1651,12 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
// List of MapBlocks that will require a lighting update (due to lava)
std::map<v3s16, MapBlock*> lighting_modified_blocks;

u16 loop_max = g_settings->getU16("liquid_loop_max");

while (m_transforming_liquid.size() > 0)
{
// This should be done here so that it is done when continue is used
if (loopcount >= initial_size || loopcount >= 1000)
if (loopcount >= initial_size || loopcount >= loop_max)
break;
loopcount++;
/*
Expand Down Expand Up @@ -1993,10 +1995,12 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks)
// List of MapBlocks that will require a lighting update (due to lava)
std::map<v3s16, MapBlock*> lighting_modified_blocks;

u16 loop_max = g_settings->getU16("liquid_loop_max");

while(m_transforming_liquid.size() != 0)
{
// This should be done here so that it is done when continue is used
if(loopcount >= initial_size || loopcount >= 10000)
if(loopcount >= initial_size || loopcount >= loop_max)
break;
loopcount++;

Expand Down

0 comments on commit b1ebd9f

Please sign in to comment.