public void CopySnapshot(ref IKSnapshot to, IKSnapshot from)
 {
     to.lh = from.lh;
     to.rh = from.rh;
     to.lf = from.lf;
     to.rf = from.rf;
 }
        public void CreatePositions(Vector3 origin, Vector3 moveDir, bool isMid)
        {
            delta = Time.deltaTime;
            HandleAnim(moveDir, isMid);

            if (!isMid)
            {
                UpdateGoals(moveDir);
                prevMovDir = moveDir;
            }
            else
            {
                UpdateGoals(prevMovDir);
            }

            IKSnapshot ik = CreateSnapShot(origin);

            CopySnapshot(ref current, ik);

            SetIKPosition(isMid, goals.lh, current.lh, AvatarIKGoal.LeftHand);
            SetIKPosition(isMid, goals.rh, current.rh, AvatarIKGoal.RightHand);
            SetIKPosition(isMid, goals.lf, current.lf, AvatarIKGoal.LeftFoot);
            SetIKPosition(isMid, goals.rf, current.rf, AvatarIKGoal.RightFoot);

            UpdateIKWeight(AvatarIKGoal.LeftHand, 1);
            UpdateIKWeight(AvatarIKGoal.RightHand, 1);
            UpdateIKWeight(AvatarIKGoal.LeftFoot, 1);
            UpdateIKWeight(AvatarIKGoal.RightFoot, 1);
        }
        public IKSnapshot CreateSnapShot(Vector3 origin)
        {
            IKSnapshot r   = new IKSnapshot();
            Vector3    _lh = LocalToWorld(ikBase.lh);

            r.lh = GetPosActual(_lh, AvatarIKGoal.LeftHand);
            Vector3 _rh = LocalToWorld(ikBase.rh);

            r.rh = GetPosActual(_rh, AvatarIKGoal.RightHand);
            Vector3 _lf = LocalToWorld(ikBase.lf);

            r.lf = GetPosActual(_lf, AvatarIKGoal.LeftFoot);
            Vector3 _rf = LocalToWorld(ikBase.rf);

            r.rf = GetPosActual(_rf, AvatarIKGoal.RightFoot);
            return(r);
        }
 public void Init(FreeClimb c, Transform helper)
 {
     anim        = c.anim;
     ikBase      = c.baseIKsnapshot;
     this.helper = helper;
 }