public Algorythm Build(MyColor[][][] data, MyVector2Float[] pivots, ComputeMode computeMode)
    {
        var sizingCofigurators = new List <ISizingsConfigurator>();

        for (int i = 0; i < _sizingCofiguratorTypes.Count; i++)
        {
            var instance = Activator.CreateInstance(_sizingCofiguratorTypes[i], _sizingCofiguratorCtorParams[i]);
            sizingCofigurators.Add((ISizingsConfigurator)instance);
        }

        var scoreCounters = new List <IScoreCounter>();

        for (int i = 0; i < _scoreCounterTypes.Count; i++)
        {
            var instance = Activator.CreateInstance(_scoreCounterTypes[i]);
            scoreCounters.Add((IScoreCounter)instance);
        }

        if (_areaEnumeratorType == null)
        {
            _areaEnumeratorType = typeof(DefaultAreaEnumerator);
        }

        return(new Algorythm(data, pivots, _areaEnumeratorType, sizingCofigurators, scoreCounters, _areasFreshmentSpan, _areasVolatilityRange, computeMode));
    }
Exemplo n.º 2
0
        public string GetFetchValueString(string localName, int size, ComputeMode computeMode, CurveSampleMode sampleMode)
        {
            string output;

            switch (SampleMode)
            {
            case CurveSampleMode.OverLife: output = "float t = age / lifetime;\n"; break;

            case CurveSampleMode.BySpeed: output = "float t = saturate((length(velocity) - SpeedRange.x) * SpeedRange.y);\n"; break;

            case CurveSampleMode.Random: output = "float t = RAND;\n"; break;

            case CurveSampleMode.RandomConstantPerParticle: output = "float t = FIXED_RAND(Seed);\n"; break;

            case CurveSampleMode.Custom: output = "float t = SampleTime;\n"; break;

            default:
                throw new NotImplementedException("Invalid CurveSampleMode");
            }

            output += string.Format("float{0} value = 0.0f;\n", (size == 1) ? "" : size.ToString());

            if (computeMode == ComputeMode.Uniform || size == 1)
            {
                output += string.Format("value = SampleCurve({0}, t);\n", localName);
            }
            else
            {
                if (currentAttribute.Equals(VFXAttribute.Color))
                {
                    output += string.Format("value = SampleGradient({0}, t);\n", localName);
                }
                else
                {
                    if (size > 0)
                    {
                        output += string.Format("value[0] = SampleCurve({0}, t);\n", localName + "_x");
                    }
                    if (size > 1)
                    {
                        output += string.Format("value[1] = SampleCurve({0}, t);\n", localName + "_y");
                    }
                    if (size > 2)
                    {
                        output += string.Format("value[2] = SampleCurve({0}, t);\n", localName + "_z");
                    }
                    if (size > 3)
                    {
                        output += string.Format("value[3] = SampleCurve({0}, t);\n", localName + "_w");
                    }
                }
            }

            return(output);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets the webspace properties that will allow the manipulation of the scale
        /// </summary>
        private void GetScaleSettings()
        {
            var command = new GetScaleSettingsCommand(MobileServiceName)
            {
                SubscriptionId = SubscriptionId,
                Certificate    = ManagementCertificate
            };

            command.Execute();
            TotalInstanceCount = command.ScaleSettings.InstanceCount;
            ComputeMode        = command.ScaleSettings.ComputeMode;
        }
Exemplo n.º 4
0
        private void Process(double billAmount, double tipFactor, ComputeMode computeMode = ComputeMode.Exact)
        {
            Calculator calculator;

            if (IsValid(entBill.Text))
            {
                calculator = new Calculator(billAmount, tipFactor, computeMode);
            }
            else
            {
                calculator = new Calculator(0, tipFactor, computeMode);
            }
            calculator.Calculate();
            UpdateUI(calculator);
        }
Exemplo n.º 5
0
        public string GetFetchValueString(string localName, int size, ComputeMode mode)
        {
            string output = "float t = age / lifetime;\n";

            output += string.Format("float{0} value = 0.0f;\n", (size == 1) ? "" : size.ToString());

            if (mode == ComputeMode.Uniform)
            {
                output += string.Format("value = SampleCurve({0}, t);\n", localName);
            }
            else
            {
                if (currentAttribute.Equals(VFXAttribute.Color))
                {
                    output += string.Format("value = SampleGradient({0}, t).rgb;\n", localName);
                }
                else
                {
                    if (size > 0)
                    {
                        output += string.Format("value{1} = SampleCurve({0}, t);\n", localName + (size == 1 ? "" : "_x"), (size == 1 ? "" : "[0]"));
                    }
                    if (size > 1)
                    {
                        output += string.Format("value[1] = SampleCurve({0}, t);\n", localName + "_y");
                    }
                    if (size > 2)
                    {
                        output += string.Format("value[2] = SampleCurve({0}, t);\n", localName + "_z");
                    }
                    if (size > 3)
                    {
                        output += string.Format("value[3] = SampleCurve({0}, t);\n", localName + "_w");
                    }
                }
            }

            return(output);
        }
Exemplo n.º 6
0
    private void ReviseCurrentSP(float reviseValue, ReviseType reviseMode, ComputeMode computeMode)
    {
        float revise = reviseValue;

        switch (reviseMode)
        {
        case ReviseType.PercentBase:
            revise = maxSP * reviseValue;
            break;

        case ReviseType.PercentCurrent:
            revise = currentSP * reviseValue;
            break;

        case ReviseType.PercentUsed:
            revise = (maxSP - currentSP) * reviseValue;
            break;
        }
        switch (computeMode)
        {
        case ComputeMode.Add:
            currentSP += revise;
            break;

        case ComputeMode.Set:
            if (revise <= 0)
            {
                currentSP = Mathf.Min(currentSP, -revise);
            }
            else
            {
                currentSP = Mathf.Max(currentSP, revise);
            }
            break;
        }
    }
Exemplo n.º 7
0
 public Calculator(double _billAmount, double _tipFactor, ComputeMode _computeMode)
 {
     BillAmount  = _billAmount;
     TipFactor   = _tipFactor;
     ComputeMode = _computeMode;
 }
Exemplo n.º 8
0
    public long AddItemRevise(ReviseField reviseField, float reviseValue, ReviseType reviseMode, ComputeMode computeMode, float duration)
    {
        long receipt = -1;

        switch (reviseField)
        {
        case ReviseField.MaxSP:
            receipt = AddItemReviseMaxSP(reviseValue, reviseMode, duration);
            break;

        case ReviseField.CurrentSP:
            ReviseCurrentSP(reviseValue, reviseMode, computeMode);
            break;

        case ReviseField.RecoverSP:
            receipt = AddItemReviseRecoverSP(reviseValue, reviseMode, duration);
            break;

        case ReviseField.TimeScale:
            receipt = AddItemReviseTimeScale(reviseValue, reviseMode, duration);
            break;
        }

        return(receipt);
    }