Beispiel #1
0
    /// <summary>
    ///
    /// </summary>
    /// <param name="parent"></param>
    /// <param name="transformChain"></param>
    /// <param name="endPoint"></param>
    /// <param name="endTransName"></param>
    /// <returns></returns>
    private static bool FindEndRecursive(Transform parent, List <IterativeIKJoint> transformChain, ref Transform endPoint, string endTransName)
    {
        bool bEndFound = false;

        foreach (Transform child in parent)
        {
            if (child.gameObject.activeSelf)
            {
                if (child.name == endTransName)
                {
                    endPoint  = child;
                    bEndFound = true;
                    break;
                }
                else if (bEndFound = FindEndRecursive(child, transformChain, ref endPoint, endTransName))
                {
                    IterativeIKJoint joint = child.GetComponent <IterativeIKJoint>();
                    if (joint != null)
                    {
                        transformChain.Insert(0, joint);
                    }
                    break;
                }
            }
        }
        return(bEndFound);
    }
Beispiel #2
0
 /// <summary>
 ///
 /// </summary>
 private void FindChainToEnd()
 {
     ikChain = new List <IterativeIKJoint>();
     if (FindEndRecursive(transform, ikChain, ref ikEnd, endName))
     {
         IterativeIKJoint joint = transform.GetComponent <IterativeIKJoint>();
         if (joint != null)
         {
             ikChain.Insert(0, joint);
         }
     }
 }