Chunks reload fix

This commit is contained in:
MihailRis 2023-11-23 15:05:46 +03:00
parent c518580577
commit 50aa5fdc70
5 changed files with 8 additions and 7 deletions

View File

@ -104,7 +104,7 @@ LevelScreen::~LevelScreen() {
std::cout << "-- writing world" << std::endl;
World* world = level->world;
world->write(level, !engine->getSettings().debug.generatorTestMode);
world->write(level);
delete level;
delete world;
@ -118,7 +118,7 @@ void LevelScreen::updateHotkeys() {
level->player->debug = !level->player->debug;
}
if (Events::jpressed(keycode::F5)) {
level->chunks->clear();
level->chunks->saveAndClear();
}
}
@ -133,7 +133,7 @@ void LevelScreen::update(float delta) {
updateHotkeys();
}
if (settings.graphics.backlight != backlight) {
level->chunks->clear();
level->chunks->saveAndClear();
backlight = settings.graphics.backlight;
}
level->updatePlayer(delta, !inputLocked, hud->isPause(), !inputLocked);

View File

@ -338,10 +338,11 @@ bool Chunks::putChunk(shared_ptr<Chunk> chunk) {
return true;
}
void Chunks::clear(){
void Chunks::saveAndClear(){
for (size_t i = 0; i < volume; i++){
Chunk* chunk = chunks[i].get();
if (chunk) {
worldFiles->put(chunk);
events->trigger(EVT_CHUNK_HIDDEN, chunk);
}
chunks[i] = nullptr;

View File

@ -59,7 +59,7 @@ public:
void translate(int x, int z);
void resize(int newW, int newD);
void clear();
void saveAndClear();
};
#endif /* VOXELS_CHUNKS_H_ */

View File

@ -28,7 +28,7 @@ World::~World(){
delete wfile;
}
void World::write(Level* level, bool writeChunks) {
void World::write(Level* level) {
Chunks* chunks = level->chunks;
for (size_t i = 0; i < chunks->volume; i++) {

View File

@ -24,7 +24,7 @@ public:
EngineSettings& settings);
~World();
void write(Level* level, bool writeChunks);
void write(Level* level);
Level* load(EngineSettings& settings, const Content* content);
};