#pragma once #include "../../EHS.h" #include "../../Array.h" #include "Vertex.h" namespace lwe { const Array portraitGuiVerts({ {{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}} }); const Array portraitGuiIndices({ 0, 1, 2, 3, 2, 1 }); const Array portraitVerts({ {{-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}} }); const Array portraitIndices({ 0, 1, 2, 3, 2, 1 }); class Mesh : public Resource { protected: Array vertices; Array indices; GpuBuffer srcVertBuffer; GpuBuffer dstVertBuffer; GpuBuffer srcIndBuffer; GpuBuffer dstIndBuffer; public: Mesh(); Mesh(Str_8 id, Array vertices, Array indices); Mesh(Str_8 id, Array vertices); Mesh(Str_8 id); Mesh(Mesh&& mesh) noexcept; Mesh(const Mesh& mesh); Mesh& operator=(Mesh&& mesh) noexcept; Mesh& operator=(const Mesh& mesh); bool UploadToGpu(GpuCmdBuffer* cmdBuffer) override; bool PostGpuUpload() override; bool HasPostGpuUploaded() const override; bool ReleaseFromGpu() override; bool IsUploaded() const override; void Bind(GpuCmdBuffer* cmdBuffer); void Draw(GpuCmdBuffer* cmdBuffer, const UInt_32 instances = 1); void SetVertices(const Array& newVertices); Array GetVertices() const; Array& GetVertices(); void SetIndices(const Array& newIndices); bool HasIndices() const; Array GetIndices() const; Array& GetIndices(); void Calculate(); private: static void Calculate(Vertex_f& vert1, Vertex_f& vert2, Vertex_f& vert3); }; }