Load cameras and shuffle about model stuff
[opengl.git] / model.hpp
index 5c74cb386ef50a1bca316dc3bd286132710c939c..92aab0dd21cb80cb95791f475819522ee0b58056 100644 (file)
--- a/model.hpp
+++ b/model.hpp
@@ -7,11 +7,18 @@
 #endif
 #include <glm/glm.hpp>
 #include <assimp/scene.h>
-#include <assimp/Importer.hpp>
 #include "material.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;
+}
+
 class Model {
 
        struct Animation {
@@ -36,7 +43,7 @@ class Model {
        };
        
        public:
-               Model(const std::string &path, Program p);
+               Model(const aiScene *scene, Program p);
                void draw(Skybox skybox, const float tick) const;
 
                class Node {
@@ -45,7 +52,6 @@ class Model {
                                void draw(const std::vector<Mesh> &meshes, const std::vector<Material> &materials, const Skybox s, const float tick, glm::mat4 parentModel, BoneTransforms boneTransforms) const;
                                const std::vector<Node*> &getChildren() const { return children; }
                                Node* findNode(const aiNode &aiNode);
-                               glm::mat4 model = glm::mat4(1);
                                const aiNode &ai;
 
                        private:
@@ -69,6 +75,4 @@ class Model {
                std::vector<Material> materials;
 
                void loadModel(const std::string &path);
-
-               Assimp::Importer importer;
 };