1
0
Fork 0
Univerxel/src/client/world/Universe.hpp

42 lines
1.3 KiB
C++

#pragma once
#include "../../core/world/Universe.hpp"
#include "../../core/world/actions.hpp"
#include "../../core/net/data.hpp"
#include <memory>
namespace contouring {
class Abstract;
}
namespace world::client {
/// Whole universe container in abstract client
class Universe: public world::Universe {
public:
Universe(const std::string& contouring);
virtual ~Universe();
struct connection: net::connection {
connection(): net::connection{"localhost", 4242} { }
};
/// Update edits and contouring
virtual void update(voxel_pos pos, float deltaTime) = 0;
/// Send action to ServerUniverse
virtual void emit(const action::packet &) = 0;
/// When server teleport player
std::function<void(voxel_pos)> onTeleport;
/// Get current contouring worker
contouring::Abstract* getContouring() const {
return contouring.get();
}
//TODO: move to ClientUniverse
//void getEntitiesModels(const std::function<void(const std::vector<glm::mat4> &, buffer::Abstract *const)> &draw, const std::optional<geometry::Frustum> &frustum, const glm::llvec3 &offset, int density);
protected:
/// Contouring worker
std::unique_ptr<contouring::Abstract> contouring;
};
}