Ejemplo n.º 1
0
        public override object GetValue(NodePort port)
        {
            if (port.fieldName == "ValueOut")
            {
                int      value      = 0;
                NodePort valuesPort = GetInputPort("ValuesIn");
                if (valuesPort.IsConnected)
                {
                    int[] floats = valuesPort.GetInputValues <int>();
                    switch (Filter)
                    {
                    case FilterType.Sum:
                        value = floats.Sum();
                        break;

                    case FilterType.Max:
                        value = Mathf.Max(floats);
                        break;

                    case FilterType.Min:
                        value = Mathf.Min(floats);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
                if (Negate)
                {
                    value = -value;
                }
                return(value);
            }
            return(null);
        }
Ejemplo n.º 2
0
        public int GetWeight()
        {
            NodePort bonusPort      = GetInputPort(nameof(Bonus));
            int      bonus          = bonusPort.IsConnected ? bonusPort.GetInputValues <int>().Sum() + 1 : Bonus;
            NodePort multiplierPort = GetInputPort(nameof(Multiplier));
            int      multiplier     = multiplierPort.IsConnected
                ? multiplierPort.GetInputValues <int>().Aggregate((total, next) => total * next)
                : Multiplier;

            return(bonus * multiplier);
        }
Ejemplo n.º 3
0
 public override object GetValue(NodePort port)
 {
     if (port.fieldName == "ValueOut")
     {
         NodePort valuePort = GetInputPort("ValueIn");
         if (valuePort.IsConnected)
         {
             int[] value = valuePort.GetInputValues <int>();
             return(value.Sum() > 0 ? FlattenValue : 0);
         }
     }
     return(null);
 }
Ejemplo n.º 4
0
        private Tuple <float, int> GetUtility()
        {
            NodePort utilityPort = GetInputPort("Utilities");
            float    utility;

            if (utilityPort.IsConnected)
            {
                float[] floats = utilityPort.GetInputValues <float>();
                switch (UtilityMerge)
                {
                case MergeType.Average:
                    utility = floats.Average();
                    break;

                case MergeType.Max:
                    utility = Mathf.Max(floats);
                    break;

                case MergeType.Min:
                    utility = Mathf.Min(floats);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            else
            {
                utility = Utilities;
            }
            NodePort bonusPort      = GetInputPort("Bonus");
            int      bonus          = bonusPort.IsConnected ? bonusPort.GetInputValues <int>().Sum() : Bonus;
            NodePort multiplierPort = GetInputPort("Multiplier");
            int      multiplier     = multiplierPort.IsConnected ? multiplierPort.GetInputValues <int>()
                                      .Aggregate((total, next) => total * next) : Multiplier;

            return(new Tuple <float, int>(utility, (bonus + 1) * multiplier));
        }
Ejemplo n.º 5
0
        public int GetRank()
        {
            NodePort utilityPort = GetInputPort(nameof(Ranks));

            if (utilityPort.IsConnected)
            {
                int[] ints = utilityPort.GetInputValues <int>();
                switch (Select)
                {
                case MergeType.Average:
                    return((int)ints.Average());

                case MergeType.Max:
                    return(Mathf.Max(ints));

                case MergeType.Min:
                    return(Mathf.Min(ints));

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            return(Ranks);
        }