6#include <assimp/scene.h>
9#include "../utils/error.h"
10#include "../utils/log.h"
14 using MeshPtr = shared_ptr<Mesh>;
16 using MeshHash = map<MeshHandle, MeshPtr>;
18 using ModelHash = map<ModelHandle, ModelPtr>;
19 using ModelNameHash = std::unordered_map<ModelHandle, ModelPtr>;
22 using MeshSoupHandle =
unsigned int;
24 using MeshSoupHash = map<MeshSoupHandle, ModelData>;
25 using MeshSoupNameHash = std::unordered_map<std::string, ModelData>;
31 MeshHandle meshHandle;
34 ModelHandle modelHandle;
35 ModelNameHash modelNameHash;
38 MeshSoupHash meshSoupHash;
39 MeshSoupNameHash meshSoupNameHash;
40 MeshSoupHandle meshSoupHandle;
46 void processNode(aiNode* node,
const aiScene* scene, std::vector<MeshPtr>&,BoneInfoMap& map,
int& count,
bool isflipped);
47 MeshPtr processMesh(aiMesh* mesh,
const aiScene* scene, BoneInfoMap& map,
int& count,
bool isflipped);
48 MaterialPtr processMaterial(aiMaterial* material,
bool isflipped);
49 std::string getPath(aiMaterial* mat, aiTextureType type);
72 MeshHandle
createMesh(std::vector<Vertex> vertices, std::vector<unsigned int> indices, MaterialPtr& handle);
79 ModelHandle
createModel(
const std::string& path,
bool flippedUV =
false);
138 inline MeshManager::MeshManager()
Material manager. Handles material creation, storage, and deletion.
Definition matManager.h:15
Mesh manager. Handles mesh creation, storage, and deletion.
Definition meshManager.h:28
void moveModelToGpu(const ModelHandle &)
Definition meshManager.cpp:89
void SetVertexBoneData(Vertex &vertex, int boneID, float weight)
Definition meshManager.cpp:228
void moveMeshToGpu(const MeshHandle &)
Definition meshManager.cpp:117
ModelPtr getModelPtr(const ModelHandle &)
Definition meshManager.cpp:213
MeshHandle createMesh(std::vector< Vertex > vertices, std::vector< unsigned int > indices, MaterialPtr &handle)
Definition meshManager.cpp:16
void ExtractBoneWeightForVertices(std::vector< Vertex > &vertices, aiMesh *mesh, const aiScene *scene, BoneInfoMap &map, int &count)
Definition meshManager.cpp:241
void freeModelDataInCpu(const ModelHandle &handle)
Definition meshManager.cpp:67
void RemoveMeshInGpu(const MeshHandle &)
Definition meshManager.cpp:177
void RemoveMoelInGpu(const ModelHandle &)
Definition meshManager.cpp:195
void SetVertexBoneDataToDefault(Vertex &vertex)
Definition meshManager.cpp:219
MeshPtr getMeshPtr(const MeshHandle &)
Definition meshManager.cpp:207
ModelHandle createModel(const std::string &path, bool flippedUV=false)
Definition meshManager.cpp:27