mirror of
https://github.com/bdnugget/freeminer.git
synced 2026-11-07 06:57:27 +00:00
lights
This commit is contained in:
1 parent
31daddf463
commit
02eac66b44
3 files changed
+31
-24
No files matched your search
@@ -3,23 +3,26 @@
|
||||
#include <future>
|
||||
#include <memory>
|
||||
#include "client.h"
|
||||
#include "fm_far_calc.h"
|
||||
#include "client/mapblock_mesh.h"
|
||||
#include "clientmap.h"
|
||||
#include "emerge.h"
|
||||
#include "filesys.h"
|
||||
#include "fm_far_calc.h"
|
||||
#include "fm_weather.h"
|
||||
#include "fm_world_merge.h"
|
||||
#include "irr_v3d.h"
|
||||
#include "log.h"
|
||||
#include "mapblock.h"
|
||||
#include "network/fm_networkprotocol.h"
|
||||
#include "server.h"
|
||||
#include "filesys.h"
|
||||
#include "map.h"
|
||||
#include "mapblock.h"
|
||||
#include "mapgen/mapgen.h"
|
||||
#include "network/fm_networkprotocol.h"
|
||||
#include "network/networkpacket.h"
|
||||
#include "server.h"
|
||||
#include "threading/lock.h"
|
||||
#include "util/directiontables.h"
|
||||
#include <atomic>
|
||||
#include <exception>
|
||||
#include <memory>
|
||||
|
||||
void Client::updateMeshTimestampWithEdge(const v3bpos_t &blockpos)
|
||||
{
|
||||
|
||||
+15
-16
@@ -66,8 +66,8 @@ WorldMerger::~WorldMerger()
|
||||
merge_changed();
|
||||
}
|
||||
|
||||
void WorldMerger::merge_one_block(MapDatabase *dbase, MapDatabase *dbase_up,
|
||||
const v3bpos_t &bpos_aligned, block_step_t step)
|
||||
WorldMerger::one_block_stat_t WorldMerger::merge_one_block(MapDatabase *dbase,
|
||||
MapDatabase *dbase_up, const v3bpos_t &bpos_aligned, block_step_t step)
|
||||
{
|
||||
const auto step_pow = 1;
|
||||
const auto step_size = 1 << step_pow;
|
||||
@@ -111,7 +111,7 @@ void WorldMerger::merge_one_block(MapDatabase *dbase, MapDatabase *dbase_up,
|
||||
// actionstream << "s=" << step <<" at=" << block_up->getActualTimestamp() << " t=" << block_up->getTimestamp() << " myts=" << timestamp << "\n";
|
||||
const auto up_ts = block_up->getActualTimestamp();
|
||||
if (timestamp < up_ts + lazy_up) {
|
||||
return;
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -229,10 +229,8 @@ void WorldMerger::merge_one_block(MapDatabase *dbase, MapDatabase *dbase_up,
|
||||
}
|
||||
}
|
||||
// TODO: skip full air;
|
||||
|
||||
one_block_stat_t one_step_stat;
|
||||
if (farlights) {
|
||||
size_t lights_count = 0;
|
||||
// size_t lights_used = 0;
|
||||
constexpr auto some_magick_thinner_const = 2; // more -> less far ligts
|
||||
constexpr auto min_no_skip_ligts =
|
||||
2; // do not skip this amount lights on block << farstep
|
||||
@@ -244,24 +242,25 @@ void WorldMerger::merge_one_block(MapDatabase *dbase, MapDatabase *dbase_up,
|
||||
// TODO: apply some smart? filtering here
|
||||
// block_up->m_light_points.insert(block->m_light_points.begin(), block->m_light_points.end());
|
||||
for (const auto &lp : block->m_light_points) {
|
||||
++lights_count;
|
||||
++one_step_stat.lights_count;
|
||||
++lights_in_block;
|
||||
if (lights_in_block > (min_no_skip_ligts << step) &&
|
||||
(lights_count % (some_magick_thinner_const * (16 - lp.second)))) {
|
||||
(one_step_stat.lights_count %
|
||||
(some_magick_thinner_const * (16 - lp.second)))) {
|
||||
continue;
|
||||
}
|
||||
//++lights_used;
|
||||
++one_step_stat.lights_used;
|
||||
block_up->m_light_points.emplace(lp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!not_empty_nodes) {
|
||||
return;
|
||||
if (not_empty_nodes) {
|
||||
block_up->setGenerated(true);
|
||||
ServerMap::saveBlock(block_up.get(), dbase_up, m_map_compression_level);
|
||||
}
|
||||
|
||||
block_up->setGenerated(true);
|
||||
ServerMap::saveBlock(block_up.get(), dbase_up, m_map_compression_level);
|
||||
return one_step_stat;
|
||||
}
|
||||
|
||||
bool WorldMerger::merge_one_step(
|
||||
@@ -300,7 +299,7 @@ bool WorldMerger::merge_one_step(
|
||||
size_t processed = 0;
|
||||
|
||||
const auto time_start = porting::getTimeMs();
|
||||
|
||||
WorldMerger::one_block_stat_t statz;
|
||||
const auto printstat = [&]() {
|
||||
const auto time = porting::getTimeMs();
|
||||
|
||||
@@ -310,6 +309,7 @@ bool WorldMerger::merge_one_step(
|
||||
<< blocks_size
|
||||
//<< " blocks loaded " << m_server->getMap().m_blocks.size()
|
||||
<< " processed " << processed << " per " << (time - time_start) / 1000
|
||||
<< " lights" << statz.lights_used << "/" << statz.lights_count
|
||||
<< " speed " << processed / (((time - time_start) / 1000) ?: 1)
|
||||
<< '\n';
|
||||
};
|
||||
@@ -337,8 +337,7 @@ bool WorldMerger::merge_one_step(
|
||||
g_profiler->add("Server: World merge blocks", 1);
|
||||
|
||||
try {
|
||||
|
||||
merge_one_block(dbase_current, dbase_up, bpos_aligned, step);
|
||||
statz = merge_one_block(dbase_current, dbase_up, bpos_aligned, step);
|
||||
|
||||
if (!(cur_n % 10000)) {
|
||||
printstat();
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
uint32_t world_merge_throttle{};
|
||||
uint32_t world_merge_max_clients{};
|
||||
int16_t world_merge_load_all{}; // -1 : auto; 0 : disable; 1 : force
|
||||
bool farlights {true};
|
||||
bool farlights{true};
|
||||
bool partial{};
|
||||
uint32_t lazy_up{};
|
||||
const NodeDefManager *const ndef{};
|
||||
@@ -56,9 +56,14 @@ public:
|
||||
bool stop();
|
||||
bool throttle();
|
||||
|
||||
void merge_one_block(MapDatabase *dbase, MapDatabase *dbase_up,
|
||||
const v3bpos_t &bpos_aligned, block_step_t step);
|
||||
struct one_block_stat_t
|
||||
{
|
||||
size_t lights_count{};
|
||||
size_t lights_used{};
|
||||
};
|
||||
|
||||
one_block_stat_t merge_one_block(MapDatabase *dbase, MapDatabase *dbase_up,
|
||||
const v3bpos_t &bpos_aligned, block_step_t step);
|
||||
bool merge_one_step(block_step_t step, std::unordered_set<v3bpos_t> &blocks_todo);
|
||||
bool merge_list(std::unordered_set<v3bpos_t> &blocks_todo);
|
||||
bool merge_all();
|
||||
|
||||
Reference in new issue
Block a user