public Transform RequestDestination()
    {
        // returns a proper destination for NPC to follow. Can interupt current path to take a new path.
        NPC_Pathfinder targetScriptRef = ChaseTarget.GetComponent <NPC_Pathfinder>();

        if (NPCRef.currentCluster.transform.name != targetScriptRef.currentCluster.transform.name)
        {
            // then go to this cluster.
            isTargetInSameCluster = false;
            curDestinationCluster = targetScriptRef.closestNode.GetComponent <Node>().cluster.GetComponent <Cluster>().transform;
            if (useClosestORRandomClusterExit)
            {
                return(targetScriptRef.closestNode.GetComponent <Node>().cluster.GetComponent <Cluster>().GetFastestExit(transform.position, ChaseTarget.transform.position).transform);
            }
            else
            {
                Cluster temp = targetScriptRef.closestNode.GetComponent <Node>().cluster.GetComponent <Cluster>();
                return(temp.clusterExits[Random.Range(0, temp.clusterExits.Count)].transform);
            }
        }
        else
        {
            //same cluster
            isTargetInSameCluster = true;
            return(targetScriptRef.FindClosestNode(ChaseTarget.transform.position).transform);
        }
    }
 void Start()
 {
     NPCRef = GetComponent <NPC_Pathfinder>();
 }