2024-02-05 22:25:30 -08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "ehs/EHS.h"
|
|
|
|
#include "ehs/Array.h"
|
|
|
|
#include "Vertex.h"
|
|
|
|
#include "ehs/BaseObj.h"
|
|
|
|
|
|
|
|
namespace ehs
|
|
|
|
{
|
2024-07-24 01:36:20 -07:00
|
|
|
class EHS_LIB_IO Mesh final : public BaseObj
|
2024-02-05 22:25:30 -08:00
|
|
|
{
|
|
|
|
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}
|
|
|
|
);
|
|
|
|
}
|