public void ProcessOperatorSphericalToRectangular()
        {
            var theta    = 0.2f;
            var phi      = 0.4f;
            var distance = 0.5f;

            var rectangular = new Vector3(Mathf.Cos(phi) * Mathf.Cos(theta), Mathf.Sin(phi), Mathf.Cos(phi) * Mathf.Sin(theta));

            rectangular *= distance;

            var value_theta    = new VFXValue <float>(theta);
            var value_phi      = new VFXValue <float>(phi);
            var value_distance = new VFXValue <float>(distance);

            var expressionA = VFXOperatorUtility.SphericalToRectangular(value_distance, value_theta, value_phi);
            var expressionB = VFXOperatorUtility.RectangularToSpherical(expressionA);

            var context            = new VFXExpression.Context(VFXExpressionContextOption.CPUEvaluation);
            var resultExpressionA  = context.Compile(expressionA);
            var resultExpressionB0 = context.Compile(expressionB[0]);
            var resultExpressionB1 = context.Compile(expressionB[1]);
            var resultExpressionB2 = context.Compile(expressionB[2]);

            Assert.AreEqual(rectangular, resultExpressionA.Get <Vector3>());
            Assert.AreEqual(distance, resultExpressionB0.Get <float>(), 0.001f);
            Assert.AreEqual(theta, resultExpressionB1.Get <float>(), 0.001f);
            Assert.AreEqual(phi, resultExpressionB2.Get <float>(), 0.001f);
        }
 protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
 {
     return(VFXOperatorUtility.RectangularToSpherical(inputExpression[0]));
 }