终于写完
由于Animation结构体的定义为单链表形式,需要把多叉树骨骼数据转换为单链表中,十分头疼。
写之前要把转换的逻辑顺序想清楚,我在这采取深度优先(先深度后宽度)搜索,类似二叉树的前序遍历。把相关的几个函数帖出,区区几十行,但要把逻辑顺序想明白了,或许还有不对的地方。
/********************************************************
函数名称:FindFirstLeaf
功能描述:寻找本节点的叶子节点
参数说明:无
返 回 值:叶子节点
*********************************************************/
Frame_EX* Frame_EX::FindFirstLeaf()
{
Frame_EX* pFrame = FirstChildHaveSibling();
if(pFrame == this || pFrame->IsLeaf())
return pFrame;
else
return pFrame->m_pFrameSibling->LastLeaf();
}
//宽度搜索本节点的最后一个兄弟节点,如果没有则返回自身
Frame_EX* Frame_EX::LastSibling()
{
Frame_EX* pFrame = m_pFrameSibling;
if(!pFrame)
return