예제 #1
0
        private void UpdateQuadrants()
        {
            QuadrantLocation[] sectors_=Quadrant.Keys.ToArray();
                     string debugstring="";

                     foreach (var item in sectors_)
                     {
                          GridPoint cornerPoint;
                          GridPoint[] sectorpoints=this.QuadrantPoints(item, out cornerPoint);
                          if (sectorpoints==null||cornerPoint==null)
                          {
                                this.Quadrant[item]=null;
                                continue;
                          }
                          //Logging.WriteVerbose("Sectorpoints Count {0}", sectorpoints.Length);
                          Quadrant[item]=new GPQuadrant(sectorpoints, CreationVector, cornerPoint);

                          //item = new Sector(Points.SectorPoints(item.SectorCode, true));
                          debugstring+="SectorID: "+item.ToString()+" "+Quadrant[item].ContainedPoints.Count+",";
                     }

                     if (Bot.SettingsFunky.LogSafeMovementOutput)
                          Logging.WriteDiagnostic(debugstring);
        }
예제 #2
0
        public bool TryFindSafeSpot(Vector3 CurrentPosition, out Vector3 safespot, Vector3 los, bool kite=false, bool checkAvoidIntersection=false, bool expandOnFailure=false)
        {
            lastUsedQuadrant=null;
                     safespot=Vector3.Zero;

                     //Do not continue search if all sectors failed recently.
                     if (AllQuadrantsFailed) return false;

                     foreach (var item in Quadrant.Values)
                     {
                          if (item==null) continue;

                          if (item.FindSafeSpot(CurrentPosition, out safespot, los, kite, checkAvoidIntersection))
                          {
                                lastUsedQuadrant=item;
                                return true;
                          }
                     }

                     AllQuadrantsFailed=true;

                     if (expandOnFailure&&CanExpandFurther)
                     {
                          //Logging.WriteVerbose("Expanding GPC due to failure to find a location!");
                          this.FullyExpand();
                          this.UpdateQuadrants();
                          this.UpdateObjectCount();
                     }
                     return false;
        }