From 656f97834b4c4e13e5eaedcca0ab344fc5800b92 Mon Sep 17 00:00:00 2001 From: Ben Date: Sat, 5 Oct 2019 23:06:07 +0100 Subject: [PATCH] faces and that --- CMakeLists.txt | 1 + src/game.cpp | 7 ++- src/renderer/face.cpp | 118 +++++++++++++++++++++++++++++++++++++++ src/renderer/face.hpp | 21 +++++++ src/renderer/texture.cpp | 0 src/renderer/texture.hpp | 0 src/world/world.hpp | 7 +++ 7 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 src/renderer/face.cpp create mode 100644 src/renderer/texture.cpp create mode 100644 src/renderer/texture.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 7e6f40a..daf349e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,7 @@ file(GLOB SourceFiles ${SrcDIR}/* ${SrcDIR}/util/* ${SrcDIR}/util/imgui/* + ${SrcDIR}/game/* ${SrcDIR}/renderer/* ) diff --git a/src/game.cpp b/src/game.cpp index 308d0ca..1534d02 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -5,6 +5,7 @@ #include "renderer/renderer.hpp" #include "renderer/camera.hpp" +#include "renderer/face.hpp" #include "world/world.hpp" @@ -124,8 +125,10 @@ void Game::Run() { const float clear[] = { 0.1f, 0.45f, 0.9f, 1.0f }; glClearBufferfv(GL_COLOR, 0, clear); - m_renderer = std::make_shared(); - m_world = std::make_shared(); + m_renderer = std::make_unique(); + m_world = std::make_unique(); + + m_world->Faces.push_back(std::make_shared(FaceDirection::Top, 1)); while (IsDisplayOpen) { diff --git a/src/renderer/face.cpp b/src/renderer/face.cpp new file mode 100644 index 0000000..8c10eca --- /dev/null +++ b/src/renderer/face.cpp @@ -0,0 +1,118 @@ +#include "face.hpp" + +Face::Face(FaceDirection direction, int textureID) { + Direction = direction; + Texture = textureID; + + m_uvs = { + { 0.0f, 0.0f }, + { 1.0f, 0.0f }, + { 1.0f, 1.0f }, + { 1.0f, 1.0f }, + { 0.0f, 1.0f }, + { 0.0f, 0.0f } + }; + + switch (Direction) {case FaceDirection::Top: + { + + m_verticies = { + { -0.5f, -0.5f, -0.5f }, + { 0.5f, -0.5f, -0.5f }, + { 0.5f, 0.5f, -0.5f }, + { 0.5f, 0.5f, -0.5f }, + { -0.5f, 0.5f, -0.5f }, + { -0.5f, -0.5f, -0.5f }, + }; + + break; + + } + + case FaceDirection::Bottom: + { + + m_verticies = { + { -0.5f, -0.5f, 0.5f }, + { 0.5f, -0.5f, 0.5f }, + { 0.5f, 0.5f, 0.5f }, + { 0.5f, 0.5f, 0.5f }, + { -0.5f, 0.5f, 0.5f }, + { -0.5f, -0.5f, 0.5f }, + }; + + break; + + } + + case FaceDirection::Front: + { + + m_verticies = { + { -0.5f, 0.5f, 0.5f }, + { -0.5f, 0.5f, -0.5f }, + { -0.5f, -0.5f, -0.5f }, + { -0.5f, -0.5f, -0.5f }, + { -0.5f, -0.5f, 0.5f }, + { -0.5f, 0.5f, 0.5f }, + }; + + break; + + } + + case FaceDirection::Back: + { + + m_verticies = { + { 0.5f, 0.5f, 0.5f }, + { 0.5f, 0.5f, -0.5f }, + { 0.5f, -0.5f, -0.5f }, + { 0.5f, -0.5f, -0.5f }, + { 0.5f, -0.5f, 0.5f }, + { 0.5f, 0.5f, 0.5f }, + }; + + break; + + } + + case FaceDirection::Left: + { + + m_verticies = { + { -0.5f, -0.5f, -0.5f }, + { 0.5f, -0.5f, -0.5f }, + { 0.5f, -0.5f, 0.5f }, + { 0.5f, -0.5f, 0.5f }, + { -0.5f, -0.5f, 0.5f }, + { -0.5f, -0.5f, -0.5f }, + }; + + break; + + } + + case FaceDirection::Right: + { + + m_verticies = { + { -0.5f, 0.5f, -0.5f }, + { 0.5f, 0.5f, -0.5f }, + { 0.5f, 0.5f, 0.5f }, + { 0.5f, 0.5f, 0.5f }, + { -0.5f, 0.5f, 0.5f }, + { -0.5f, 0.5f, -0.5f }, + }; + + break; + + } + + }; + +} + +void Face::GetMesh(std::vector& verts, std::vector& uvs) { + +} diff --git a/src/renderer/face.hpp b/src/renderer/face.hpp index 1f823f3..2c66f79 100644 --- a/src/renderer/face.hpp +++ b/src/renderer/face.hpp @@ -1,10 +1,31 @@ #ifndef MINECRAFT_RENDERER_FACE_H_ #define MINECRAFT_RENDERER_FACE_H_ +#include "../common.hpp" + +enum FaceDirection { + Top, + Bottom, + Front, + Back, + Left, + Right +}; + class Face { public: + Face(FaceDirection direction, int textureID); + + void GetMesh(std::vector& verts, std::vector& uvs); + int Texture = 0; + FaceDirection Direction = FaceDirection::Up; + +private: + + std::vector m_verticies; + std::vector m_uvs; }; diff --git a/src/renderer/texture.cpp b/src/renderer/texture.cpp new file mode 100644 index 0000000..e69de29 diff --git a/src/renderer/texture.hpp b/src/renderer/texture.hpp new file mode 100644 index 0000000..e69de29 diff --git a/src/world/world.hpp b/src/world/world.hpp index 127fc44..c5ee4ad 100644 --- a/src/world/world.hpp +++ b/src/world/world.hpp @@ -1,7 +1,14 @@ #ifndef MINECRAFT_WORLD_WORLD_H_ #define MINECRAFT_WORLD_WORLD_H_ +#include "../common.hpp" + +class Face; + class World { +public: + + std::vector> Faces; };