#pragma once #include #include #include #include #include "CTransform.h" class CModelLoadInfo { public: class CBone { public: int ParentIndex = -1; std::string Name, ParentName; glm::mat4x4 BindTransform; glm::mat4x4 GlobalBind; void CalculateBind(std::vector& bones); CBone& GetParent(std::vector& bones); }; class CVertex { public: class CBoneLink { public: float Weight = 1.0f; int BoneIndex = -1; }; //TODO vertex color glm::vec3 Position; std::uint8_t BoneCount = 0; std::vector Bones; }; class CTriangle { public: glm::u64vec3 VertexIndex; glm::u64vec3 UvIndex; glm::u64vec3 NormalIndex; int MaterialIndex = -1; }; std::vector Bones; std::vector Vertices; std::vector UvCoords; std::vector Normals; std::vector Triangles; std::vector MaterialsList; void Reset(); bool Load(const std::filesystem::path& path); int CheckBoneValidity(CBone& bone); bool CheckIndices(const glm::u64vec3& vec, size_t limit); };