OSDN Git Service

データ構造の改良
[qtgeoviewer/QtGeoViewer.git] / Src / LibQtGeoViewerCore / Format / AssimpUtil.cpp
index 4054f50..a751232 100644 (file)
@@ -179,19 +179,22 @@ void AssimpUtil::ApplyTransform(aiNode* n, aiMatrix4x4 t, std::map<int, MeshBuf*
        }
 }
 
-void AssimpUtil::CreateBoneTree(BoneMap& bone_map, Bone* b, aiNode* n)
+void AssimpUtil::CreateBoneTree(BoneMap& bone_map, BoneNode* bn, aiNode* n)
 {
-       if (b == NULL)
+       if (bn == NULL)
                return;
 
-       ae::ConvertMat(b->m_NodeTrans, n->mTransformation);
+       Bone* b = bn->m_Bone;
+       if (b != NULL)
+               ae::ConvertMat(b->m_NodeTrans, n->mTransformation);
 
        for (int i = 0; i < n->mNumChildren; ++i)
        {
                aiNode* nc = n->mChildren[i];
-               Bone* bc = bone_map.Bones[nc->mName.C_Str()];
-               b->m_Children.push_back(bc);
-               CreateBoneTree(bone_map, bc, nc);
+               BoneNode* bnc = new BoneNode();
+               bnc->m_Bone = bone_map.Bones[nc->mName.C_Str()];
+               bn->m_Children.push_back(bnc);
+               CreateBoneTree(bone_map, bnc, nc);
        }
 }