public static float Evaluate(CoverContext c, CoverPoint option, float arcThreshold) { float single; if (c != null) { if (option.IsReserved || option.IsCompromised) { return(0f); } Vector3 serverPosition = c.Self.Entity.ServerPosition; if (option.ProvidesCoverFromPoint(c.DangerPoint, arcThreshold)) { Vector3 position = option.Position - serverPosition; Vector3 dangerPoint = c.DangerPoint - serverPosition; float single1 = Vector3.Dot(position.normalized, dangerPoint.normalized); if (CoverScorer.EvaluateAdvancement(c, option, position, dangerPoint, single1, out single)) { return(single); } if (CoverScorer.EvaluateRetreat(c, option, position, dangerPoint, ref single1, out single)) { return(single); } if (CoverScorer.EvaluateFlanking(c, option, position, dangerPoint, single1, out single)) { return(single); } } } return(0f); }
public static float Evaluate(CoverContext c, CoverPoint option, float arcThreshold) { if (c != null && !option.IsReserved && !option.IsCompromised) { Vector3 serverPosition = c.Self.Entity.ServerPosition; if (option.ProvidesCoverFromPoint(c.DangerPoint, arcThreshold)) { Vector3 dirCover = Vector3.op_Subtraction(option.Position, serverPosition); Vector3 dirDanger = Vector3.op_Subtraction(c.DangerPoint, serverPosition); float directness = Vector3.Dot(((Vector3) ref dirCover).get_normalized(), ((Vector3) ref dirDanger).get_normalized()); float result; if (CoverScorer.EvaluateAdvancement(c, option, dirCover, dirDanger, directness, out result) || CoverScorer.EvaluateRetreat(c, option, dirCover, dirDanger, ref directness, out result) || CoverScorer.EvaluateFlanking(c, option, dirCover, dirDanger, directness, out result)) { return(result); } } } return(0.0f); }
public virtual float Score(IAIContext context, CoverPoint option) { return(CoverScorer.Evaluate(context as CoverContext, option, this.coverFromPointArcThreshold)); }