fBaseXtensions.Navigation.Navigation.ObstaclePrioritizeCheck C# (CSharp) Method

ObstaclePrioritizeCheck() public method

Checks bots movement flags then prioritizes all objects that are considered to be blocking.
public ObstaclePrioritizeCheck ( float range = 20f ) : void
range float
return void
        public void ObstaclePrioritizeCheck(float range = 20f)
        {
            if (DateTime.Now.Subtract(LastObstacleIntersectionTest).TotalMilliseconds > 1500)
            {
                if (!FunkyGame.Hero.IsMoving || FunkyGame.Hero.currentMovementState.Equals(MovementState.WalkingInPlace) || FunkyGame.Hero.currentMovementState.Equals(MovementState.None) || FunkyGame.Targeting.cMovement.BlockedMovementCounter > 0)
                {
                    LastObstacleIntersectionTest = DateTime.Now;

                    //modify range based upon # of stucks
                    if (PlayerMover.iTotalAntiStuckAttempts > 0) range += (PlayerMover.iTotalAntiStuckAttempts * 5f);

                    //get collection of objects that pass the tests.
                    var intersectingObstacles = FunkyGame.Targeting.Cache.Environment.NearbyObstacleObjects //ObjectCache.Obstacles.Values.OfType<CacheServerObject>()
                                                                              .Where(obstacle =>
                                                                                    !PrioritizedRAGUIDs.Contains(obstacle.RAGUID)//Only objects not already prioritized
                                                                                    && obstacle.Obstacletype.HasValue
                                                                                    && ObjectCache.CheckFlag(ObstacleType.Navigation, obstacle.Obstacletype.Value)//only navigation/intersection blocking objects!
                                                                                    && obstacle.RadiusDistance <= range //Only within range..
                                                                                    && obstacle.BotIsFacing() || obstacle.RadiusDistance <= 0f);
                    //&&obstacle.TestIntersection(BotGridPoint, IntersectionDestinationPoint));

                    if (intersectingObstacles.Any())
                    {
                        var intersectingObjectRAGUIDs = (from objs in intersectingObstacles
                                                         select objs.RAGUID);

                        PrioritizedRAGUIDs.AddRange(intersectingObjectRAGUIDs);
                    }
                }
            }
        }