void SetIKPos(AvatarIKGoal goal, Vector3 targetPos, float weight)
        {
            IKStates ikState = GetIKStates(goal);

            if (ikState == null)
            {
                ikState      = new IKStates();
                ikState.goal = goal;
                ikStates.Add(ikState);
            }

            if (weight == 0)
            {
                ikState.isSet = false;
            }

            if (!ikState.isSet)
            {
                ikState.position = GoalToBodyBones(goal).position;
                ikState.isSet    = true;
            }

            ikState.positionWeight = weight;
            ikState.position       = Vector3.Lerp(ikState.position, targetPos, delta * lerpSpeed);

            anim.SetIKPositionWeight(goal, ikState.positionWeight);
            anim.SetIKPosition(goal, ikState.position);
        }
Example #2
0
    IKStates GetIKStates(AvatarIKGoal goal)
    {
        IKStates r = null;

        foreach (IKStates i in ikStates)
        {
            if (i.goal == goal)
            {
                r = i;
                break;
            }
        }
        return(r);
    }