#pragma once #include #include #include "Mesh.h" struct TexturePrototype { uint32_t textureType; std::string texturePath; }; struct MeshPrototype { std::vector textureIds; std::vector meshVertices; std::vector meshIndices; }; class Model { public: Model(const std::string& modelName, const std::string& pathToModel); ~Model(); void prepareModel(); void draw(ShaderProgram *shaderProgram); void drawWithoutTextures(); Mesh *getMesh(unsigned int index); std::string getUniqueName(); private: void loadModel(const std::string &pathToModel); private: std::vector meshes; std::vector loadedTextures; std::vector modelTexturePrototypes; std::vector modelMeshPrototypes; std::string directory; bool model_prepared = false; static uint32_t id_counter; uint32_t id; std::string unique_name; };