Program Listing for File Model.hpp
↰ Return to documentation for file (Src/GraphicsEngineVulkan/scene/Model.hpp
)
#pragma once
#include <memory>
#include <vector>
#include "scene/Mesh.hpp"
#include "scene/Texture.hpp"
namespace Kataglyphis {
class Model
{
public:
Model();
Model(VulkanDevice *device);
void cleanUp();
void add_new_mesh(VulkanDevice *device,
VkQueue transfer_queue,
VkCommandPool command_pool,
std::vector<Vertex> &vertices,
std::vector<unsigned int> &indices,
std::vector<unsigned int> &materialIndex,
std::vector<ObjMaterial> &materials);
uint32_t getTextureCount() { return static_cast<uint32_t>(modelTextures.size()); };
std::vector<Texture> &getTextures() { return modelTextures; }
std::vector<VkSampler> &getTextureSamplers() { return modelTextureSamplers; }
std::vector<std::string> getTextureList() { return texture_list; };
uint32_t getMeshCount() { return 1; };
Mesh *getMesh(size_t index) { return &mesh; };
glm::mat4 getModel() { return model; };
uint32_t getCustomInstanceIndex() { return mesh_model_index; };
uint32_t getPrimitiveCount();
ObjectDescription getObjectDescription() { return mesh.getObjectDescription(); };
void set_model(glm::mat4 model);
void addTexture(Texture newTexture);
~Model();
private:
VulkanDevice *device{ VK_NULL_HANDLE };
void addSampler(Texture newTexture);
uint32_t mesh_model_index{ static_cast<uint32_t>(-1) };
Mesh mesh;
glm::mat4 model;
std::vector<std::string> texture_list;
std::vector<Texture> modelTextures;
std::vector<VkSampler> modelTextureSamplers;
};
}// namespace Kataglyphis