protected float ComputeOperationTypeToken(SimulationModifierDescriptor.ModifierOperation operationType, ref string operation, ref string valueFormat, ref bool round)
        {
            float result = 0f;

            round       = false;
            valueFormat = "#####0.#";
            switch (operationType)
            {
            case SimulationModifierDescriptor.ModifierOperation.Addition:
                operation = "+";
                break;

            case SimulationModifierDescriptor.ModifierOperation.Subtraction:
                operation = "-";
                break;

            case SimulationModifierDescriptor.ModifierOperation.Multiplication:
                operation = "×";
                result    = 1f;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Division:
                operation = "/";
                result    = 1f;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Power:
                operation = "^";
                result    = 1f;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Percent:
                operation   = "+";
                valueFormat = "#####0%";
                break;

            case SimulationModifierDescriptor.ModifierOperation.Maximum:
                operation = "max. ";
                result    = float.NegativeInfinity;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Minimum:
                operation = "min. ";
                result    = float.PositiveInfinity;
                break;

            default:
                operation = string.Empty;
                break;
            }
            return(result);
        }
        protected float ExecuteOperation(SimulationModifierDescriptor.ModifierOperation operationType, float left, float right)
        {
            float num = 0f;

            switch (operationType)
            {
            case SimulationModifierDescriptor.ModifierOperation.Addition:
                num = left + right;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Subtraction:
                num = left - right;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Multiplication:
                num = left * right;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Division:
                if (right != 0f)
                {
                    num = left / right;
                }
                break;

            case SimulationModifierDescriptor.ModifierOperation.Power:
                num = Mathf.Pow(left, right);
                break;

            case SimulationModifierDescriptor.ModifierOperation.Percent:
                num  = left + right;
                num *= 100f;
                break;

            case SimulationModifierDescriptor.ModifierOperation.Maximum:
                num = ((left >= right) ? left : right);
                break;

            case SimulationModifierDescriptor.ModifierOperation.Minimum:
                num = ((left <= right) ? left : right);
                break;
            }
            return(num);
        }
示例#3
0
 public void Add(string targetName, float value, SimulationModifierDescriptor.ModifierOperation operation = SimulationModifierDescriptor.ModifierOperation.Addition)
 {
     Modifiers.Add(new SingleSimulationModifierDescriptor(targetName, operation, value));
 }