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); }
IKStates GetIKStates(AvatarIKGoal goal) { IKStates r = null; foreach (IKStates i in ikStates) { if (i.goal == goal) { r = i; break; } } return(r); }