#pragma once #include "ehs/EHS.h" #include "ehs/Vec4.h" #include "ehs/Vec3.h" #include "ehs/Vec2.h" #include "ehs/Color4.h" namespace ehs { template<typename T = float> class Vertex { public: Vec3<T> pos; Vec3<T> normal; Vec2<T> uv; Vec3<T> tan; Vec3<T> bTan; Vec4<UInt_8> bones; Vec4<float> weights; Vertex() = default; Vertex(const Vec3<T>& pos) : pos(pos), bones{0, 0, 0, 0}, weights{0.0f, 0.0f, 0.0f, 0.0f} { } Vertex(const Vec3<T>& pos, const Vec3<T>& normal) : pos(pos), normal(normal), bones{0, 0, 0, 0}, weights{0.0f, 0.0f, 0.0f, 0.0f} { } Vertex(const Vec3<T>& pos, const Vec3<T>& normal, const Vec2<T>& uv) : pos(pos), normal(normal), uv(uv), bones{0, 0, 0, 0}, weights{0.0f, 0.0f, 0.0f, 0.0f} { } Vertex(const Vertex& vert) : pos(vert.pos), normal(vert.normal), uv(vert.uv), bones(vert.bones), weights(vert.weights) { } Vertex& operator=(const Vertex& vert) = default; }; typedef Vertex<double> Vertex_d; typedef Vertex<float> Vertex_f; }