#pragma once #ifndef SHAPE_H #define SHAPE_H #include struct Shape { std::vector m_vertexData; std::vector m_indexData; }; struct UnWrappedCube : public Shape{ UnWrappedCube() { m_vertexData = { /* Position *//* Normal *//* TexCoords */ // Up -1.f, 1.f, 1.f, 0.f, 1.f, 0.f, 0.33f, 0.33f, -1.f, 1.f, -1.f, 0.f, 1.f, 0.f, 0.33f, 0.66f, 1.f, 1.f, -1.f, 0.f, 1.f, 0.f, 0.66f, 0.66f, 1.f, 1.f, 1.f, 0.f, 1.f, 0.f, 0.66f, 0.33f, // Down -1.f, -1.f, 1.f, 0.f, -1.f, 0.f, 0.f, 0.f, -1.f, -1.f, -1.f, 0.f, -1.f, 0.f, 0.f, 0.33f, 1.f, -1.f, -1.f, 0.f, -1.f, 0.f, 0.33f, 0.33f, 1.f, -1.f, 1.f, 0.f, -1.f, 0.f, 0.33f, 0.f, // Front -1.f, -1.f, 1.f, 0.f, 0.f, 1.f, 0.33f, 0.f, -1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 0.33f, 0.33f, 1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 0.66f, 0.33f, 1.f, -1.f, 1.f, 0.f, 0.f, 1.f, 0.66f, 0.f, // Back -1.f, -1.f, -1.f, 0.f, 0.f, -1.f, 0.33f, .99f, -1.f, 1.f, -1.f, 0.f, 0.f, -1.f, 0.33f, 0.66f, 1.f, 1.f, -1.f, 0.f, 0.f, -1.f, 0.66f, 0.66f, 1.f, -1.f, -1.f, 0.f, 0.f, -1.f, 0.66f, .99f, // Left -1.f, -1.f, -1.f, -1.f, 0.f, 0.f, 0.f, 0.66f, -1.f, 1.f, -1.f, -1.f, 0.f, 0.f, .33f, .66f, -1.f, 1.f, 1.f, -1.f, 0.f, 0.f, .33f, .33f, -1.f, -1.f, 1.f, -1.f, 0.f, 0.f, 0.f, .33f, // Right 1.f, -1.f, -1.f, 1.f, 0.f, 0.f, .99f, .66f, 1.f, 1.f, -1.f, 1.f, 0.f, 0.f, .66f, .66f, 1.f, 1.f, 1.f, 1.f, 0.f, 0.f, .66f, .33f, 1.f, -1.f, 1.f, 1.f, 0.f, 0.f, .99f, .33f, }; m_indexData = { 0, 1, 2, 2, 3, 0, 0 + 4, 1 + 4, 2 + 4, 2 + 4, 3 + 4, 0 + 4, 0 + 8, 1 + 8, 2 + 8, 2 + 8, 3 + 8, 0 + 8, 0 + 12, 1 + 12, 2 + 12, 2 + 12, 3 + 12, 0 + 12, 0 + 16, 1 + 16, 2 + 16, 2 + 16, 3 + 16, 0 + 16, 0 + 20, 1 + 20, 2 + 20, 2 + 20, 3 + 20, 0 + 20 }; } }; struct Cube : public Shape{ Cube() { m_vertexData = { /* Position *//* Normal *//* TexCoords */ // Up -1.f, 1.f, 1.f, 0.f, 1.f, 0.f, 0.f, 0.f, -1.f, 1.f, -1.f, 0.f, 1.f, 0.f, 0.f, 1.f, 1.f, 1.f, -1.f, 0.f, 1.f, 0.f, 1.f, 1.f, 1.f, 1.f, 1.f, 0.f, 1.f, 0.f, 1.f, 0.f, // Down -1.f, -1.f, 1.f, 0.f, -1.f, 0.f, 0.f, 0.f, -1.f, -1.f, -1.f, 0.f, -1.f, 0.f, 0.f, 1.f, 1.f, -1.f, -1.f, 0.f, -1.f, 0.f, 1.f, 1.f, 1.f, -1.f, 1.f, 0.f, -1.f, 0.f, 1.f, 0.f, // Front -1.f, -1.f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, -1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 0.f, 1.f, 1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 1.f, 1.f, 1.f, -1.f, 1.f, 0.f, 0.f, 1.f, 1.f, 0.f, // Back -1.f, -1.f, -1.f, 0.f, 0.f, -1.f, 0.f, 0.f, -1.f, 1.f, -1.f, 0.f, 0.f, -1.f, 0.f, 1.f, 1.f, 1.f, -1.f, 0.f, 0.f, -1.f, 1.f, 1.f, 1.f, -1.f, -1.f, 0.f, 0.f, -1.f, 1.f, 0.f, // Left -1.f, -1.f, -1.f, -1.f, 0.f, 0.f, 0.f, 0.f, -1.f, 1.f, -1.f, -1.f, 0.f, 0.f, 0.f, 1.f, -1.f, 1.f, 1.f, -1.f, 0.f, 0.f, 1.f, 1.f, -1.f, -1.f, 1.f, -1.f, 0.f, 0.f, 1.f, 0.f, // Right 1.f, -1.f, -1.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 1.f, -1.f, 1.f, 0.f, 0.f, 0.f, 1.f, 1.f, 1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 1.f, 1.f, -1.f, 1.f, 1.f, 0.f, 0.f, 1.f, 0.f, }; m_indexData = { 0, 1, 2, 2, 3, 0, 0 + 4, 1 + 4, 2 + 4, 2 + 4, 3 + 4, 0 + 4, 0 + 8, 1 + 8, 2 + 8, 2 + 8, 3 + 8, 0 + 8, 0 + 12, 1 + 12, 2 + 12, 2 + 12, 3 + 12, 0 + 12, 0 + 16, 1 + 16, 2 + 16, 2 + 16, 3 + 16, 0 + 16, 0 + 20, 1 + 20, 2 + 20, 2 + 20, 3 + 20, 0 + 20 }; } }; #endif