Example #1
0
        override protected VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            VFXExpression from = inputExpression[0];
            VFXExpression to   = inputExpression[1];
            VFXExpression up   = inputExpression[2];

            VFXExpression viewVector = to - from;

            VFXExpression z = VFXOperatorUtility.Normalize(viewVector);
            VFXExpression x = VFXOperatorUtility.Normalize(VFXOperatorUtility.Cross(up, z));
            VFXExpression y = VFXOperatorUtility.Cross(z, x);

            VFXExpression matrix = new VFXExpressionVector3sToMatrix(x, y, z, from);

            return(new[] { matrix });
        }
Example #2
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var pos    = inputExpression[0];
            var center = inputExpression[1];
            var wAxis  = inputExpression[2];
            var angle  = inputExpression[3];

            var projPoint = center + (wAxis * VFXOperatorUtility.CastFloat(VFXOperatorUtility.Dot(wAxis, pos - center), VFXValueType.Float3));

            var uAxis = pos - projPoint;
            var vAxis = VFXOperatorUtility.Cross(uAxis, wAxis);

            var sinAngle = VFXOperatorUtility.CastFloat(new VFXExpressionSin(angle), VFXValueType.Float3);
            var cosAngle = VFXOperatorUtility.CastFloat(new VFXExpressionCos(angle), VFXValueType.Float3);

            return(new[] { projPoint + (uAxis * cosAngle) + (vAxis * sinAngle) });
        }
        public void ProcessOperatorCross()
        {
            var a = new Vector3(1.1f, 2.2f, 3.3f);
            var b = new Vector3(4.4f, 5.5f, 6.6f);

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

            var expressionA = VFXOperatorUtility.Cross(value_a, value_b);

            var context = new VFXExpression.Context(VFXExpressionContextOption.CPUEvaluation);

            var resultExpressionA = context.Compile(expressionA);
            var resultValue       = resultExpressionA.Get <Vector3>();

            var expectedValue = Vector3.Cross(a, b);

            Assert.AreEqual(expectedValue.x, resultValue.x, 0.001f);
            Assert.AreEqual(expectedValue.y, resultValue.y, 0.001f);
            Assert.AreEqual(expectedValue.z, resultValue.z, 0.001f);
        }
 protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
 {
     return(new[] { VFXOperatorUtility.Cross(inputExpression[0], inputExpression[1]) });
 }