#include "hud.hpp"
+#include "block.hpp"
#include "init.hpp"
+#include "shader.hpp"
#include "shape.hpp"
#include <glm/gtc/matrix_transform.hpp>
namespace blank {
-HUD::HUD()
-: block()
+HUD::HUD(const BlockTypeRegistry &types)
+: types(types)
+, block()
+, block_buf()
, block_transform(1.0f)
, block_visible(false)
, crosshair()
block_transform = glm::translate(block_transform, glm::vec3(50.0f, 50.0f, 0.0f));
block_transform = glm::scale(block_transform, glm::vec3(50.0f));
block_transform = glm::rotate(block_transform, 3.5f, glm::vec3(1.0f, 0.0f, 0.0f));
- block_transform = glm::rotate(block_transform, 0.85f, glm::vec3(0.0f, 1.0f, 0.0f));
+ block_transform = glm::rotate(block_transform, 0.35f, glm::vec3(0.0f, 1.0f, 0.0f));
crosshair.vertices = std::vector<glm::vec3>({
{ -10.0f, 0.0f, 0.0f }, { 10.0f, 0.0f, 0.0f },
}
-void HUD::Display(const BlockType &type) {
- block.Clear();
- type.FillModel(block);
+void HUD::Display(const Block &b) {
+ const BlockType &type = *types.Get(b.type);
+
+ block_buf.Clear();
+ type.FillModel(block_buf, b.Transform());
+ block.Update(block_buf);
block_visible = type.visible;
}