From ab13864021ad579f1fb9b206c07014cf8bf05b41 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Mon, 13 Feb 2023 21:46:59 +0300 Subject: [PATCH] Add node & material index to gltf_asset --- libs/gfx/include/psemek/gfx/gltf_parser.hpp | 3 +++ libs/gfx/source/gltf_parser.cpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/libs/gfx/include/psemek/gfx/gltf_parser.hpp b/libs/gfx/include/psemek/gfx/gltf_parser.hpp index a84161e0..baeb754d 100644 --- a/libs/gfx/include/psemek/gfx/gltf_parser.hpp +++ b/libs/gfx/include/psemek/gfx/gltf_parser.hpp @@ -82,6 +82,9 @@ namespace psemek::gfx std::vector accessors; std::vector buffer_views; std::vector buffers; + + std::unordered_map node_index; + std::unordered_map material_index; }; gltf_asset parse_gltf(io::istream && stream); diff --git a/libs/gfx/source/gltf_parser.cpp b/libs/gfx/source/gltf_parser.cpp index 7c539146..f329bbca 100644 --- a/libs/gfx/source/gltf_parser.cpp +++ b/libs/gfx/source/gltf_parser.cpp @@ -199,6 +199,12 @@ namespace psemek::gfx target.uri = buffer["uri"].GetString(); } + for (std::size_t i = 0; i < result.nodes.size(); ++i) + result.node_index[result.nodes[i].name] = i; + + for (std::size_t i = 0; i < result.materials.size(); ++i) + result.material_index[result.materials[i].name] = i; + return result; }