X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fhud.cpp;fp=src%2Fhud.cpp;h=0000000000000000000000000000000000000000;hb=b7d09e1e35ef90282c97509e0020b20db3c7ea9f;hp=0f496c6d7ce074f59a4dd224043ba9f38c2af3c3;hpb=e53a0e2e711a7d8bd9b0ddacd1360aa14370643f;p=blank.git diff --git a/src/hud.cpp b/src/hud.cpp deleted file mode 100644 index 0f496c6..0000000 --- a/src/hud.cpp +++ /dev/null @@ -1,75 +0,0 @@ -#include "hud.hpp" - -#include "block.hpp" -#include "init.hpp" -#include "shader.hpp" -#include "shape.hpp" - -#include - - -namespace blank { - -HUD::HUD(const BlockTypeRegistry &types) -: types(types) -, block() -, block_buf() -, 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(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.35f, 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.indices = std::vector({ - 0, 1, 2, 3 - }); - crosshair.colors.resize(4, { 10.0f, 10.0f, 10.0f }); - crosshair.Invalidate(); -} - - -void HUD::Viewport(float width, float height) noexcept { - Viewport(0, 0, width, height); -} - -void HUD::Viewport(float x, float y, float width, float height) noexcept { - 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 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; -} - - -void HUD::Render(DirectionalLighting &program) noexcept { - if (block_visible) { - program.SetLightDirection({ 1.0f, 3.0f, 5.0f }); - // disable distance fog - program.SetFogDensity(0.0f); - GLContext::ClearDepthBuffer(); - program.SetMVP(block_transform, view, projection); - block.Draw(); - program.SetM(crosshair_transform); - crosshair.Draw(); - } -} - -}