protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            //round(frac(x*F))
            var expression = inputExpression[0] * inputExpression[1];

            return(new[] { VFXOperatorUtility.Round(VFXOperatorUtility.Frac(expression)) });
        }
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            // abs(frac(x*F))
            var res = new VFXExpressionAbs(VFXOperatorUtility.Frac(inputExpression[0] * inputExpression[1]));

            return(new[] { VFXOperatorUtility.Lerp(inputExpression[2], inputExpression[3], res) });
        }
 protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
 {
     VFXExpression[] output = new VFXExpression[]
     {
         VFXOperatorUtility.Lerp(inputExpression[1].x, inputExpression[1].y, VFXOperatorUtility.Frac(VFXBuiltInExpression.TotalTime / inputExpression[0])),
     };
     return(output);
 }
Beispiel #4
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            //round(frac(x*F))
            var expression = inputExpression[0] * inputExpression[1];
            var res        = VFXOperatorUtility.Round(VFXOperatorUtility.Frac(expression));

            return(new[] { VFXOperatorUtility.Lerp(inputExpression[2], inputExpression[3], res) });
        }
Beispiel #5
0
        protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            // 2 * abs(round(frac(x*F)) - frac(x*F))
            var expression = inputExpression[0] * inputExpression[1];
            var dX         = VFXOperatorUtility.Frac(expression);
            var slope      = VFXOperatorUtility.Round(dX);
            var two        = VFXOperatorUtility.TwoExpression[expression.valueType];

            return(new[] { two *(new VFXExpressionAbs(slope - dX)) });
        }
        public void ProcessOperatorFrac()
        {
            var a       = -1.5f;
            var b       = 0.2f;
            var resultA = a - Mathf.Floor(a);
            var resultB = b - Mathf.Floor(b);

            var value_a = new VFXValue <float>(a);
            var value_b = new VFXValue <float>(b);

            var expressionA = VFXOperatorUtility.Frac(value_a);
            var expressionB = VFXOperatorUtility.Frac(value_b);

            var context           = new VFXExpression.Context(VFXExpressionContextOption.CPUEvaluation);
            var resultExpressionA = context.Compile(expressionA);
            var resultExpressionB = context.Compile(expressionB);

            Assert.AreEqual(resultA, resultExpressionA.Get <float>());
            Assert.AreEqual(resultB, resultExpressionB.Get <float>());
        }
Beispiel #7
0
 protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
 {
     return(new[] { VFXOperatorUtility.Frac(inputExpression[0]) });
 }
Beispiel #8
0
 protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
 {
     // abs(frac(x*F))
     return(new[] { new VFXExpressionAbs(VFXOperatorUtility.Frac(inputExpression[0] * inputExpression[1])) });
 }