X-Git-Url: https://git.lukelau.me/?p=opengl.git;a=blobdiff_plain;f=model.hpp;h=aaf647af3c83c2b89b6e39e0a53bbe28a0c6ed40;hp=ecc8842b7e3807d901d642dc721f572a8cd91b78;hb=d2a4cfcd292f5bc422a025d43855e5f4f21fb161;hpb=b472351f3c80cec8c7e9ec30cb4c113c947c0ff7 diff --git a/model.hpp b/model.hpp index ecc8842..aaf647a 100644 --- a/model.hpp +++ b/model.hpp @@ -32,18 +32,21 @@ class Model { float weights[4] = {1, 0, 0, 0}; }; + public: + Model(std::vector blendshapes, std::string neutral, Program p); + Model(const aiScene *scene, Program p); + void draw(Skybox skybox, const float tick) const; + struct Mesh { Mesh(const aiMesh *aiMesh, GLuint progId); GLuint progId, vao, numIndices; + GLuint vbos[6]; unsigned int materialIndex; BoneMap boneMap; const aiMesh &ai; + void updatePosBuffer() const; }; - public: - Model(const aiScene *scene, Program p); - void draw(Skybox skybox, const float tick) const; - class Node { public: Node(aiNode &aiNode, GLuint progId, AnimMap *animMap, std::set allBones, Node *parent); @@ -78,10 +81,10 @@ class Model { std::pair closestVertex(Model::Node &node, glm::vec3 a, glm::vec3 b, glm::mat4 parentTrans = glm::mat4(1)) const; + std::vector meshes; + private: const Program program; - - std::vector meshes; Node *root; std::vector materials;