#pragma once

#include "app.h"
#include "world.h"

#include <cstdint>
#include <vector>

struct ChunkMeshPart {
    std::vector<Vertex> vertices;
    std::vector<std::uint32_t> indices;
};

struct ChunkMesh {
    ChunkMeshPart opaque;
    ChunkMeshPart water;
};

class ChunkMeshBuilder {
public:
    // lodLevel 0 = full detail, 1 = top-face column mesh (for distant chunks)
    static ChunkMesh build(const World& world, const ChunkPos& chunkPos, int lodLevel = 0);
};