private NodeContent extractNo(aiNode node)
{
NodeContent nodeContent = new NodeContent();
nodeContent.Name = node.mName.Data;
nodeContent.Transform = tomatrix(node.mTransformation);
ainodetocontent.Add(node.mName.Data, nodeContent);
wbone.Clear();
for (int i = 0; i < node.mNumMeshes; i++)
{
for (int j = 0; j < scene.mMeshes[(int)node.mMeshes[i]].mNumBones; j++)
{
aiBone b = scene.mMeshes[(int)node.mMeshes[i]].mBones[j];
for (int w = 0; w < b.mNumWeights; w++)
{
aiVertexWeight vw = b.GetmWeights()[w];
if (!wbone.ContainsKey((int)vw.mVertexId))
{
wbone[(int)vw.mVertexId] = new List <KeyValuePair <string, float> >();
}
wbone[(int)vw.mVertexId].Add(new KeyValuePair <string, float>(b.mName.Data, vw.mWeight));
}
bones.Add(b);
}
log("model " + node.mMeshes[i].ToString());
MeshContent MeshContent = ExtractMesh(scene.mMeshes[(int)node.mMeshes[i]]);
MeshHelper.SwapWindingOrder(MeshContent);
MeshHelper.OptimizeForCache(MeshContent);
nodeContent.Children.Add(MeshContent);
}
foreach (var item in node.mChildren)
{
nodeContent.Children.Add(extractNo(item));
}
return(nodeContent);
}