#ifndef RawModel_h__ #define RawModel_h__ #include #include #include #include #include #include #include #include #include #include "../Common.h" #include "../GLM.h" #include "../Core/ResourceManager.h" #include "Texture.h" #include "Skeleton.h" class RawModel : public Resource { friend class ResourceManager; protected: RawModel(std::string fileName); public: ~RawModel(); struct Vertex { glm::vec3 Position; glm::vec3 Normal; glm::vec3 Tangent; glm::vec3 BiTangent; glm::vec2 TextureCoords; glm::vec4 DiffuseVertexColor; glm::vec4 SpecularVertexColor; glm::vec4 BoneIndices1; glm::vec4 BoneIndices2; glm::vec4 BoneWeights1; glm::vec4 BoneWeights2; }; struct MaterialGroup { float Shininess; std::shared_ptr<::Texture> Texture; std::shared_ptr<::Texture> NormalMap; std::shared_ptr<::Texture> SpecularMap; unsigned int StartIndex; unsigned int EndIndex; }; std::vector TextureGroups; std::vector m_Vertices; std::vector m_Indices; Skeleton* m_Skeleton = nullptr; glm::mat4 m_Matrix; private: std::vector BoneIndices; std::vector BoneWeights; std::vector Normals; std::vector DiffuseVertexColor; std::vector SpecularVertexColor; std::vector TangentNormals; std::vector BiTangentNormals; std::vector TextureCoords; void CreateSkeleton(std::vector> &boneInfo, std::map &boneNameMapping, aiNode* node, int parentID); }; #endif