public void RequestPath(NavRequest navRequest)//, GameObject player, float z_size, float p_size) { if (!pathRequestQueue.Contains(navRequest)) { pathRequestQueue.Enqueue(navRequest); } }
public static void RequestPath(NavRequest navRequest) { NavRequest request = Singleton.pathRequestQueue.Find(x => x.subject == navRequest.subject); Singleton.pathRequestQueue.Remove(request); Singleton.pathRequestQueue.Add(navRequest); }
//Need optimization //Initialize every subject seekers' surrounding nodes as startnodes; spreading from target and pickup start node and assign to according subject's path void Update() { int process_count = process_thredshold; while (pathRequestQueue.Count > 0 && process_count > 0)//something missing here? { process_count -= 1; for (int i = 0; i < area_dict.Count; i++) { area_dict[i].initialize(); } NavRequest navRequest = pathRequestQueue[0]; pathRequestQueue.RemoveAt(0); if (navRequest.subject != null) { AI_Movement ai = navRequest.subject; //Navigate List <Vector2> solution = Astar_Algorithm_pathVector2(navRequest.currLocation, navRequest.destineLocation, navRequest.agentSize); ai.setNavigationPath(solution); } } }
//THIS HANDLES OUR QUEUED NAV REQUESTS private IEnumerator HandleQueue() { while (true) { if (QueuedNavs.Count > 0 && !bIsWorking) { //Take the front waiting part of the queue NavRequest CurRequest = QueuedNavs[0]; QueuedNavs.RemoveAt(0); //Passes our request to the system StartCoroutine(GeneratePathTo(CurRequest.TargetX, CurRequest.TargetY, CurRequest.SourceX, CurRequest.SourceY, CurRequest.Requester, CurRequest.FinishCallBack)); } yield return(null); } }
FunDedicatedServerRpcMessage onNavRequest(string type, FunDedicatedServerRpcMessage request) { NavRequest req = FunapiDSRpcMessage.GetMessage <NavRequest>(request, MessageType.nav_request); // NavMeshAgent.CalculatePath(req.destination, path); NavReply reply = new NavReply(); // For the test Vector3[] corners = new [] { Vector3.zero, Vector3.one, Vector3.back }; for (int i = 0; i < corners.Length; ++i) { NavVector3 point = new NavVector3(); point.x = corners[i].x; point.y = corners[i].y; point.z = corners[i].z; reply.waypoints.Add(point); } return(FunapiDSRpcMessage.CreateMessage(reply, MessageType.nav_reply)); }
public static void CancelRequestPath(AI_Movement subject) { NavRequest request = Singleton.pathRequestQueue.Find(x => x.subject == subject); Singleton.pathRequestQueue.Remove(request); }
public void update(NavRequest newRequest) { destineLocation = newRequest.destineLocation; currLocation = newRequest.currLocation; agentSize = newRequest.agentSize; }