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); }
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); }