in.ReadIdentifier(name);
in.Skip(Token::EQUALS);
if (name == "chunk") {
- in.ReadVec(state.chunk_pos);
+ in.ReadVec(state.pos.chunk);
} else if (name == "position") {
- in.ReadVec(state.block_pos);
+ in.ReadVec(state.pos.block);
} else if (name == "orientation") {
in.ReadQuat(state.orient);
} else if (name == "pitch") {
}
const EntityState &state = player.GetEntity().GetState();
ofstream out(PlayerPath(player));
- out << "chunk = " << state.chunk_pos << ';' << endl;
- out << "position = " << state.block_pos << ';' << endl;
+ out << "chunk = " << state.pos.chunk << ';' << endl;
+ out << "position = " << state.pos.block << ';' << endl;
out << "orientation = " << state.orient << ';' << endl;
out << "pitch = " << state.pitch << ';' << endl;
out << "yaw = " << state.yaw << ';' << endl;
}
-bool WorldSave::Exists(const Chunk::Pos &pos) const noexcept {
+bool WorldSave::Exists(const ExactLocation::Coarse &pos) const noexcept {
return is_file(ChunkPath(pos));
}
if (gzclose(file) != Z_OK) {
throw runtime_error("failed to read chunk file");
}
+ chunk.ScanActive();
chunk.InvalidateMesh();
chunk.ClearSave();
}
}
-const char *WorldSave::ChunkPath(const Chunk::Pos &pos) const {
+const char *WorldSave::ChunkPath(const ExactLocation::Coarse &pos) const {
snprintf(chunk_buf.get(), chunk_bufsiz, chunk_path.c_str(), pos.x, pos.y, pos.z);
return chunk_buf.get();
}