From 689406fbda12667d42f23a82c384703f4cf55e53 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 4 Sep 2020 07:33:10 +0200 Subject: [PATCH] Fix Colladat import. --- code/AssetLib/AMF/AMFImporter.cpp | 3 +-- code/AssetLib/AMF/AMFImporter_Geometry.cpp | 2 +- code/AssetLib/AMF/AMFImporter_Postprocess.cpp | 8 ++++++-- code/AssetLib/Collada/ColladaParser.cpp | 8 ++++++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/code/AssetLib/AMF/AMFImporter.cpp b/code/AssetLib/AMF/AMFImporter.cpp index 801f38e85..9c6b09025 100644 --- a/code/AssetLib/AMF/AMFImporter.cpp +++ b/code/AssetLib/AMF/AMFImporter.cpp @@ -327,9 +327,8 @@ void AMFImporter::ParseNode_Root() { } else if (currentName == "metadata") { ParseNode_Metadata(currentNode); } - mNodeElement_Cur = ne; // force restore "current" element } - + mNodeElement_Cur = ne; // force restore "current" element mNodeElement_List.push_back(ne); // add to node element list because its a new object in graph. } diff --git a/code/AssetLib/AMF/AMFImporter_Geometry.cpp b/code/AssetLib/AMF/AMFImporter_Geometry.cpp index 394474b91..7a64c64fd 100644 --- a/code/AssetLib/AMF/AMFImporter_Geometry.cpp +++ b/code/AssetLib/AMF/AMFImporter_Geometry.cpp @@ -134,7 +134,7 @@ void AMFImporter::ParseNode_Vertex(XmlNode &node) { ParseNode_Coordinates(coordNode); coord_read = true; } - if (!coord_read && !coord_read) { + if (!coord_read && !col_read) { mNodeElement_Cur->Child.push_back(ne); // Add element to child list of current element } diff --git a/code/AssetLib/AMF/AMFImporter_Postprocess.cpp b/code/AssetLib/AMF/AMFImporter_Postprocess.cpp index a86082cfd..3b09af1f0 100644 --- a/code/AssetLib/AMF/AMFImporter_Postprocess.cpp +++ b/code/AssetLib/AMF/AMFImporter_Postprocess.cpp @@ -739,7 +739,9 @@ void AMFImporter::Postprocess_BuildScene(aiScene *pScene) { } // for(const CAMFImporter_NodeElement* ne: mNodeElement_List) // Check if root element are found. - if (root_el == nullptr) throw DeadlyImportError("Root() element not found."); + if (root_el == nullptr) { + throw DeadlyImportError("Root() element not found."); + } // after that walk through children of root and collect data. Five types of nodes can be placed at top level - in : , , , // and . But at first we must read and because they will be used in . can be read @@ -748,7 +750,9 @@ void AMFImporter::Postprocess_BuildScene(aiScene *pScene) { // 1. // 2. will be converted later when processing triangles list. \sa Postprocess_BuildMeshSet for (const AMFNodeElementBase *root_child : root_el->Child) { - if (root_child->Type == AMFNodeElementBase::ENET_Material) Postprocess_BuildMaterial(*((AMFMaterial *)root_child)); + if (root_child->Type == AMFNodeElementBase::ENET_Material) { + Postprocess_BuildMaterial(*((AMFMaterial *)root_child)); + } } // After "appearance" nodes we must read because it will be used in -> . diff --git a/code/AssetLib/Collada/ColladaParser.cpp b/code/AssetLib/Collada/ColladaParser.cpp index 29739298e..99c0d6863 100644 --- a/code/AssetLib/Collada/ColladaParser.cpp +++ b/code/AssetLib/Collada/ColladaParser.cpp @@ -621,7 +621,9 @@ void ColladaParser::ReadController(XmlNode &node, Collada::Controller &pControll } else if (currentName == "skin") { pController.mMeshId = currentNode.attribute("source").as_string(); } else if (currentName == "bind_shape_matrix") { - const char *content = currentNode.value(); + std::string v; + XmlParser::getValueAsString(currentNode, v); + const char *content = v.c_str(); for (unsigned int a = 0; a < 16; a++) { // read a number content = fast_atoreal_move(content, pController.mBindShapeMatrix[a]); @@ -2163,7 +2165,9 @@ void ColladaParser::ReadNodeTransformation(XmlNode &node, Node *pNode, Transform // how many parameters to read per transformation type static const unsigned int sNumParameters[] = { 9, 4, 3, 3, 7, 16 }; - const char *content = node.value(); + std::string value; + XmlParser::getValueAsString(node, value); + const char *content = value.c_str(); // read as many parameters and store in the transformation for (unsigned int a = 0; a < sNumParameters[pType]; a++) {