diff options
Diffstat (limited to 'gfx/models')
-rw-r--r-- | gfx/models/obj.h | 9 | ||||
-rw-r--r-- | gfx/models/obj.impl.cpp | 14 |
2 files changed, 12 insertions, 11 deletions
diff --git a/gfx/models/obj.h b/gfx/models/obj.h index 71733fe..a2d874f 100644 --- a/gfx/models/obj.h +++ b/gfx/models/obj.h @@ -8,6 +8,7 @@ #include <filesystem> #include <fstream> #include <glm/glm.hpp> +#include <map> #include <memory> #include <vector> @@ -39,10 +40,10 @@ public: std::vector<Object> objects; glm::length_t axis {0}; - using NamedMeshData = std::pair<std::string, std::pair<std::vector<Vertex>, std::vector<unsigned int>>>; - [[nodiscard]] std::vector<NamedMeshData> createMeshData() const; - using NamedMesh = std::pair<std::string, std::shared_ptr<const Mesh>>; - [[nodiscard]] std::vector<NamedMesh> createMeshes() const; + using NamedMeshesData = std::map<std::string, std::pair<std::vector<Vertex>, std::vector<unsigned int>>>; + [[nodiscard]] NamedMeshesData createMeshData() const; + using NamedMeshes = std::map<std::string, std::shared_ptr<const Mesh>>; + [[nodiscard]] NamedMeshes createMeshes() const; }; #endif diff --git a/gfx/models/obj.impl.cpp b/gfx/models/obj.impl.cpp index 5ac15ac..330e851 100644 --- a/gfx/models/obj.impl.cpp +++ b/gfx/models/obj.impl.cpp @@ -4,27 +4,27 @@ #include <gfx/models/vertex.hpp> #include <glm/glm.hpp> #include <iterator> +#include <map> #include <memory> #include <utility> #include <vector> -std::vector<ObjParser::NamedMesh> +ObjParser::NamedMeshes ObjParser::createMeshes() const { - std::vector<ObjParser::NamedMesh> out; + NamedMeshes out; const auto data {createMeshData()}; - std::transform(data.begin(), data.end(), std::back_inserter(out), [](auto && obj) { + std::transform(data.begin(), data.end(), std::inserter(out, out.end()), [](auto && obj) { return std::make_pair(obj.first, std::make_shared<Mesh>(obj.second.first, obj.second.second)); }); return out; } -std::vector<ObjParser::NamedMeshData> +ObjParser::NamedMeshesData ObjParser::createMeshData() const { - std::vector<ObjParser::NamedMeshData> out; - out.reserve(objects.size()); - std::transform(objects.begin(), objects.end(), std::back_inserter(out), [this](auto && obj) { + NamedMeshesData out; + std::transform(objects.begin(), objects.end(), std::inserter(out, out.end()), [this](auto && obj) { std::vector<Vertex> overtices; std::vector<ObjParser::FaceElement> vertexOrder; std::vector<unsigned int> indices; |