public override float GetScore(BaseContext c, Vector3 option) { if (c.AIAgent.IsNavRunning()) { NavMeshAgent getNavAgent = c.AIAgent.GetNavAgent; if (Object.op_Inequality((Object)getNavAgent, (Object)null) && (!getNavAgent.get_hasPath() || getNavAgent.get_isPathStale() || (getNavAgent.get_pathStatus() == 1 || getNavAgent.get_pathStatus() == 2))) { Vector3 vector3 = Vector3.op_Subtraction(c.lastSampledPosition, option); if ((double)((Vector3) ref vector3).get_sqrMagnitude() < 0.100000001490116) { return(0.0f); } } } return(1f); }
public bool TryGetRemainingDistance( NavMeshAgent agent, Actor actor, out float remainingDistance) { remainingDistance = float.MaxValue; if (Object.op_Equality((Object)agent, (Object)null) || !((Behaviour)agent).get_isActiveAndEnabled() || !agent.get_isOnNavMesh()) { return(false); } if (!agent.get_hasPath()) { return(agent.get_pathPending()); } Vector3[] corners = agent.get_path().get_corners(); remainingDistance = 0.0f; for (int index = 0; index < corners.Length - 1; ++index) { remainingDistance += Vector3.Distance(corners[index], corners[index + 1]); } return(true); }
protected override bool HasPath() { NavMeshAgent navMeshAgent = this.Agent.NavMeshAgent; return(navMeshAgent.get_hasPath() && (double)navMeshAgent.get_remainingDistance() > (double)navMeshAgent.get_stoppingDistance()); }