4#include <unordered_map>
6#include <assimp/scene.h>
7#include <assimp/Importer.hpp>
8#include <assimp/postprocess.h>
9#include "../utils/rigidbodyHandler.h"
13#include "../res-management/animationData.h"
17using ModelHandle = int;
18using BoneInfoMap = std::map<string, BoneInfo>;
24 std::vector<MeshPtr> meshes;
42 Model(std::vector<MeshPtr>
meshes ,std::map<string, BoneInfo> m_BoneInfoMap,
43 int m_BoneCounter = 0)
47 this->gammaCorrection =
false;
48 this->m_BoneInfoMap = m_BoneInfoMap;
49 this->m_BoneCounter = m_BoneCounter;
50 this->modelMatrix = glm::mat4(1.0);
66 void SetGravity(
bool gravityOn,
float gravityValue);
90 void scale(glm::vec3 val);
95 void rotate(
float degree, glm::vec3 axis);
117 BoneInfoMap m_BoneInfoMap;
118 int m_BoneCounter = 0;
120 void loadModel(std::string path);
121 Mesh processMesh(aiMesh* mesh,
const aiScene* scene, BoneInfoMap& map,
int& count);
125using ModelPtr = std::shared_ptr<Model>;
A class for a 3D indexed triangular mesh.
Definition mesh.h:57
std::vector< MeshPtr > meshes
List of meshes.
Definition Model.h:33
bool gammaCorrection
Flag indicating whether the model use gamma correction.
Definition Model.h:34
void rotate(float degree, glm::vec3 axis)
Definition Model.cpp:102
void render(ShaderProgram &shader, Aire::Camera &camera)
render the model
Definition Model.cpp:134
glm::vec3 getPosition()
Definition Model.cpp:108
glm::mat4 modelMatrix
Model matrix for the model.
Definition Model.h:35
void translate(glm::vec3 direction)
Definition Model.cpp:32
void SetGravity(bool gravityOn, float gravityValue)
Definition Model.cpp:38
void scale(glm::vec3 val)
Definition Model.cpp:87
void AssignRigidbodyBall(float aRadius)
Definition Model.cpp:26
Rigidbody * rb
Rigid body that might be associated with the model.
Definition Model.h:36
void AssignRigidbodyBox(float aWidth, float aHeight, float aDepth)
Definition Model.cpp:19
void renderInstanced(ShaderProgram &shader, Aire::Camera &camera, glm::mat4 transform)
Definition Model.cpp:113
void SetStatic(bool aStatic)
Definition Model.cpp:57
auto & GetBoneInfoMap()
Definition Model.h:78
int & GetBoneCount()
Definition Model.h:82
uint32_t getSize()
Definition Model.cpp:204
Model(std::vector< MeshPtr > meshes, std::map< string, BoneInfo > m_BoneInfoMap, int m_BoneCounter=0)
Definition Model.h:42
bool isStatic
Flag indicating whether the model is static.
Definition Model.h:32
void SetCollision(bool aCollidable)
Definition Model.cpp:48
A base resource class.
Definition resource.h:26
A linked OpenGL program.
Definition shaderProgram.h:16