Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
        }