1
0
Fork 0
Univerxel/src/client/Client.hpp

29 lines
761 B
C++

#pragma once
#include "state.hpp"
#include "render/Window.hpp"
namespace render {
class Renderer;
};
/// Client view
class Client {
public:
Client(config::client::options &options, world::AbstractServerFactory* srvContainer = nullptr);
~Client();
void run();
private:
using culler = std::variant<std::monostate, geometry::Frustum, std::vector<glm::vec3>>;
void renderFrame(render::Renderer&, const std::optional<geometry::Frustum>&, const std::optional<std::pair<float, float>>&, const world::client::Universe&);
void renderTerrainPass(render::Renderer&, const culler&, const world::cell_pos& offset, bool solid);
config::client::options &options;
state::state state;
state::reports reports;
Window window;
};