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

CheckVectorFlags() public static method

public static CheckVectorFlags ( System.Vector3 currentPos, System.Vector3 targetPos, PointCheckingFlags flags ) : bool
currentPos System.Vector3
targetPos System.Vector3
flags PointCheckingFlags
return bool
        public static bool CheckVectorFlags(Vector3 currentPos, Vector3 targetPos, PointCheckingFlags flags)
        {
            //Avoidance Check (Any Avoidance)
            if (flags.HasFlag(PointCheckingFlags.AvoidanceOverlap))
            {
                if (ObjectCache.Obstacles.IsPositionWithinAvoidanceArea(targetPos)) return false;
            }

            //Kiting Check
            //if (flags.HasFlag(PointCheckingFlags.MonsterOverlap))
            //{
            //	if (ObjectCache.Objects.OfType<CacheUnit>().Any(m => m.ShouldFlee && m.IsPositionWithinRange(targetPos, FunkyBaseExtension.Settings.Fleeing.FleeMaxMonsterDistance))) return false;
            //}

            //Avoidance Intersection Check
            if (flags.HasFlag(PointCheckingFlags.AvoidanceIntersection))
            {
                if (ObjectCache.Obstacles.TestVectorAgainstAvoidanceZones(currentPos, targetPos)) return false;
            }

            Vector3 botcurpos = FunkyGame.Hero.Position;
            if (flags.HasFlag(PointCheckingFlags.Raycast))
            {
                if (!Navigation.CanRayCast(currentPos, targetPos)) return false;
            }
            if (flags.HasFlag(PointCheckingFlags.RaycastWalkable))
            {
                if (!Navigation.CanRayCast(currentPos, targetPos, NavCellFlags.AllowWalk)) return false;
            }
            if (flags.HasFlag(PointCheckingFlags.RaycastNavProvider))
            {
                if (!Navigation.CanRayCast(currentPos, targetPos, UseSearchGridProvider: true)) return false;
            }

            return true;
        }