We can now export and import collision meshes :D

This commit is contained in:
Teejoon
2016-02-25 15:39:42 +01:00
parent 9229b77893
commit 669a7d13cf
8 changed files with 153 additions and 24 deletions
+8 -2
View File
@@ -18,8 +18,14 @@ public:
~Model();
const std::vector<RawModel::MaterialProperties>& MaterialGroups() const { return m_RawModel->m_Materials; }
const glm::mat4& Matrix() const { return m_RawModel->m_Matrix; }
const RawModel::Vertex* Vertices() const { return m_RawModel->Vertices(); }
unsigned int NumberOfVertices() const { return m_RawModel->NumVertices(); }
const RawModel::RenderVertex* Vertices() const { return m_RawModel->Vertices(); }
size_t NumberOfVertices() const { return m_RawModel->NumVertices(); }
const std::vector<unsigned int>& Indices() const { return m_RawModel->Indices(); }
const RawModel::Vertex* CollisionVertices() const { return m_RawModel->CollisionVertices(); }
const std::vector<unsigned int>& CollisionIndices() const { return m_RawModel->CollisionIndices(); }
const AABB& Box() const { return m_Box; }
bool IsSkinned() const { return m_RawModel->IsSkinned(); }
GLuint VAO;
+40 -11
View File
@@ -32,9 +32,11 @@ protected:
public:
~RawModelCustom();
struct Vertex
{
struct Vertex {
glm::vec3 Position;
};
struct RenderVertex {
glm::vec3 Position;
glm::vec3 Normal;
glm::vec3 Tangent;
@@ -42,7 +44,7 @@ public:
glm::vec2 TextureCoords;
};
struct SkinedVertex : public Vertex {
struct SkinedVertex : public RenderVertex {
glm::vec4 BoneIndices;
glm::vec4 BoneWeights;
};
@@ -89,7 +91,7 @@ public:
MaterialBasic* material;
};
const Vertex* Vertices() const {
const RenderVertex* Vertices() const {
if (hasSkin) {
return m_SkinedVertices.data();
} else {
@@ -97,16 +99,16 @@ public:
}
};
unsigned int VertexSize() const {
unsigned int VertexSize() const {
if (hasSkin) {
return sizeof(SkinedVertex);
}
else {
return sizeof(Vertex);
return sizeof(RenderVertex);
}
};
unsigned int NumVertices() const {
size_t NumVertices() const {
if (hasSkin) {
return m_SkinedVertices.size();
} else {
@@ -114,17 +116,39 @@ public:
}
};
const std::vector<unsigned int>& Indices() const {
return m_Indices;
}
bool IsSkinned() const { return hasSkin; };
const Vertex* CollisionVertices();
size_t NumCollisionVertices() const {
return m_CollisionVertices.size();
};
const std::vector<unsigned int>& CollisionIndices() const {
if (hasCollisionMesh) {
return m_CollisionIndices;
} else {
return m_Indices;
}
};
std::vector<MaterialProperties> m_Materials;
std::vector<unsigned int> m_Indices;
Skeleton* m_Skeleton = nullptr;
glm::mat4 m_Matrix;
private:
bool hasSkin;
std::vector<Vertex> m_Vertices;
bool hasCollisionMesh = false;
std::vector<unsigned int> m_Indices;
std::vector<unsigned int> m_CollisionIndices;
std::vector<Vertex> m_CollisionVertices;
std::vector<RenderVertex> m_Vertices;
std::vector<SkinedVertex> m_SkinedVertices;
void ReadMeshFile(std::string filePath);
@@ -147,7 +171,12 @@ private:
void ReadAnimationClips(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, unsigned int numberOfClips);
void ReadAnimationClipSingle(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, unsigned int clipIndex);
void ReadAnimationKeyFrame(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, std::vector<Skeleton::Animation::Keyframe>& animation);
void ReadCollisionFile(std::string filePath);
void ReadCollisionFileData(std::size_t& offset, char* fileData, const unsigned int& fileByteSize);
const Vertex* ConstructCollisionList();
//void CreateSkeleton(std::vector<std::tuple<std::string, glm::mat4>> &boneInfo, std::map<std::string, int> &boneNameMapping, aiNode* node, int parentID);
};