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])); }