From 0718282dda68d2bd96bf9c976099148bb164c964 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 2 Aug 2024 16:56:15 +0300 Subject: [PATCH] Support booleans in glTF extras --- libs/gfx/include/psemek/gfx/gltf_parser.hpp | 2 +- libs/gfx/source/gltf_parser.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libs/gfx/include/psemek/gfx/gltf_parser.hpp b/libs/gfx/include/psemek/gfx/gltf_parser.hpp index 0099845a..7ced7476 100644 --- a/libs/gfx/include/psemek/gfx/gltf_parser.hpp +++ b/libs/gfx/include/psemek/gfx/gltf_parser.hpp @@ -19,7 +19,7 @@ namespace psemek::gfx struct gltf_asset { - using extra = std::variant, std::string>; + using extra = std::variant, std::string>; using extras_map = util::hash_map; struct node diff --git a/libs/gfx/source/gltf_parser.cpp b/libs/gfx/source/gltf_parser.cpp index 6e04abf3..a4658b4c 100644 --- a/libs/gfx/source/gltf_parser.cpp +++ b/libs/gfx/source/gltf_parser.cpp @@ -90,7 +90,9 @@ namespace psemek::gfx bool error = false; - if (extra.value.IsNumber()) + if (extra.value.IsBool()) + value = extra.value.GetBool(); + else if (extra.value.IsNumber()) value = extra.value.GetFloat(); else if (extra.value.IsString()) value = extra.value.GetString(); @@ -110,7 +112,7 @@ namespace psemek::gfx error = true; if (error) - log::warning() << "every 'extras' value must be either a number, an array of numbers, or a string (while parting glTF)"; + log::warning() << "every 'extras' value must be either a boolean, a number, an array of numbers, or a string (while parsing glTF)"; else result[name] = std::move(value); }