Esempio n. 1
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            if (mask.Length == 0)
            {
                return new VFXExpression[] { }
            }
            ;

            var inputComponents = (inputExpression.Length > 0) ? VFXOperatorUtility.ExtractComponents(inputExpression[0]).ToArray() : new VFXExpression[0];

            var componentStack = new Stack <VFXExpression>();
            int outputSize     = mask.Length;

            for (int iComponent = 0; iComponent < outputSize; iComponent++)
            {
                char componentChar    = char.ToLower(mask[iComponent]);
                int  currentComponent = Math.Min(CharToComponentIndex(componentChar), inputComponents.Length - 1);
                componentStack.Push(inputComponents[currentComponent]);
            }

            VFXExpression finalExpression = null;

            if (componentStack.Count == 1)
            {
                finalExpression = componentStack.Pop();
            }
            else
            {
                finalExpression = new VFXExpressionCombine(componentStack.Reverse().ToArray());
            }
            return(new[] { finalExpression });
        }
    }
Esempio n. 2
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var           components = VFXOperatorUtility.ExtractComponents(inputExpression[0]);
            VFXExpression rgb        = new VFXExpressionCombine(components.Take(3).ToArray());

            return(new[] { new VFXExpressionRGBtoHSV(rgb) });
        }
Esempio n. 3
0
        protected override VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var density = VFXOperatorUtility
                          .ExtractComponents(new VFXAttributeExpression(FluvioFXAttribute.DensityPressure))
                          .ToArray() [1];

            var range = VFXOperatorUtility.ExtractComponents(inputExpression[0]).ToArray();

            return(new VFXExpression[]
            {
                InverseLerp(density, range[0], range[1])
            });
        }
Esempio n. 4
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var allComponent = inputExpression.SelectMany(e => VFXOperatorUtility.ExtractComponents(e))
                               .Take(4)
                               .ToArray();

            if (allComponent.Length == 0)
            {
                return(new VFXExpression[] {});
            }
            else if (allComponent.Length == 1)
            {
                return(allComponent);
            }
            return(new[] { new VFXExpressionCombine(allComponent) });
        }
Esempio n. 5
0
        protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
        {
            var mask = new Component[4] {
                x, y, z, w
            };
            // var mask = new Component[4] { Component.X, Component.Y, Component.Z, Component.W };
            int maskSize = 4;

            while (maskSize > 1 && mask[maskSize - 1] == Component.None)
            {
                --maskSize;
            }

            var inputComponents = VFXOperatorUtility.ExtractComponents(inputExpression[0]).ToArray();

            var componentStack = new Stack <VFXExpression>();
            int outputSize     = GetMaskSize(mask);

            for (int iComponent = 0; iComponent < outputSize; iComponent++)
            {
                Component currentComponent = mask[iComponent];
                if (currentComponent != Component.None && (int)currentComponent < inputComponents.Length)
                {
                    componentStack.Push(inputComponents[(int)currentComponent]);
                }
                else
                {
                    componentStack.Push(VFXValue <float> .Default);
                }
            }

            VFXExpression finalExpression = null;

            if (componentStack.Count == 1)
            {
                finalExpression = componentStack.Pop();
            }
            else
            {
                finalExpression = new VFXExpressionCombine(componentStack.Reverse().ToArray());
            }
            return(new[] { finalExpression });
        }
Esempio n. 6
0
 protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression)
 {
     VFXExpression[] rgb = VFXOperatorUtility.ExtractComponents(new VFXExpressionHSVtoRGB(inputExpression[0])).Take(3).ToArray();
     return(new[] { new VFXExpressionCombine(new[] { rgb[0], rgb[1], rgb[2], VFXValue.Constant(1.0f) }) });
 }