Exemplo n.º 1
0
        public static bool CheckPositionForSkipping(Vector3 Position)
        {
            foreach (var v in UsedSkipAheadAreaCache)
            {
                if (Position.Distance(v.Position) <= v.Radius)
                {
                    return(true);
                }
            }

            bool valid = false;

            if (SkipAheadAreaCache.Count > 0)
            {
                int validIndex = -1;
                for (int i = 0; i < SkipAheadAreaCache.Count - 1; i++)
                {
                    SkipAheadNavigation v = SkipAheadAreaCache[i];
                    if (Position.Distance(v.Position) <= v.Radius)
                    {
                        validIndex = i;
                        valid      = true;
                        break;
                    }
                }
                if (valid && validIndex > 0)
                {
                    UsedSkipAheadAreaCache.Add(SkipAheadAreaCache[validIndex].Clone());
                    SkipAheadAreaCache.RemoveRange(0, validIndex - 1);
                    SkipAheadAreaCache.TrimExcess();
                }
            }
            return(valid);
        }