#pragma once #include #include "Types.hpp" #include "Vector3.hpp" #include "Vector2.hpp" namespace TSE { class Mesh { public: string name; std::vector vertecies; std::vector indecies; std::vector uvs; /// @brief gives you an empty mesh with the name set to an empty string Mesh(); /// @brief constructs a mesh with custom parameters /// @param _name name of the mesh /// @param _vertecies the vertecies /// @param _indecies the indecies /// @param _uvs the uvs Mesh(string _name, const std::vector& _vertecies, const std::vector& _indecies, const std::vector& _uvs); /// @brief gives you the count of indecies in this mesh /// @return the indecie count size_t IndeciesCount() const; /// @brief gives you the count of vertecies in this mesh /// @return the vertex count size_t VerteciesCount() const; /// @brief generates a circle mesh with the defined amounts of segments /// @param segments amount of "pizza slices" to make the mesh out of. default 16 /// @return the resulting mesh static Mesh GetCircleMesh(ushort segments = 16); /// @brief gives you a basic unit quad with (-0.5, -0.5) -> (0.5, 0.5) /// @return the resulting mesh static Mesh GetQuadMesh(); }; } // namespace TSE