#pragma once #include "ehs/EHS.h" #include "ehs/Array.h" #include "Vertex.h" #include "ehs/BaseObj.h" namespace ehs { class EHS_LIB_IO Mesh final : public BaseObj { protected: UInt_64 hashId; Str_8 id; Array<Vertex_f> vertices; Array<UInt_32> indices; public: Mesh(); Mesh(Str_8 id, Array<Vertex_f> vertices, Array<UInt_32> indices); Mesh(Str_8 id, Array<Vertex_f> vertices); Mesh(Mesh&& mesh) noexcept; Mesh(const Mesh& mesh); Mesh& operator=(Mesh&& mesh) noexcept; Mesh& operator=(const Mesh& mesh); void Release(); UInt_64 GetHashId() const; void SetId(Str_8 newId); Str_8 GetId() const; void SetVertices(const Array<Vertex_f>& newVertices); const Array<Vertex_f>& GetVertices() const; Array<Vertex_f>& GetVertices(); void SetIndices(const Array<UInt_32>& newIndices); bool HasIndices() const; const Array<UInt_32>& GetIndices() const; Array<UInt_32>& GetIndices(); void Calculate(); private: static void Calculate(Vertex_f& vert1, Vertex_f& vert2, Vertex_f& vert3); }; const Mesh portraitGui("PortraitGui", { {{0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.0f}}, {{0.0f, 1.0f, 1.0f}, {0.0f, 0.0f, -1.0f}, {0.0f, 1.0f}}, {{1.0f, 0.0f, 1.0f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}}, {{1.0f, 1.0f, 1.0f}, {0.0f, 0.0f, -1.0f}, {1.0f, 1.0f}} }, {0, 1, 2, 3, 2, 1} ); const Mesh portrait("Portrait", { {{-0.5f, -0.5f, 0.0f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.0f}}, {{-0.5f, 0.5f, 0.0f}, {0.0f, 0.0f, -1.0f}, {0.0f, 1.0f}}, {{0.5f, -0.5f, 0.0f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}}, {{0.5f, 0.5f, 0.0f}, {0.0f, 0.0f, -1.0f}, {1.0f, 1.0f}} }, {0, 1, 2, 3, 2, 1} ); }