Vertex picking
[opengl.git] / model.hpp
index a3a290c80096279f31d105265316e23d1d316479..ecc8842b7e3807d901d642dc721f572a8cd91b78 100644 (file)
--- a/model.hpp
+++ b/model.hpp
 #include "program.hpp"
 #include "skybox.hpp"
 
-inline glm::mat4 aiMatrixToMat4(aiMatrix4x4 from) {
-       glm::mat4 to;
-       for (int i = 0; i < 4; i++)
-               for (int j = 0; j < 4; j++)
-                       to[i][j] = from[j][i];
-       return to;
-}
-
-inline aiMatrix4x4 mat4ToaiMatrix(glm::mat4 from) {
-       aiMatrix4x4 to;
-       for (int i = 0; i < 4; i++)
-               for (int j = 0; j < 4; j++)
-                       to[i][j] = from[j][i];
-       return to;
-}
 
 class Model {
 
@@ -52,6 +37,7 @@ class Model {
                GLuint progId, vao, numIndices;
                unsigned int materialIndex;
                BoneMap boneMap;
+               const aiMesh &ai;
        };
        
        public:
@@ -86,10 +72,12 @@ class Model {
                                const bool isBone;
                };
                
-               Node* getRoot() { return root; }
+               Node& getRoot() const { return *root; }
                Node* find(const aiString name) const;
                Node* find(const std::string &name) const;
 
+               std::pair<glm::vec3, float> closestVertex(Model::Node &node, glm::vec3 a, glm::vec3 b, glm::mat4 parentTrans = glm::mat4(1)) const;
+       
        private:
                const Program program;