コード例 #1
0
        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);
        }
コード例 #2
0
 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);
 }
コード例 #3
0
 public virtual float Score(IAIContext context, CoverPoint option)
 {
     return(CoverScorer.Evaluate(context as CoverContext, option, this.coverFromPointArcThreshold));
 }