<<"("<<blockpos.X<<","<<blockpos.Y<<","<<blockpos.Z<<")"
<<std::endl;
- s16 chunksize = 2;
- v3s16 blockpos_div = getContainerPos(blockpos, chunksize);
+ s16 chunksize = 3;
+ v3s16 chunk_offset(-1,-1,-1);
+ v3s16 blockpos_div = getContainerPos(blockpos - chunk_offset, chunksize);
v3s16 blockpos_min = blockpos_div * chunksize;
v3s16 blockpos_max = blockpos_div * chunksize + v3s16(1,1,1)*(chunksize-1);
+ blockpos_min += chunk_offset;
+ blockpos_max += chunk_offset;
// Do nothing if not inside limits (+-1 because of neighbors)
if(blockpos_over_limit(blockpos_min - v3s16(1,1,1)) ||
Update lighting
*/
{
+#if 0
TimeTaker t("finishBlockMake lighting update");
core::map<v3s16, MapBlock*> lighting_update_blocks;
}
updateLighting(lighting_update_blocks, changed_blocks);
+#endif
/*
Set lighting to non-expired state in all of them.
getBlockNoCreateNoEx(p)->setLightingExpired(false);
}
+#if 0
if(enable_mapgen_debug_info == false)
t.stop(true); // Hide output
+#endif
}
// Center blocks
#include "nodedef.h"
#include "content_mapnode.h" // For content_mapnode_get_new_name
#include "voxelalgorithms.h"
+#include "profiler.h"
+#include "main.h" // For g_profiler
namespace mapgen
{
/*
Calculate lighting
*/
+ {
+ ScopeProfiler sp(g_profiler, "EmergeThread: mapgen lighting update",
+ SPT_AVG);
+ VoxelArea a(node_min, node_max);
+ enum LightBank banks[2] = {LIGHTBANK_DAY, LIGHTBANK_NIGHT};
+ for(int i=0; i<2; i++)
+ {
+ enum LightBank bank = banks[i];
+
+ core::map<v3s16, bool> light_sources;
+ core::map<v3s16, u8> unlight_from;
+
+ voxalgo::clearLightAndCollectSources(vmanip, a, bank, ndef,
+ light_sources, unlight_from);
+
+ // TODO: Get this from elsewhere
+ bool inexistent_top_provides_sunlight = true;
+ voxalgo::SunlightPropagateResult res = voxalgo::propagateSunlight(
+ vmanip, a, inexistent_top_provides_sunlight,
+ light_sources, ndef);
+ // TODO: Do stuff according to bottom_sunlight_valid
+
+ vmanip.unspreadLight(bank, unlight_from, light_sources, ndef);
+ vmanip.spreadLight(bank, light_sources, ndef);
+ }
+ }
}
BlockMakeData::BlockMakeData():