X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fhud.cpp;fp=src%2Fhud.cpp;h=7f127f4cb64bb1d90a31061d0b1f2700077aebd0;hb=41e0223ec090142bf03066f4f5fc1f5005095072;hp=0000000000000000000000000000000000000000;hpb=66d7cf56cfbb565dd4700d94e5f338a39a40edeb;p=blank.git diff --git a/src/hud.cpp b/src/hud.cpp new file mode 100644 index 0000000..7f127f4 --- /dev/null +++ b/src/hud.cpp @@ -0,0 +1,63 @@ +#include "hud.hpp" + +#include "init.hpp" +#include "shape.hpp" + +#include + + +namespace blank { + +HUD::HUD() +: block() +, block_transform(1.0f) +, block_visible(false) +, crosshair() +, crosshair_transform(1.0f) +, near(100.0f) +, far(-100.0f) +, projection(glm::ortho(0.0f, 1.0f, 1.0f, 0.0f, near, far)) +, view(glm::translate(glm::mat4(1.0f), glm::vec3(-0.5f, -0.5f, 0))) { + block_transform = glm::translate(block_transform, glm::vec3(35.0f, 80.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)); + + crosshair.vertices = std::vector({ + { -10.0f, 0.0f, 0.0f }, { 10.0f, 0.0f, 0.0f }, + { 0.0f, -10.0f, 0.0f }, { 0.0f, 10.0f, 0.0f }, + }); + crosshair.colors.resize(4, { 10.0f, 10.0f, 10.0f }); + crosshair.Invalidate(); +} + + +void HUD::Viewport(float width, float height) { + Viewport(0, 0, width, height); +} + +void HUD::Viewport(float x, float y, float width, float height) { + projection = glm::ortho(x, width, height, y, near, far); + crosshair_transform = glm::translate(glm::mat4(1.0f), glm::vec3(width * 0.5f, height * 0.5f, 0.0f)); +} + + +void HUD::Display(const BlockType &type) { + block.Clear(); + type.FillModel({ 0.0f, 0.0f, 0.0f }, block); + block_visible = type.visible; +} + + +void HUD::Render(DirectionalLighting &program) { + if (block_visible) { + program.SetLightDirection({ 1.0f, 3.0f, 5.0f }); + GLContext::ClearDepthBuffer(); + program.SetMVP(block_transform, view, projection); + block.Draw(); + program.SetM(crosshair_transform); + crosshair.Draw(); + } +} + +}