From ebad1227aaafbd962756155732f0ec39085f7d51 Mon Sep 17 00:00:00 2001 From: Mel Date: Tue, 18 Oct 2022 18:44:54 +0200 Subject: Basic Chunk --- src/World/BlockSide.hpp | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/World/BlockSide.hpp (limited to 'src/World/BlockSide.hpp') diff --git a/src/World/BlockSide.hpp b/src/World/BlockSide.hpp new file mode 100644 index 0000000..45efb11 --- /dev/null +++ b/src/World/BlockSide.hpp @@ -0,0 +1,66 @@ +#pragma once + +#include +#include +#include +#include "../Math/Vector.hpp" + +namespace MC { + +class BlockSide { +public: + enum Value : uint8_t { + Front, + Back, + + Top, + Bottom, + + Left, + Right, + }; + + BlockSide() = default; + BlockSide(Value side) : m_side(side) {} + + operator Value() const { return m_side; } + + std::array, 4> face() { + switch (m_side) { + case Front: + return {{ + {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 1.0f}, {1.0f, 1.0f, 1.0f}, {0.0f, 1.0f, 1.0f}, + }}; + case Back: + return {{ + {1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, + }}; + case Top: + return {{ + {0.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, + }}; + case Bottom: + return {{ + {0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 1.0f}, + }}; + case Left: + return {{ + {0.0f, 0.0f, 0.0f},{0.0f, 0.0f, 1.0f},{0.0f, 1.0f, 1.0f}, {0.0f, 1.0f, 0.0f}, + }}; + case Right: + return {{ + {1.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, + }}; + } + } + + static std::vector all() { + return { + Front, Back, Top, Bottom, Left, Right, + }; + } +private: + Value m_side; +}; + +} \ No newline at end of file -- cgit 1.4.1