MCPcopy Create free account
hub / github.com/assimp/assimp / ImportSkeleton

Method ImportSkeleton

code/AssetLib/Ogre/OgreXmlSerializer.cpp:467–503  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

465// Skeleton
466
467bool OgreXmlSerializer::ImportSkeleton(Assimp::IOSystem *pIOHandler, MeshXml *mesh) {
468 if (!mesh || mesh->skeletonRef.empty())
469 return false;
470
471 // Highly unusual to see in read world cases but support
472 // XML mesh referencing a binary skeleton file.
473 if (EndsWith(mesh->skeletonRef, ".skeleton", false)) {
474 if (OgreBinarySerializer::ImportSkeleton(pIOHandler, mesh))
475 return true;
476
477 /** Last fallback if .skeleton failed to be read. Try reading from
478 .skeleton.xml even if the XML file referenced a binary skeleton.
479 @note This logic was in the previous version and I don't want to break
480 old code that might depends on it. */
481 mesh->skeletonRef = mesh->skeletonRef + ".xml";
482 }
483
484 XmlParserPtr xmlParser = OpenXmlParser(pIOHandler, mesh->skeletonRef);
485 if (!xmlParser.get())
486 return false;
487
488 Skeleton *skeleton = new Skeleton();
489 OgreXmlSerializer serializer(xmlParser.get());
490 XmlNode root = xmlParser->getRootNode();
491 if (std::string(root.name()) != nnSkeleton) {
492 ASSIMP_LOG_VERBOSE_DEBUG("nSkeleton is not a valid root: ", root.name(), ".");
493 for (auto &a : root.children()) {
494 if (std::string(a.name()) == nnSkeleton) {
495 root = a;
496 break;
497 }
498 }
499 }
500 serializer.ReadSkeleton(root, skeleton);
501 mesh->skeleton = skeleton;
502 return true;
503}
504
505bool OgreXmlSerializer::ImportSkeleton(Assimp::IOSystem *pIOHandler, Mesh *mesh) {
506 if (!mesh || mesh->skeletonRef.empty()) {

Callers

nothing calls this directly

Calls 7

getRootNodeMethod · 0.80
childrenMethod · 0.80
EndsWithFunction · 0.70
emptyMethod · 0.45
getMethod · 0.45
nameMethod · 0.45
ReadSkeletonMethod · 0.45

Tested by

no test coverage detected