#pragma once #include #include #include "vlkx/render/Geometry.h" namespace vlkxtemp { struct Wavefront { Wavefront(std::string_view path, size_t base); Wavefront(const Wavefront&) = delete; Wavefront& operator=(const Wavefront&) = delete; std::vector indices; std::vector vertices; }; class ModelLoader { public: enum class TextureType { Diffuse, Specular, Reflection, Cubemap, Count }; struct TextureData { TextureData(TextureData&&) noexcept = default; TextureData& operator=(TextureData&&) noexcept = default; std::string path; TextureType type; }; struct MeshData { MeshData() = default; MeshData(MeshData&&) noexcept = default; MeshData& operator=(MeshData&&) noexcept = default; std::vector vertices; std::vector indices; std::vector textures; }; ModelLoader(const std::string& model, const std::string& textures); ModelLoader(const ModelLoader&) = delete; ModelLoader& operator=(const ModelLoader&) = delete; const std::vector& getMeshes() const { return meshes; } private: std::vector meshes; }; }