NavMeshAgent nextPosition is not updating

I set the destination when the player clicks on the environment. NavMesh is baked. Here is the actual movement of agent.

using UnityEngine;
using UnityEngine.AI;
using System.Collections;

public class AnimateMovement : MonoBehaviour {

    public Animator anim;
	public Transform player;
    public NavMeshAgent agent;
    Vector2 smoothDeltaPosition = Vector2.zero;
    Vector2 velocity = Vector2.zero;
	public bool isMoving = true;

    void Start()
    {
        //agent = GetComponent<NavMeshAgent>();
        agent.updatePosition = false;
    }

    void Update()
    {
		
		Debug.Log(agent.nextPosition + " " + player.position);
        Vector3 worldDeltaPosition = agent.nextPosition - player.position;

        // Map 'worldDeltaPosition' to local space
        float dx = Vector3.Dot(player.right, worldDeltaPosition);
        float dy = Vector3.Dot(player.forward, worldDeltaPosition);
        Vector2 deltaPosition = new Vector2(dx, dy);

        // Low-pass filter the deltaMove
        float smooth = Mathf.Min(1.0f, Time.deltaTime / 0.15f);
        smoothDeltaPosition = Vector2.Lerp(smoothDeltaPosition, deltaPosition, smooth);

        // Update velocity if delta time is safe
        if (Time.deltaTime > 1e-5f)
            velocity = smoothDeltaPosition / Time.deltaTime;
        Debug.DrawLine(deltaPosition, smoothDeltaPosition, Color.blue);
        isMoving = velocity.magnitude > 0.5f && agent.remainingDistance > agent.radius;

        // Update animation parameters
		anim.SetBool("Move", isMoving);
        anim.SetFloat("velx", velocity.x);
        anim.SetFloat("vely", velocity.y);
		//Debug.Log(worldDeltaPosition);
    }

    void OnAnimatorMove()
    {
		// You'd have to set this value yourself, lots of ways to do that with the animator.


		if (isMoving)
		{
			agent.velocity = anim.deltaPosition / Time.deltaTime;
			agent.speed = anim.deltaPosition.magnitude / Time.deltaTime;
		}
		else
		{
			agent.velocity = Vector3.zero;
			agent.speed = 0.00001f; // Setting it to 0 can cause agent to do weird stuff
		}
        // Update postion to agent position
		//Debug.Log("Moving");
		player.position = agent.nextPosition;
    }
}

The boolean agent.nextPosition stays the same whenever I set the destination like here:

 RaycastHit hit;
            if (Physics.Raycast(cam.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity))
            {                    
                    if (hit.collider.gameObject.layer == groundLayer)
                    {
                        if (Input.GetMouseButtonUp(0))
                        {
                            currentNode.CurrentNode = false;
                            currentNode = nm.getNearestNode(hit.transform.position);
                            currentNode.CurrentNode = true;
							//agent.nextPosition = currentNode.Position;
							agent.SetDestination(currentNode.Position);
							Debug.Log(agent.destination);
                        }
}
}

Here is the image. The red line shows the path is set, but the player is not moving.

Nevermind I figured out the problem