41 lines
838 B
C++
41 lines
838 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <memory>
|
|
#include <unordered_map>
|
|
|
|
#include "MainBatch.hpp"
|
|
#include "typedefs.hpp"
|
|
|
|
class Assets;
|
|
class Player;
|
|
class Level;
|
|
class DrawContext;
|
|
|
|
struct BlockWrapper {
|
|
glm::ivec3 position;
|
|
std::string texture;
|
|
};
|
|
|
|
class BlockWrapsRenderer {
|
|
const Assets& assets;
|
|
const Level& level;
|
|
std::unique_ptr<MainBatch> batch;
|
|
|
|
std::unordered_map<u64id_t, std::unique_ptr<BlockWrapper>> wrappers;
|
|
u64id_t nextWrapper = 1;
|
|
|
|
void draw(const BlockWrapper& wrapper);
|
|
public:
|
|
BlockWrapsRenderer(const Assets& assets, const Level& level);
|
|
~BlockWrapsRenderer();
|
|
|
|
void draw(const DrawContext& ctx, const Player& player);
|
|
|
|
u64id_t add(const glm::ivec3& position, const std::string& texture);
|
|
|
|
BlockWrapper* get(u64id_t id) const;
|
|
|
|
void remove(u64id_t id);
|
|
};
|