private void _InitSkeletonDescNode(SkeletonDescNode node, Transform curJoint, Transform[] joints) { node.m_BoneName = curJoint.name; //node.m_Transform = curJoint; var children = node.m_ChildBones = new List <SkeletonDescNode>(); for (int idx = 0; idx < curJoint.childCount; ++idx) { Transform cTr = curJoint.GetChild(idx); if (joints.Contains(cTr)) { SkeletonDescNode newNode = new SkeletonDescNode(); _InitSkeletonDescNode(newNode, cTr, joints); children.Add(newNode); } } }
private bool _RecursiveMatch(SkeletonDescNode node, Transform curJoint, Transform[] joints) { //node.m_Transform = curJoint; for (int idx = 0; idx < node.m_ChildBones.Count; ++idx) { SkeletonDescNode cnode = node.m_ChildBones[idx]; //child desc_node Transform cJoint = _FindJointByName(joints, cnode.m_BoneName); //child_joint if (cJoint == null) { Dbg.LogWarn("PoseSet._Match: current skeleton doesn't have bone named: {0}", cnode.m_BoneName); return(false); } if (!_RecursiveMatch(cnode, cJoint, joints)) { return(false); } } return(true); }