From 1bc1c122440a122edd2d588c3468792097d43cd1 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 1 Apr 2024 20:48:39 +0200 Subject: [PATCH] chore: fix linux build --- .../T6/AssetLoaders/AssetLoaderXModel.cpp | 2 +- .../Game/T6/XModel/JsonXModelLoader.cpp | 3 +- src/ObjWriting/XModel/Gltf/GltfTextOutput.cpp | 2 +- src/ObjWriting/XModel/Gltf/GltfWriter.cpp | 32 ++++++++++--------- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderXModel.cpp b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderXModel.cpp index 8cbbd072..2ee2dc36 100644 --- a/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderXModel.cpp +++ b/src/ObjLoading/Game/T6/AssetLoaders/AssetLoaderXModel.cpp @@ -1,7 +1,7 @@ #include "AssetLoaderXModel.h" -#include "Game/T6/XModel/JsonXModelLoader.h" #include "Game/T6/T6.h" +#include "Game/T6/XModel/JsonXModelLoader.h" #include "Pool/GlobalAssetPool.h" #include diff --git a/src/ObjLoading/Game/T6/XModel/JsonXModelLoader.cpp b/src/ObjLoading/Game/T6/XModel/JsonXModelLoader.cpp index 6dc2268a..692a340f 100644 --- a/src/ObjLoading/Game/T6/XModel/JsonXModelLoader.cpp +++ b/src/ObjLoading/Game/T6/XModel/JsonXModelLoader.cpp @@ -6,6 +6,7 @@ #include #include #include +#include using namespace nlohmann; using namespace T6; @@ -109,7 +110,7 @@ namespace T6 std::set dependenciesSet; const JsonLoader loader(stream, *memory, *manager, dependenciesSet); - dependencies.assign_range(dependenciesSet); + dependencies.assign(dependenciesSet.cbegin(), dependenciesSet.cend()); return loader.Load(xmodel); } diff --git a/src/ObjWriting/XModel/Gltf/GltfTextOutput.cpp b/src/ObjWriting/XModel/Gltf/GltfTextOutput.cpp index 7547b3d2..267e5f68 100644 --- a/src/ObjWriting/XModel/Gltf/GltfTextOutput.cpp +++ b/src/ObjWriting/XModel/Gltf/GltfTextOutput.cpp @@ -22,7 +22,7 @@ std::optional TextOutput::CreateBufferUri(const void* buffer, const std::string output(base64BufferSize, '\0'); - std::memcpy(output.data(), &GLTF_DATA_URI_PREFIX, URI_PREFIX_LENGTH); + std::memcpy(output.data(), GLTF_DATA_URI_PREFIX, URI_PREFIX_LENGTH); unsigned long outLength = base64Length; base64_encode(static_cast(buffer), bufferSize, &output[URI_PREFIX_LENGTH], &outLength); diff --git a/src/ObjWriting/XModel/Gltf/GltfWriter.cpp b/src/ObjWriting/XModel/Gltf/GltfWriter.cpp index 01d37ac1..17cdbf25 100644 --- a/src/ObjWriting/XModel/Gltf/GltfWriter.cpp +++ b/src/ObjWriting/XModel/Gltf/GltfWriter.cpp @@ -76,11 +76,6 @@ namespace gltf.meshes->emplace_back(std::move(mesh)); } - static unsigned CreateNodeIndexFromBoneIndex(const unsigned boneIndex) - { - return boneIndex + NODE_FIRST_INDEX_BONES; - } - void CreateSkeletonNodes(JsonRoot& gltf) const { if (m_bones.empty()) @@ -89,20 +84,22 @@ namespace if (!gltf.nodes.has_value()) gltf.nodes.emplace(); - for (const auto [boneIndex, bone] : std::views::enumerate(m_bones)) + const auto boneCount = m_bones.size(); + for (auto boneIndex = 0u; boneIndex < boneCount; boneIndex++) { JsonNode boneNode; + const auto& bone = m_bones[boneIndex]; boneNode.name = bone.name; boneNode.translation = std::to_array(bone.globalOffset); boneNode.rotation = std::to_array({bone.globalRotation.m_x, bone.globalRotation.m_y, bone.globalRotation.m_z, bone.globalRotation.m_w}); - const auto isParentOf = [this, boneIndex](const unsigned b) + std::vector children; + for (auto maybeChildIndex = 0u; maybeChildIndex < boneCount; maybeChildIndex++) { - return m_bones[b].parentIndex == boneIndex; - }; - auto children = std::ranges::iota_view(0u, m_bones.size()) | std::views::filter(isParentOf) - | std::views::transform(CreateNodeIndexFromBoneIndex) | std::ranges::to>(); + if (m_bones[maybeChildIndex].parentIndex == static_cast(boneIndex)) + children.emplace_back(boneIndex + NODE_FIRST_INDEX_BONES); + } if (!children.empty()) boneNode.children = std::move(children); @@ -115,12 +112,17 @@ namespace if (m_bones.empty()) return; - JsonSkin skin; - skin.joints = - std::ranges::iota_view(0u, m_bones.size()) | std::views::transform(CreateNodeIndexFromBoneIndex) | std::ranges::to>(); - if (!gltf.skins.has_value()) gltf.skins.emplace(); + + JsonSkin skin; + + const auto boneCount = m_bones.size(); + + skin.joints.reserve(boneCount); + for (auto boneIndex = 0u; boneIndex < boneCount; boneIndex++) + skin.joints.emplace_back(boneIndex + NODE_FIRST_INDEX_BONES); + gltf.skins->emplace_back(std::move(skin)); }