VoxelEngine
 
Loading...
Searching...
No Matches
VertexData.h
1#pragma once
2
3#include <array>
4
5#include "../Globals.h"
6#include "block/Face.h"
7
8namespace engine::data {
9
10 template <typename T, size_t row, size_t col>
11 using array2d = std::array<std::array<T, col>, row>;
12
13 constexpr float scale = 1.0f;
14
15 constexpr std::array<glm::vec3, 8> vertices = {
16 glm::vec3(0, 0, 0), // origin
17 glm::vec3(1, 0, 0), // x down
18 glm::vec3(1, 1, 0), // x up
19 glm::vec3(0, 1, 0), // origin up
20 glm::vec3(0, 1, 1), // z up
21 glm::vec3(1, 1, 1), // opposite origin
22 glm::vec3(1, 0, 1), // x z down
23 glm::vec3(0, 0, 1) // z down
24 };
25
26 // constexpr array2d<int, 6, 4> faces_indexed = {{
27 // {0, 3, 4, 3}, // north
28 // {3, 2, 5, 4}, // west
29 // {4, 5, 6, 7}, // south
30 // {7, 6, 1, 0}, // east
31 // {6, 5, 2, 1}, // up
32 // {7, 0, 3, 4} // down
33 // }};
34
35 constexpr array2d<int, 6, 6> faces = {{
36 {4, 7, 5, 6, 5, 7}, // north
37 {3, 0, 4, 7, 4, 0}, // west
38 {0, 3, 1, 2, 1, 3}, // south
39 {5, 6, 2, 1, 2, 6}, // east
40 {3, 4, 2, 5, 2, 4}, // up
41 {7, 0, 6, 1, 6, 0}, // down
42 }};
43
44 const std::array<Face, 6> f_faces = {
45 Face::SquareFace(
46 FaceTag::Front, vertices[6], vertices[4], NORTH, glm::vec2(0, 0), glm::vec2(1, 1)
47 ), // North
48 Face::SquareFace(
49 FaceTag::Right, vertices[7], vertices[3], -EAST, glm::vec2(0, 0), glm::vec2(1, 1)
50 ), // West
51 Face::SquareFace(
52 FaceTag::Back, vertices[0], vertices[2], -NORTH, glm::vec2(0, 0), glm::vec2(1, 1)
53 ), // South
54 Face::SquareFace(
55 FaceTag::Left, vertices[1], vertices[5], EAST, glm::vec2(0, 0), glm::vec2(1, 1)
56 ), // East
57 Face::SquareFace(
58 FaceTag::Top, vertices[2], vertices[4], UP, glm::vec2(0, 0), glm::vec2(1, 1)
59 ), // Up
60 Face::SquareFace(
61 FaceTag::Bottom, vertices[0], vertices[6], -UP, glm::vec2(0, 0), glm::vec2(1, 1)
62 ) // Down
63 };
64
65 constexpr std::array<glm::vec3, 6> normals = {
66 glm::vec3(NORTH), // north
67 glm::vec3(-EAST), // west
68 glm::vec3(-NORTH), // south
69 glm::vec3(EAST), // east
70 glm::vec3(UP), // up
71 glm::vec3(-UP) // down
72 };
73
74 constexpr std::array<glm::vec2, 6> uvs = {
75 glm::vec2(0, 1),
76 glm::vec2(0, 0),
77 glm::vec2(1, 1),
78 glm::vec2(1, 0),
79 glm::vec2(1, 1),
80 glm::vec2(0, 0)
81 };
82
83 constexpr std::array<glm::ivec2, 6> axisForSide = {
84 glm::ivec2(2, 1), // north
85 glm::ivec2(0, 1), // west
86 glm::ivec2(2, 1), // south
87 glm::ivec2(0, 1), // east
88 glm::ivec2(2, 0), // up
89 glm::ivec2(0, 2) // down
90 };
91
92} // namespace engine::data