Exemplo n.º 1
0
        public void ProcessExpressionSafeNormalize([ValueSource("s_ProcessExpressionSafeNormalizeValues")] Vector2 input)
        {
            var valueInput       = new VFXValue <Vector2>(input);
            var expression       = VFXOperatorUtility.SafeNormalize(valueInput);
            var context          = new VFXExpression.Context(VFXExpressionContextOption.CPUEvaluation);
            var resultExpression = context.Compile(expression);
            var expectedResult   = input.normalized;

            Assert.AreEqual(expectedResult, resultExpression.Get <Vector2>());
        }
Exemplo n.º 2
0
 protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
 {
     if (safeNormalize)
     {
         return new[] { VFXOperatorUtility.SafeNormalize(inputExpression[0]) }
     }
     ;
     else
     {
         return new[] { VFXOperatorUtility.Normalize(inputExpression[0]) }
     };
 }
Exemplo n.º 3
0
 private void GetPositionAndDirectionFromIndex(VFXExpression indexExpr, IEnumerable <VFXNamedExpression> expressions, out VFXExpression positionExpr, out VFXExpression directionExpr)
 {
     if (shape == SequentialShape.Line)
     {
         var start = expressions.First(o => o.name == "Start").exp;
         var end   = expressions.First(o => o.name == "End").exp;
         var count = expressions.First(o => o.name == "Count").exp;
         positionExpr  = VFXOperatorUtility.SequentialLine(start, end, indexExpr, count, mode);
         directionExpr = VFXOperatorUtility.SafeNormalize(end - start);
     }
     else if (shape == SequentialShape.Circle)
     {
         var center = expressions.First(o => o.name == "Center").exp;
         var normal = expressions.First(o => o.name == "Normal").exp;
         var up     = expressions.First(o => o.name == "Up").exp;
         var radius = expressions.First(o => o.name == "Radius").exp;
         var count  = expressions.First(o => o.name == "Count").exp;
         positionExpr  = VFXOperatorUtility.SequentialCircle(center, radius, normal, up, indexExpr, count, mode);
         directionExpr = VFXOperatorUtility.SafeNormalize(positionExpr - center);
     }
     else if (shape == SequentialShape.ThreeDimensional)
     {
         var origin = expressions.First(o => o.name == "Origin").exp;
         var axisX  = expressions.First(o => o.name == "AxisX").exp;
         var axisY  = expressions.First(o => o.name == "AxisY").exp;
         var axisZ  = expressions.First(o => o.name == "AxisZ").exp;
         var countX = expressions.First(o => o.name == "CountX").exp;
         var countY = expressions.First(o => o.name == "CountY").exp;
         var countZ = expressions.First(o => o.name == "CountZ").exp;
         positionExpr  = VFXOperatorUtility.Sequential3D(origin, axisX, axisY, axisZ, indexExpr, countX, countY, countZ, mode);
         directionExpr = VFXOperatorUtility.SafeNormalize(positionExpr - origin);
     }
     else
     {
         throw new NotImplementedException();
     }
 }