public static bool HasPathConnectingViaPoint(
        GameObject a,
        GameObject b,
        Vector3 point,
        int areaMask    = -1,
        int agentTypeID = 0)
    {
        NavMeshPath        navMeshPath        = new NavMeshPath();
        NavMeshQueryFilter navMeshQueryFilter = (NavMeshQueryFilter)null;

        ((NavMeshQueryFilter) ref navMeshQueryFilter).set_areaMask(areaMask);
        ((NavMeshQueryFilter) ref navMeshQueryFilter).set_agentTypeID(agentTypeID);
        NavMesh.CalculatePath(a.get_transform().get_position(), b.get_transform().get_position(), navMeshQueryFilter, navMeshPath);
        if (navMeshPath.get_status() != null)
        {
            return(false);
        }
        for (int index = 0; index < navMeshPath.get_corners().Length; ++index)
        {
            if ((double)Vector3.Distance(navMeshPath.get_corners()[index], point) < 0.100000001490116)
            {
                return(true);
            }
        }
        return(false);
    }
    public bool SetDestinationWithPathCheck(Vector3 _point, float _distance, bool _isStopped = false)
    {
        NavMeshPath _path = new NavMeshPath();
        NavMeshHit  _hit  = (NavMeshHit)null;

        return(this.CalculatePath(_point, _path) && _path.get_status() == null && (this.FindClosestEdge(_point, out _hit) && ((NavMeshHit) ref _hit).get_hit()) && (double)_distance <= (double)((NavMeshHit) ref _hit).get_distance() && this.SetDestination(_point, _isStopped));
    }
    public static bool HasPathConnecting(GameObject a, GameObject b, int areaMask = -1, int agentTypeID = 0)
    {
        NavMeshPath        navMeshPath        = new NavMeshPath();
        NavMeshQueryFilter navMeshQueryFilter = (NavMeshQueryFilter)null;

        ((NavMeshQueryFilter) ref navMeshQueryFilter).set_areaMask(areaMask);
        ((NavMeshQueryFilter) ref navMeshQueryFilter).set_agentTypeID(agentTypeID);
        NavMesh.CalculatePath(a.get_transform().get_position(), b.get_transform().get_position(), navMeshQueryFilter, navMeshPath);
        return(navMeshPath.get_status() == 0);
    }
        public float GetRemainingDistance(Actor actor, NavMeshPath path)
        {
            float num = float.MaxValue;

            if (Object.op_Equality((Object)actor, (Object)null) || path == null || path.get_status() != null)
            {
                return(num);
            }
            num = 0.0f;
            for (int index = 0; index < this.CalcPath.get_corners().Length - 1; ++index)
            {
                num += Vector3.Distance(this.CalcPath.get_corners()[index], this.CalcPath.get_corners()[index + 1]);
            }
            return(num);
        }