MCPcopy Create free account
hub / github.com/axmolengine/axmol / loadNodes

Method loadNodes

core/3d/Bundle3D.cpp:821–888  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

819 return true;
820}
821bool Bundle3D::loadNodes(NodeDatas& nodedatas)
822{
823 if (_version == "0.1" || _version == "1.2" || _version == "0.2")
824 {
825 SkinData skinData;
826 if (!loadSkinData("", &skinData))
827 {
828 auto node = new NodeData();
829 auto modelnode = new ModelData();
830 modelnode->materialId = "";
831 modelnode->subMeshId = "";
832 node->modelNodeDatas.emplace_back(modelnode);
833 nodedatas.nodes.emplace_back(node);
834 return true;
835 }
836
837 auto nodeDatas = new NodeData*[skinData.skinBoneNames.size() + skinData.nodeBoneNames.size()];
838 int index = 0;
839 size_t i;
840 auto skinBoneSize = skinData.skinBoneNames.size();
841 auto nodeBoneSize = skinData.nodeBoneNames.size();
842 for (i = 0; i < skinBoneSize; ++i)
843 {
844 nodeDatas[index] = new NodeData();
845 nodeDatas[index]->id = skinData.skinBoneNames[i];
846 nodeDatas[index]->transform = skinData.skinBoneOriginMatrices[i];
847 ++index;
848 }
849 for (i = 0; i < nodeBoneSize; ++i)
850 {
851 nodeDatas[index] = new NodeData();
852 nodeDatas[index]->id = skinData.nodeBoneNames[i];
853 nodeDatas[index]->transform = skinData.nodeBoneOriginMatrices[i];
854 ++index;
855 }
856 for (const auto& it : skinData.boneChild)
857 {
858 const auto& children = it.second;
859 auto parent = nodeDatas[it.first];
860 for (const auto& child : children)
861 {
862 parent->children.emplace_back(nodeDatas[child]);
863 }
864 }
865 nodedatas.skeleton.emplace_back(nodeDatas[skinData.rootBoneIndex]);
866 auto node = new NodeData();
867 auto modelnode = new ModelData();
868 modelnode->materialId = "";
869 modelnode->subMeshId = "";
870 modelnode->bones = skinData.skinBoneNames;
871 modelnode->invBindPose = skinData.inverseBindPoseMatrices;
872 node->modelNodeDatas.emplace_back(modelnode);
873 nodedatas.nodes.emplace_back(node);
874 delete[] nodeDatas;
875 }
876 else
877 {
878 if (_isBinary)

Callers 2

loadFromFileMethod · 0.80

Calls 2

emplace_backMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected