From 3d6d383a150e3eb92287e0b0e120c2b384677337 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Fri, 8 Sep 2017 16:58:57 -0700 Subject: [PATCH] Clean up duplicate list code in encodeFBXProperty --- libraries/fbx/src/FBXWriter.cpp | 57 ++++++++++----------------------- 1 file changed, 17 insertions(+), 40 deletions(-) diff --git a/libraries/fbx/src/FBXWriter.cpp b/libraries/fbx/src/FBXWriter.cpp index f6bb92a8b5..9f389fca88 100644 --- a/libraries/fbx/src/FBXWriter.cpp +++ b/libraries/fbx/src/FBXWriter.cpp @@ -13,6 +13,17 @@ #include +template +void writeVector(QDataStream& out, char ch, QVector list) { + out.device()->write(&ch, 1); + out << (int32_t)list.length(); + out << (int32_t)0; + out << (int32_t)0; + for (auto& value : list) { + out << value; + } +} + QByteArray FBXWriter::encodeFBX(const FBXNode& root) { QByteArray data; @@ -93,6 +104,7 @@ void FBXWriter::encodeFBXProperty(QDataStream& out, const QVariant& prop) { case QVariant::Type::Bool: out.device()->write("C", 1); + //out.device()->write(prop.toBool() ? 1 : 0, 1); out << prop.toBool(); break; @@ -200,50 +212,15 @@ void FBXWriter::encodeFBXProperty(QDataStream& out, const QVariant& prop) { default: { if (prop.canConvert>()) { - auto list = prop.value>(); - out.device()->write("f", 1); - out << (int32_t)list.length(); - out << (int32_t)0; - out << (int32_t)0; - for (auto& value : list) { - out << value; - } + writeVector(out, 'f', prop.value>()); } else if (prop.canConvert>()) { - auto list = prop.value>(); - out.device()->write("d", 1); - out << (int32_t)list.length(); - out << (int32_t)0; - out << (int32_t)0; - for (auto& value : list) { - out << value; - } + writeVector(out, 'd', prop.value>()); } else if (prop.canConvert>()) { - auto list = prop.value>(); - out.device()->write("l", 1); - out << (int32_t)list.length(); - out << (int32_t)0; - out << (int32_t)0; - for (auto& value : list) { - out << value; - } + writeVector(out, 'l', prop.value>()); } else if (prop.canConvert>()) { - auto list = prop.value>(); - out.device()->write("i", 1); - out << (int32_t)list.length(); - out << (int32_t)0; - out << (int32_t)0; - for (auto& value : list) { - out << value; - } + writeVector(out, 'i', prop.value>()); } else if (prop.canConvert>()) { - auto list = prop.value>(); - out.device()->write("b", 1); - out << (int32_t)list.length(); - out << (int32_t)0; - out << (int32_t)0; - for (auto& value : list) { - out << value; - } + writeVector(out, 'b', prop.value>()); } else { qDebug() << "Unsupported property type in FBXWriter::encodeNode: " << type << prop; }