internal static CoverPoint GetClosestCover(
            NPCHumanContext c,
            Vector3 point,
            float MaxDistance,
            ProximityToCover.CoverType _coverType,
            out float bestDistance)
        {
            bestDistance = MaxDistance;
            CoverPoint coverPoint = (CoverPoint)null;

            for (int index = 0; index < c.sampledCoverPoints.Count; ++index)
            {
                CoverPoint           sampledCoverPoint     = c.sampledCoverPoints[index];
                CoverPoint.CoverType sampledCoverPointType = c.sampledCoverPointTypes[index];
                if ((_coverType != ProximityToCover.CoverType.Full || sampledCoverPointType == CoverPoint.CoverType.Full) && (_coverType != ProximityToCover.CoverType.Partial || sampledCoverPointType == CoverPoint.CoverType.Partial))
                {
                    float num = Vector3.Distance(sampledCoverPoint.Position, point);
                    if ((double)num < (double)bestDistance)
                    {
                        bestDistance = num;
                        coverPoint   = sampledCoverPoint;
                    }
                }
            }
            return(coverPoint);
        }
Example #2
0
        internal static CoverPoint GetClosestCover(NPCHumanContext c, Vector3 point, float MaxDistance, ProximityToCover.CoverType _coverType, out float bestDistance)
        {
            bestDistance = MaxDistance;
            CoverPoint coverPoint = null;

            for (int i = 0; i < c.sampledCoverPoints.Count; i++)
            {
                CoverPoint           item      = c.sampledCoverPoints[i];
                CoverPoint.CoverType coverType = c.sampledCoverPointTypes[i];
                if ((_coverType != ProximityToCover.CoverType.Full || coverType == CoverPoint.CoverType.Full) && (_coverType != ProximityToCover.CoverType.Partial || coverType == CoverPoint.CoverType.Partial))
                {
                    float single = Vector3.Distance(item.Position, point);
                    if (single < bestDistance)
                    {
                        bestDistance = single;
                        coverPoint   = item;
                    }
                }
            }
            return(coverPoint);
        }