#pragma once

#include "config.hpp"

namespace state {

/// Live state
struct state {
    bool capture_mouse = true;
    camera_pos position = camera_pos(voxel_pos(0), 1);
    std::optional<world::Universe::ray_target> look_at = {};
    bool can_fill = true;

    contouring::Abstract* contouring;

    struct line {
        std::string text;
        std::optional<uint32_t> color;
    };
    struct {
        std::array<char, 256> buffer = {'\0'};
        std::vector<line> lines;
    } console;
};

/// Readonly metrics
struct reports {
    size_t tris_count = 0;
    size_t models_count = 0;
};

}