Пример #1
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     if (RType == RandomType.InsideUnitCircle)
     {
         processor.Vector2Out = () => UnityEngine.Random.insideUnitCircle;
     }
     else if (RType == RandomType.OnUnitCircle)
     {
         processor.Vector2Out = () => UnityEngine.Random.insideUnitCircle.normalized;
     }
     if (RType == RandomType.InsideUnitSphere)
     {
         processor.Vector3Out = () => UnityEngine.Random.insideUnitSphere;
     }
     if (RType == RandomType.OnUnitSphere)
     {
         processor.Vector3Out = () => UnityEngine.Random.onUnitSphere;
     }
     if (RType == RandomType.Value01)
     {
         processor.FloatOut = () => UnityEngine.Random.value;
     }
     if (RType == RandomType.Valuem11)
     {
         processor.FloatOut = () => UnityEngine.Random.Range(-1f, 1f);
     }
     if (RType == RandomType.Rotation)
     {
         processor.Vector4Out = () => ToV(UnityEngine.Random.rotation);
     }
     if (RType == RandomType.RotationUniform)
     {
         processor.Vector4Out = () => ToV(UnityEngine.Random.rotationUniform);
     }
 }
Пример #2
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.FloatOut = () =>
     {
         float val   = processor.Inputs[0].FloatOut();
         float delta = val - _lastVal;
         _lastVal = val;
         return(delta);
     };
     processor.Vector2Out = () =>
     {
         Vector2 val2   = processor.Inputs[0].Vector2Out();
         Vector2 delta2 = val2 - _lastVal2;
         _lastVal2 = val2;
         return(delta2);
     };
     processor.Vector3Out = () =>
     {
         Vector3 val3   = processor.Inputs[0].Vector3Out();
         Vector3 delta3 = val3 - _lastVal3;
         _lastVal3 = val3;
         return(delta3);
     };
     processor.Vector4Out = () =>
     {
         Vector4 val4   = processor.Inputs[0].Vector4Out();
         Vector4 delta4 = val4 - _lastVal4;
         _lastVal4 = val4;
         return(delta4);
     };
 }
Пример #3
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     OperationInitializer(_Type);
     processor.FloatOut   = () => _operation(processor.Inputs[0].FloatOut());
     processor.Vector2Out = () =>
     {
         Vector2 a = processor.Inputs[0].Vector2Out();
         return(new Vector2(_operation(a.x), _operation(a.y)));
     };
     processor.Vector3Out = () =>
     {
         Vector3 a = processor.Inputs[0].Vector3Out();
         return(new Vector3(_operation(a.x), _operation(a.y), _operation(a.z)));
     };
     processor.Vector4Out = () =>
     {
         Vector4 a = processor.Inputs[0].Vector4Out();
         return(new Vector4(_operation(a.x), _operation(a.y), _operation(a.z), _operation(a.w)));
     };
     processor.ColorOut = () =>
     {
         Color a = processor.Inputs[0].ColorOut();
         return(new Color(_operation(a.r), _operation(a.g), _operation(a.b), _operation(a.a)));
     };
 }
Пример #4
0
 void GeneratedProcessorInitializerOneInput(NodeProcessor processor)
 {
     processor.Vector2Out = () =>
     {
         Vector2 in0 = processor.Inputs[0].Vector2Out();
         return(new Vector2(OperationOneInput(in0.x), OperationOneInput(in0.y)));
     };
     processor.Vector3Out = () =>
     {
         Vector3 in0 = processor.Inputs[0].Vector3Out();
         return(new Vector3(OperationOneInput(in0.x), OperationOneInput(in0.y), OperationOneInput(in0.z)));
     };
     processor.Vector4Out = () =>
     {
         Vector4 in0 = processor.Inputs[0].Vector4Out();
         return(new Vector4(OperationOneInput(in0.x), OperationOneInput(in0.y), OperationOneInput(in0.z), OperationOneInput(in0.w)));
     };
     processor.ColorOut = () =>
     {
         Color in0 = processor.Inputs[0].ColorOut();
         return(new Color(OperationOneInput(in0.r), OperationOneInput(in0.g), OperationOneInput(in0.b), OperationOneInput(in0.a)));
     };
     processor.FloatOut = () =>
     {
         float in0 = processor.Inputs[0].FloatOut();
         return(OperationOneInput(in0));
     };
     processor.IntOut = () =>
     {
         int in0 = processor.Inputs[0].IntOut();
         return(OperationOneInputInt(in0));
     };
 }
Пример #5
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.FloatOut   = () => processor.Inputs[0].BoolOut() ? processor.Inputs[1].FloatOut() : processor.Inputs[2].FloatOut();
     processor.Vector2Out = () => processor.Inputs[0].BoolOut() ? processor.Inputs[1].Vector2Out() : processor.Inputs[2].Vector2Out();
     processor.Vector3Out = () => processor.Inputs[0].BoolOut() ? processor.Inputs[1].Vector3Out() : processor.Inputs[2].Vector3Out();
     processor.Vector4Out = () => processor.Inputs[0].BoolOut() ? processor.Inputs[1].Vector4Out() : processor.Inputs[2].Vector4Out();
     processor.ColorOut   = () => processor.Inputs[0].BoolOut() ? processor.Inputs[1].ColorOut() : processor.Inputs[2].ColorOut();
 }
Пример #6
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.FloatOut   = () => Mathf.LerpUnclamped(processor.Inputs[0].FloatOut(), processor.Inputs[1].FloatOut(), processor.Inputs[2].FloatOut());
     processor.Vector2Out = () => Vector2.LerpUnclamped(processor.Inputs[0].Vector2Out(), processor.Inputs[1].Vector2Out(), processor.Inputs[2].FloatOut());
     processor.Vector3Out = () => Vector3.LerpUnclamped(processor.Inputs[0].Vector3Out(), processor.Inputs[1].Vector3Out(), processor.Inputs[2].FloatOut());
     processor.Vector4Out = () => Vector4.LerpUnclamped(processor.Inputs[0].Vector4Out(), processor.Inputs[1].Vector4Out(), processor.Inputs[2].FloatOut());
     processor.ColorOut   = () => Color.LerpUnclamped(processor.Inputs[0].ColorOut(), processor.Inputs[1].ColorOut(), processor.Inputs[2].FloatOut());
     processor.IntOut     = () => (int)Mathf.LerpUnclamped(processor.Inputs[0].IntOut(), processor.Inputs[1].IntOut(), processor.Inputs[2].FloatOut());
 }
Пример #7
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.FloatOut = () =>
     {
         int     repeatSize = processor.Inputs[0].IntOut();
         int     octaves    = processor.Inputs[1].IntOut();
         int     seed       = processor.Inputs[2].IntOut();
         float   roughness  = processor.Inputs[3].FloatOut();
         Vector2 in0        = processor.Inputs[4].Vector2Out();
         return(Perlin.FBM(in0.x, in0.y, octaves, 2, roughness, repeatSize, seed));
     };
 }
Пример #8
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     IOUpdate();
     if (IOMode == IOMode.Output)
     {
         processor.VoidOut = () => Value = processor.Inputs[0].FloatOut();
     }
     else
     {
         processor.FloatOut = () => Value;
     }
 }
Пример #9
0
        public override void InitializeNodeProcessor(NodeProcessor processor)
        {
            processor.FloatOut = () =>
            {
                _time += Parent.Dt * TimeSpeed;
                if (processor.Inputs[0].BoolOut())
                {
                    _time = 0f;
                }

                float val = _time;
                if (_time > Limit)
                {
                    switch (LType)
                    {
                    case LimitType.Repeat:
                        val = Mathf.Repeat(_time, Limit);
                        break;

                    case LimitType.StayToStart:
                        val = 0f;
                        break;

                    case LimitType.StayToEnd:
                        val = Limit;
                        break;

                    case LimitType.PingPong:
                        val = Mathf.PingPong(_time, Limit);
                        break;

                    case LimitType.PingPongOnce:
                        val = Mathf.Max(0, Limit - Mathf.Abs(_time - Limit));
                        break;

                    default:
                        val = _time;
                        break;
                    }
                }

                if (Inverse)
                {
                    val = Limit - val;
                }
                if (To01)
                {
                    val /= Limit;
                }
                return(val);
            };
        }
Пример #10
0
        public override void InitializeNodeProcessor(NodeProcessor processor)
        {
            GeneratedOperationInitializer(_Type);
            int inputsCount = OperationConfigs[(int)_Type].InputCount;

            if (inputsCount == 2)
            {
                ValueTypeConfig a = ValueTypeConfig.Types[(int)Parent.GetNode(Inputs[0]).CashedOutputType];
                ValueTypeConfig b = ValueTypeConfig.Types[(int)Parent.GetNode(Inputs[1]).CashedOutputType];
                GeneratedProcessorInitializerTwoInput(processor, a, b);
            }
            else
            {
                GeneratedProcessorInitializerOneInput(processor);
            }
        }
Пример #11
0
        public override void InitializeNodeProcessor(NodeProcessor processor)
        {
            //ValueType valueType = GetMember();
            //Inputs[0].Type = valueType;
            ValueType valueType = Inputs[0].Type;

            if (valueType != ValueType.Error)
            {
                if (valueType == ValueType.Float)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <float>()(processor.Inputs[0].FloatOut());
                }
                if (valueType == ValueType.Vector2)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <Vector2>()(processor.Inputs[0].Vector2Out());
                }
                if (valueType == ValueType.Vector3)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <Vector3>()(processor.Inputs[0].Vector3Out());
                }
                if (valueType == ValueType.Vector4)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <Vector4>()(processor.Inputs[0].Vector4Out());
                }
                if (valueType == ValueType.Color)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <Color>()(processor.Inputs[0].ColorOut());
                }
                if (valueType == ValueType.Int)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <int>()(processor.Inputs[0].IntOut());
                }
                if (valueType == ValueType.Bool)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <bool>()(processor.Inputs[0].BoolOut());
                }
                if (valueType == ValueType.Texture2D)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <Texture2D>()(processor.Inputs[0].Texture2DOut());
                }
                if (valueType == ValueType.RenderTexture)
                {
                    processor.VoidOut = () => _reflectedValue.CompileSetMethod <RenderTexture>()(processor.Inputs[0].RenderTextureOut());
                }
            }
        }
Пример #12
0
        public override void InitializeNodeProcessor(NodeProcessor processor)
        {
            switch (_Type)
            {
            case OperationType.AMoreThanB:
                processor.BoolOut = () => (processor.Inputs[0].FloatOut() > processor.Inputs[1].FloatOut()) ^ Invert;
                break;

            case OperationType.AMoreOrEqualB:
                processor.BoolOut = () => (processor.Inputs[0].FloatOut() >= processor.Inputs[1].FloatOut()) ^ Invert;
                break;

            case OperationType.AEqualB:
                processor.BoolOut = () => (processor.Inputs[0].FloatOut() == processor.Inputs[1].FloatOut()) ^ Invert;
                break;
            }
        }
        void RebuildGraph()
        {
            _nodeList = _nodeData.GetAllNodes();
            _deadEnds = _nodeData.GetDeadEnds(_nodeList);

            foreach (Node node in _nodeList)
            {
                node.Processor = null;
            }

            List <int> outputs = new List <int>();

            foreach (Node node in _deadEnds)
            {
                node.UpdateTypes(_nodeData, new HashSet <Node>());

                NodeProcessor pr = _nodeData.GetNodeProcessor(node);

                if (!_nodeData.ValidateNodes(node))
                {
                    continue;
                }
                if (pr != null && pr.VoidOut != null && node.OutputType != ValueType.Error)
                {
                    outputs.Add(node.NodeId);
                }
            }
            _nodeData.Outputs = outputs.ToArray();
            _nodeData.Prepare();

            if (_nodeData.Externals == null)
            {
                _nodeData.Externals = new NodeDataExternals();
            }
            _nodeData.Externals.InitializeFrom(_nodeData);

            if (_selectionProcessor.Host != null)
            {
                EditorUtility.SetDirty(_selectionProcessor.Host);
                EditorHelper.CallOnValidate(_selectionProcessor.Host);
                EditorHelper.RepaintInspectors();
            }
        }
Пример #14
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     if (CashedOutputType != ValueType.Error)
     {
         if (CashedOutputType == ValueType.Float)
         {
             processor.FloatOut = _reflectedValue.CompileGetMethod <float>();
         }
         if (CashedOutputType == ValueType.Vector2)
         {
             processor.Vector2Out = _reflectedValue.CompileGetMethod <Vector2>();
         }
         if (CashedOutputType == ValueType.Vector3)
         {
             processor.Vector3Out = _reflectedValue.CompileGetMethod <Vector3>();
         }
         if (CashedOutputType == ValueType.Vector4)
         {
             processor.Vector4Out = _reflectedValue.CompileGetMethod <Vector4>();
         }
         if (CashedOutputType == ValueType.Color)
         {
             processor.ColorOut = _reflectedValue.CompileGetMethod <Color>();
         }
         if (CashedOutputType == ValueType.Int)
         {
             processor.IntOut = _reflectedValue.CompileGetMethod <int>();
         }
         if (CashedOutputType == ValueType.Bool)
         {
             processor.BoolOut = _reflectedValue.CompileGetMethod <bool>();
         }
         if (CashedOutputType == ValueType.Texture2D)
         {
             processor.Texture2DOut = _reflectedValue.CompileGetMethod <Texture2D>();
         }
         if (CashedOutputType == ValueType.RenderTexture)
         {
             processor.RenderTextureOut = _reflectedValue.CompileGetMethod <RenderTexture>();
         }
     }
 }
Пример #15
0
        public override void InitializeNodeProcessor(NodeProcessor processor)
        {
            switch (_Type)
            {
            case OperationType.InvertA:
                processor.BoolOut = () => !processor.Inputs[0].BoolOut();
                break;

            case OperationType.TriggerA:
                processor.BoolOut = () =>
                {
                    bool val = processor.Inputs[0].BoolOut();
                    if (_lastVal == val)
                    {
                        return(false);
                    }
                    _lastVal = val;
                    return(true);
                };
                break;

            case OperationType.Equal:
                processor.BoolOut = () => processor.Inputs[0].BoolOut() == processor.Inputs[1].BoolOut();
                break;

            case OperationType.Or:
                processor.BoolOut = () => processor.Inputs[0].BoolOut() || processor.Inputs[1].BoolOut();
                break;

            case OperationType.And:
                processor.BoolOut = () => processor.Inputs[0].BoolOut() && processor.Inputs[1].BoolOut();
                break;

            case OperationType.Xor:
                processor.BoolOut = () => processor.Inputs[0].BoolOut() ^ processor.Inputs[1].BoolOut();
                break;
            }
        }
Пример #16
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     Damping            = Math.Max(Damping, float.Epsilon);
     _damping           = 1f / (1f + Mathf.Pow(Damping, 5));
     processor.FloatOut = () =>
     {
         _velocity += processor.Inputs[0].FloatOut();
         _velocity -= _current * Hardness;
         _velocity *= Mathf.Pow(_damping, Parent.Dt);
         _current  += _velocity;
         return(_current);
     };
     processor.Vector2Out = () =>
     {
         _velocity2 += processor.Inputs[0].Vector2Out();
         _velocity2 -= _current2 * Hardness;
         _velocity2 *= Mathf.Pow(_damping, Parent.Dt);
         _current2  += _velocity2;
         return(_current2);
     };
     processor.Vector3Out = () =>
     {
         _velocity3 += processor.Inputs[0].Vector3Out();
         _velocity3 -= _current3 * Hardness;
         _velocity3 *= Mathf.Pow(_damping, Parent.Dt);
         _current3  += _velocity3;
         return(_current3);
     };
     processor.Vector4Out = () =>
     {
         _velocity4 += processor.Inputs[0].Vector4Out();
         _velocity4 -= _current4 * Hardness;
         _velocity4 *= Mathf.Pow(_damping, Parent.Dt);
         _current4  += _velocity4;
         return(_current4);
     };
 }
Пример #17
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     if (_Type == OperationType.HSV_RGB)
     {
         processor.ColorOut = () =>
         {
             Vector3 v = processor.Inputs[0].Vector3Out();
             return(Color.HSVToRGB(v.x, v.y, v.z, true));
         };
     }
     else if (_Type == OperationType.RGB_HSV)
     {
         processor.Vector3Out = () =>
         {
             Vector3 v = new Vector3();
             Color.RGBToHSV(processor.Inputs[0].ColorOut(), out v.x, out v.y, out v.z);
             return(v);
         };
     }
     else if (_Type == OperationType.HSVv_RGB)
     {
         processor.ColorOut = () => { return(Color.HSVToRGB(processor.Inputs[0].FloatOut(), processor.Inputs[1].FloatOut(), processor.Inputs[2].FloatOut(), true)); };
     }
 }
Пример #18
0
        public override void InitializeNodeProcessor(NodeProcessor processor)
        {
            switch (_Type)
            {
            case OperationType.Multyply:
            {
                ValueType t0 = Parent.GetNode(Inputs[0]).CashedOutputType;
                ValueType t1 = Parent.GetNode(Inputs[1]).CashedOutputType;
                if (t0 == ValueType.Vector3 && t1 == ValueType.Vector4)
                {
                    processor.Vector3Out = () =>
                    {
                        Vector4 q = processor.Inputs[1].Vector4Out();
                        Vector3 v = processor.Inputs[0].Vector3Out();
                        return(ToQ(q) * v);
                    };
                }
                if (t0 == ValueType.Vector2 && t1 == ValueType.Vector4)
                {
                    processor.Vector2Out = () =>
                    {
                        Vector4 q = processor.Inputs[1].Vector4Out();
                        Vector2 v = processor.Inputs[0].Vector2Out();
                        return(ToQ(q) * v);
                    };
                }
                if (t0 == ValueType.Vector4 && t1 == ValueType.Vector3)
                {
                    processor.Vector3Out = () =>
                    {
                        Vector4 q = processor.Inputs[0].Vector4Out();
                        Vector3 v = processor.Inputs[1].Vector3Out();
                        return(ToQ(q) * v);
                    };
                }
                if (t0 == ValueType.Vector4 && t1 == ValueType.Vector2)
                {
                    processor.Vector2Out = () =>
                    {
                        Vector4 q = processor.Inputs[0].Vector4Out();
                        Vector2 v = processor.Inputs[1].Vector2Out();
                        return(ToQ(q) * v);
                    };
                }
                if (t0 == ValueType.Vector4 && t1 == ValueType.Vector4)
                {
                    processor.Vector4Out = () =>
                    {
                        Vector4 q0 = processor.Inputs[0].Vector4Out();
                        Vector4 q1 = processor.Inputs[1].Vector4Out();
                        return(ToV(ToQ(q0) * ToQ(q1)));
                    };
                }
            }
            break;

            case OperationType.AxisAngle:
            {
                processor.Vector4Out = () =>
                {
                    float   a = processor.Inputs[0].FloatOut();
                    Vector3 b = processor.Inputs[1].Vector3Out();
                    return(ToV(Quaternion.AngleAxis(a, b)));
                };
            }
            break;

            case OperationType.FormEuler:
            {
                processor.Vector4Out = () =>
                {
                    Vector3 a = processor.Inputs[0].Vector3Out();
                    return(ToV(Quaternion.Euler(a)));
                };
            }
            break;

            case OperationType.ToEuler:
            {
                processor.Vector3Out = () =>
                {
                    Vector4 a = processor.Inputs[0].Vector4Out();
                    return(ToQ(a).eulerAngles);
                };
            }
            break;

            case OperationType.FromToRotation:
            {
                processor.Vector4Out = () =>
                {
                    Vector3 a = processor.Inputs[0].Vector3Out();
                    Vector3 b = processor.Inputs[1].Vector3Out();
                    return(ToV(Quaternion.FromToRotation(a, b)));
                };
            }
            break;

            case OperationType.Inverse:
            {
                processor.Vector4Out = () =>
                {
                    Vector4 a = processor.Inputs[0].Vector4Out();
                    return(ToV(Quaternion.Inverse(ToQ(a))));
                };
            }
            break;

            case OperationType.LerpUnclamped:
            {
                processor.Vector4Out = () =>
                {
                    Vector4 a = processor.Inputs[0].Vector4Out();
                    Vector4 b = processor.Inputs[1].Vector4Out();
                    float   t = processor.Inputs[2].FloatOut();
                    return(ToV(Quaternion.LerpUnclamped(ToQ(a), ToQ(b), t)));
                };
                break;
            }

            case OperationType.SlerpUnclamped:
            {
                processor.Vector4Out = () =>
                {
                    Vector4 a = processor.Inputs[0].Vector4Out();
                    Vector4 b = processor.Inputs[1].Vector4Out();
                    float   t = processor.Inputs[2].FloatOut();
                    return(ToV(Quaternion.SlerpUnclamped(ToQ(a), ToQ(b), t)));
                };
            }
            break;

            case OperationType.LookRotation:
            {
                if (Inputs[1].Type == ValueType.None)
                {
                    processor.Vector4Out = () =>
                    {
                        Vector4 a = processor.Inputs[0].Vector4Out();
                        return(ToV(Quaternion.LookRotation(a)));
                    }
                }
                ;
                else
                {
                    processor.Vector4Out = () =>
                    {
                        Vector4 a = processor.Inputs[0].Vector4Out();
                        Vector4 b = processor.Inputs[1].Vector4Out();
                        return(ToV(Quaternion.LookRotation(a, b)));
                    }
                };
            }
            break;
            }
        }
Пример #19
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.FloatOut = () =>
     {
         if (processor.Inputs[1].BoolOut())
         {
             _lastVal = processor.Inputs[0].FloatOut();
         }
         else if (!Freeze)
         {
             _lastVal = 0;
         }
         return(_lastVal);
     };
     processor.Vector2Out = () =>
     {
         if (processor.Inputs[1].BoolOut())
         {
             _lastVal2 = processor.Inputs[0].Vector2Out();
         }
         else if (!Freeze)
         {
             _lastVal2 = new Vector2();
         }
         return(_lastVal2);
     };
     processor.Vector3Out = () =>
     {
         if (processor.Inputs[1].BoolOut())
         {
             _lastVal3 = processor.Inputs[0].Vector3Out();
         }
         else if (!Freeze)
         {
             _lastVal3 = new Vector3();
         }
         return(_lastVal3);
     };
     processor.Vector4Out = () =>
     {
         if (processor.Inputs[1].BoolOut())
         {
             _lastVal4 = processor.Inputs[0].Vector4Out();
         }
         else if (!Freeze)
         {
             _lastVal4 = new Vector4();
         }
         return(_lastVal4);
     }; processor.ColorOut = () =>
     {
         if (processor.Inputs[1].BoolOut())
         {
             _lastValC = processor.Inputs[0].ColorOut();
         }
         else if (!Freeze)
         {
             _lastValC = new Color();
         }
         return(_lastValC);
     };
 }
Пример #20
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.Vector2Out = () =>
     {
         Vector2       v   = _zero2;
         NodeProcessor inx = processor.Inputs[0];
         NodeProcessor iny = processor.Inputs[1];
         if (inx != null)
         {
             v.x = inx.FloatOut();
         }
         if (iny != null)
         {
             v.y = iny.FloatOut();
         }
         return(v);
     };
     processor.Vector3Out = () =>
     {
         Vector3       v   = _zero3;
         NodeProcessor inx = processor.Inputs[0];
         NodeProcessor iny = processor.Inputs[1];
         NodeProcessor inz = processor.Inputs[2];
         if (inx != null)
         {
             v.x = inx.FloatOut();
         }
         if (iny != null)
         {
             v.y = iny.FloatOut();
         }
         if (inz != null)
         {
             v.z = inz.FloatOut();
         }
         return(v);
     };
     processor.Vector4Out = () =>
     {
         Vector4       v   = _zero4;
         NodeProcessor inx = processor.Inputs[0];
         NodeProcessor iny = processor.Inputs[1];
         NodeProcessor inz = processor.Inputs[2];
         NodeProcessor inw = processor.Inputs[3];
         if (inx != null)
         {
             v.x = inx.FloatOut();
         }
         if (iny != null)
         {
             v.y = iny.FloatOut();
         }
         if (inz != null)
         {
             v.z = inz.FloatOut();
         }
         if (inw != null)
         {
             v.w = inw.FloatOut();
         }
         return(v);
     };
     processor.ColorOut = () =>
     {
         Color         v   = _zeroC;
         NodeProcessor inx = processor.Inputs[0];
         NodeProcessor iny = processor.Inputs[1];
         NodeProcessor inz = processor.Inputs[2];
         NodeProcessor inw = processor.Inputs[3];
         if (inx != null)
         {
             v.r = inx.FloatOut();
         }
         if (iny != null)
         {
             v.g = iny.FloatOut();
         }
         if (inz != null)
         {
             v.b = inz.FloatOut();
         }
         if (inw != null)
         {
             v.a = inw.FloatOut();
         }
         return(v);
     };
 }
Пример #21
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.ColorOut = () => Gradient.Evaluate(processor.Inputs[0].FloatOut());
 }
Пример #22
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.Vector4Out = () => Value;
 }
Пример #23
0
 void GeneratedProcessorInitializerTwoInput(NodeProcessor processor, ValueTypeConfig aConfig, ValueTypeConfig bConfig)
 {
     if (aConfig.IsVector && bConfig.IsVector)
     {
         processor.Vector2Out = () =>
         {
             Vector2 in0 = processor.Inputs[0].Vector2Out();
             Vector2 in1 = processor.Inputs[1].Vector2Out();
             return(new Vector2(OperationTwoInput(in0.x, in1.x), OperationTwoInput(in0.y, in1.y)));
         };
         processor.Vector3Out = () =>
         {
             Vector3 in0 = processor.Inputs[0].Vector3Out();
             Vector3 in1 = processor.Inputs[1].Vector3Out();
             return(new Vector3(OperationTwoInput(in0.x, in1.x), OperationTwoInput(in0.y, in1.y), OperationTwoInput(in0.z, in1.z)));
         };
         processor.Vector4Out = () =>
         {
             Vector4 in0 = processor.Inputs[0].Vector4Out();
             Vector4 in1 = processor.Inputs[1].Vector4Out();
             return(new Vector4(OperationTwoInput(in0.x, in1.x), OperationTwoInput(in0.y, in1.y), OperationTwoInput(in0.z, in1.z), OperationTwoInput(in0.w, in1.w)));
         };
         processor.ColorOut = () =>
         {
             Color in0 = processor.Inputs[0].ColorOut();
             Color in1 = processor.Inputs[1].ColorOut();
             return(new Color(OperationTwoInput(in0.r, in1.r), OperationTwoInput(in0.g, in1.g), OperationTwoInput(in0.b, in1.b), OperationTwoInput(in0.a, in1.a)));
         };
     }
     else if (aConfig.IsVector && !bConfig.IsVector)
     {
         if (bConfig.ValueType == ValueType.Float)
         {
             processor.Vector2Out = () =>
             {
                 Vector2 in0 = processor.Inputs[0].Vector2Out();
                 float   in1 = processor.Inputs[1].FloatOut();
                 return(new Vector2(OperationTwoInput(in0.x, in1), OperationTwoInput(in0.y, in1)));
             };
             processor.Vector3Out = () =>
             {
                 Vector3 in0 = processor.Inputs[0].Vector3Out();
                 float   in1 = processor.Inputs[1].FloatOut();
                 return(new Vector3(OperationTwoInput(in0.x, in1), OperationTwoInput(in0.y, in1), OperationTwoInput(in0.z, in1)));
             };
             processor.Vector4Out = () =>
             {
                 Vector4 in0 = processor.Inputs[0].Vector4Out();
                 float   in1 = processor.Inputs[1].FloatOut();
                 return(new Vector4(OperationTwoInput(in0.x, in1), OperationTwoInput(in0.y, in1), OperationTwoInput(in0.z, in1), OperationTwoInput(in0.w, in1)));
             };
             processor.ColorOut = () =>
             {
                 Color in0 = processor.Inputs[0].ColorOut();
                 float in1 = processor.Inputs[1].FloatOut();
                 return(new Color(OperationTwoInput(in0.r, in1), OperationTwoInput(in0.g, in1), OperationTwoInput(in0.b, in1), OperationTwoInput(in0.a, in1)));
             };
         }
         else
         {
             processor.Vector2Out = () =>
             {
                 Vector2 in0 = processor.Inputs[0].Vector2Out();
                 int     in1 = processor.Inputs[1].IntOut();
                 return(new Vector2(OperationTwoInput(in0.x, in1), OperationTwoInput(in0.y, in1)));
             };
             processor.Vector3Out = () =>
             {
                 Vector3 in0 = processor.Inputs[0].Vector3Out();
                 int     in1 = processor.Inputs[1].IntOut();
                 return(new Vector3(OperationTwoInput(in0.x, in1), OperationTwoInput(in0.y, in1), OperationTwoInput(in0.z, in1)));
             };
             processor.Vector4Out = () =>
             {
                 Vector4 in0 = processor.Inputs[0].Vector4Out();
                 int     in1 = processor.Inputs[1].IntOut();
                 return(new Vector4(OperationTwoInput(in0.x, in1), OperationTwoInput(in0.y, in1), OperationTwoInput(in0.z, in1), OperationTwoInput(in0.w, in1)));
             };
             processor.ColorOut = () =>
             {
                 Color in0 = processor.Inputs[0].ColorOut();
                 int   in1 = processor.Inputs[1].IntOut();
                 return(new Color(OperationTwoInput(in0.r, in1), OperationTwoInput(in0.g, in1), OperationTwoInput(in0.b, in1), OperationTwoInput(in0.a, in1)));
             };
         }
     }
     else if (!aConfig.IsVector && bConfig.IsVector)
     {
         if (aConfig.ValueType == ValueType.Float)
         {
             processor.Vector2Out = () =>
             {
                 float   in0 = processor.Inputs[0].FloatOut();
                 Vector2 in1 = processor.Inputs[1].Vector2Out();
                 return(new Vector2(OperationTwoInput(in0, in1.x), OperationTwoInput(in0, in1.y)));
             };
             processor.Vector3Out = () =>
             {
                 float   in0 = processor.Inputs[0].FloatOut();
                 Vector3 in1 = processor.Inputs[1].Vector3Out();
                 return(new Vector3(OperationTwoInput(in0, in1.x), OperationTwoInput(in0, in1.y), OperationTwoInput(in0, in1.z)));
             };
             processor.Vector4Out = () =>
             {
                 float   in0 = processor.Inputs[0].FloatOut();
                 Vector4 in1 = processor.Inputs[1].Vector4Out();
                 return(new Vector4(OperationTwoInput(in0, in1.x), OperationTwoInput(in0, in1.y), OperationTwoInput(in0, in1.z), OperationTwoInput(in0, in1.w)));
             };
             processor.ColorOut = () =>
             {
                 float in0 = processor.Inputs[0].FloatOut();
                 Color in1 = processor.Inputs[1].ColorOut();
                 return(new Color(OperationTwoInput(in0, in1.r), OperationTwoInput(in0, in1.g), OperationTwoInput(in0, in1.b), OperationTwoInput(in0, in1.a)));
             };
         }
         else
         {
             processor.Vector2Out = () =>
             {
                 int     in0 = processor.Inputs[0].IntOut();
                 Vector2 in1 = processor.Inputs[1].Vector2Out();
                 return(new Vector2(OperationTwoInput(in0, in1.x), OperationTwoInput(in0, in1.y)));
             };
             processor.Vector3Out = () =>
             {
                 int     in0 = processor.Inputs[0].IntOut();
                 Vector3 in1 = processor.Inputs[1].Vector3Out();
                 return(new Vector3(OperationTwoInput(in0, in1.x), OperationTwoInput(in0, in1.y), OperationTwoInput(in0, in1.z)));
             };
             processor.Vector4Out = () =>
             {
                 int     in0 = processor.Inputs[0].IntOut();
                 Vector4 in1 = processor.Inputs[1].Vector4Out();
                 return(new Vector4(OperationTwoInput(in0, in1.x), OperationTwoInput(in0, in1.y), OperationTwoInput(in0, in1.z), OperationTwoInput(in0, in1.w)));
             };
             processor.ColorOut = () =>
             {
                 int   in0 = processor.Inputs[0].IntOut();
                 Color in1 = processor.Inputs[1].ColorOut();
                 return(new Color(OperationTwoInput(in0, in1.r), OperationTwoInput(in0, in1.g), OperationTwoInput(in0, in1.b), OperationTwoInput(in0, in1.a)));
             };
         }
     }
     else if (!aConfig.IsVector && !bConfig.IsVector)
     {
         if (aConfig.ValueType == ValueType.Float)
         {
             if (bConfig.ValueType == ValueType.Float)
             {
                 processor.FloatOut = () =>
                 {
                     float in0 = processor.Inputs[0].FloatOut();
                     float in1 = processor.Inputs[1].FloatOut();
                     return(OperationTwoInput(in0, in1));
                 };
             }
             else
             {
                 processor.FloatOut = () =>
                 {
                     float in0 = processor.Inputs[0].FloatOut();
                     int   in1 = processor.Inputs[1].IntOut();
                     return(OperationTwoInput(in0, in1));
                 };
             }
         }
         else
         {
             if (bConfig.ValueType == ValueType.Float)
             {
                 processor.FloatOut = () =>
                 {
                     int   in0 = processor.Inputs[0].IntOut();
                     float in1 = processor.Inputs[1].FloatOut();
                     return(OperationTwoInput(in0, in1));
                 };
             }
             else
             {
                 processor.IntOut = () =>
                 {
                     int in0 = processor.Inputs[0].IntOut();
                     int in1 = processor.Inputs[1].IntOut();
                     return(OperationTwoInputInt(in0, in1));
                 };
             }
         }
     }
 }
Пример #24
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     GeneratedSwizzles(processor, Parent.GetNode(Inputs[0]).CashedOutputType);
 }
Пример #25
0
 void GeneratedSwizzles(NodeProcessor processor, ValueType input)
 {
     if (input == ValueType.Float)
     {
         processor.FloatOut = () =>
         {
             float v = processor.Inputs[0].FloatOut();
             return(v);
         };
         processor.Vector2Out = () =>
         {
             float v = processor.Inputs[0].FloatOut();
             return(new Vector2(v, v));
         };
         processor.Vector3Out = () =>
         {
             float v = processor.Inputs[0].FloatOut();
             return(new Vector3(v, v, v));
         };
         processor.Vector4Out = () =>
         {
             float v = processor.Inputs[0].FloatOut();
             return(new Vector4(v, v, v, v));
         };
         processor.ColorOut = () =>
         {
             float v = processor.Inputs[0].FloatOut();
             return(new Color(v, v, v, v));
         };
         processor.IntOut = () =>
         {
             float v = processor.Inputs[0].FloatOut();
             return((int)v);
         };
     }
     else if (input == ValueType.Vector2)
     {
         processor.FloatOut = () =>
         {
             Vector2 v = processor.Inputs[0].Vector2Out();
             return(v[_comp0]);
         };
         processor.Vector2Out = () =>
         {
             Vector2 v = processor.Inputs[0].Vector2Out();
             return(new Vector2(v[_comp0], v[_comp1]));
         };
         processor.Vector3Out = () =>
         {
             Vector2 v = processor.Inputs[0].Vector2Out();
             return(new Vector3(v[_comp0], v[_comp1], v[_comp2]));
         };
         processor.Vector4Out = () =>
         {
             Vector2 v = processor.Inputs[0].Vector2Out();
             return(new Vector4(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.ColorOut = () =>
         {
             Vector2 v = processor.Inputs[0].Vector2Out();
             return(new Color(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.IntOut = () =>
         {
             Vector2 v = processor.Inputs[0].Vector2Out();
             return((int)v[_comp0]);
         };
     }
     else if (input == ValueType.Vector3)
     {
         processor.FloatOut = () =>
         {
             Vector3 v = processor.Inputs[0].Vector3Out();
             return(v[_comp0]);
         };
         processor.Vector2Out = () =>
         {
             Vector3 v = processor.Inputs[0].Vector3Out();
             return(new Vector2(v[_comp0], v[_comp1]));
         };
         processor.Vector3Out = () =>
         {
             Vector3 v = processor.Inputs[0].Vector3Out();
             return(new Vector3(v[_comp0], v[_comp1], v[_comp2]));
         };
         processor.Vector4Out = () =>
         {
             Vector3 v = processor.Inputs[0].Vector3Out();
             return(new Vector4(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.ColorOut = () =>
         {
             Vector3 v = processor.Inputs[0].Vector3Out();
             return(new Color(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.IntOut = () =>
         {
             Vector3 v = processor.Inputs[0].Vector3Out();
             return((int)v[_comp0]);
         };
     }
     else if (input == ValueType.Vector4)
     {
         processor.FloatOut = () =>
         {
             Vector4 v = processor.Inputs[0].Vector4Out();
             return(v[_comp0]);
         };
         processor.Vector2Out = () =>
         {
             Vector4 v = processor.Inputs[0].Vector4Out();
             return(new Vector2(v[_comp0], v[_comp1]));
         };
         processor.Vector3Out = () =>
         {
             Vector4 v = processor.Inputs[0].Vector4Out();
             return(new Vector3(v[_comp0], v[_comp1], v[_comp2]));
         };
         processor.Vector4Out = () =>
         {
             Vector4 v = processor.Inputs[0].Vector4Out();
             return(new Vector4(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.ColorOut = () =>
         {
             Vector4 v = processor.Inputs[0].Vector4Out();
             return(new Color(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.IntOut = () =>
         {
             Vector4 v = processor.Inputs[0].Vector4Out();
             return((int)v[_comp0]);
         };
     }
     else if (input == ValueType.Color)
     {
         processor.FloatOut = () =>
         {
             Color v = processor.Inputs[0].ColorOut();
             return(v[_comp0]);
         };
         processor.Vector2Out = () =>
         {
             Color v = processor.Inputs[0].ColorOut();
             return(new Vector2(v[_comp0], v[_comp1]));
         };
         processor.Vector3Out = () =>
         {
             Color v = processor.Inputs[0].ColorOut();
             return(new Vector3(v[_comp0], v[_comp1], v[_comp2]));
         };
         processor.Vector4Out = () =>
         {
             Color v = processor.Inputs[0].ColorOut();
             return(new Vector4(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.ColorOut = () =>
         {
             Color v = processor.Inputs[0].ColorOut();
             return(new Color(v[_comp0], v[_comp1], v[_comp2], v[_comp3]));
         };
         processor.IntOut = () =>
         {
             Color v = processor.Inputs[0].ColorOut();
             return((int)v[_comp0]);
         };
     }
     else if (input == ValueType.Int)
     {
         processor.FloatOut = () =>
         {
             int v = processor.Inputs[0].IntOut();
             return(v);
         };
         processor.Vector2Out = () =>
         {
             int v = processor.Inputs[0].IntOut();
             return(new Vector2(v, v));
         };
         processor.Vector3Out = () =>
         {
             int v = processor.Inputs[0].IntOut();
             return(new Vector3(v, v, v));
         };
         processor.Vector4Out = () =>
         {
             int v = processor.Inputs[0].IntOut();
             return(new Vector4(v, v, v, v));
         };
         processor.ColorOut = () =>
         {
             int v = processor.Inputs[0].IntOut();
             return(new Color(v, v, v, v));
         };
         processor.IntOut = () =>
         {
             int v = processor.Inputs[0].IntOut();
             return((int)v);
         };
     }
 }
Пример #26
0
        public override void InitializeNodeProcessor(NodeProcessor processor)
        {
            switch (_Type)
            {
            case OperationType.Dot:
            {
                ValueType t0 = Parent.GetNode(Inputs[0]).CashedOutputType;
                if (t0 == ValueType.Vector2)
                {
                    processor.FloatOut = () =>
                    {
                        Vector2 a = processor.Inputs[0].Vector2Out();
                        Vector2 b = processor.Inputs[1].Vector2Out();
                        return(Vector2.Dot(a, b));
                    };
                }
                if (t0 == ValueType.Vector3)
                {
                    processor.FloatOut = () =>
                    {
                        Vector3 a = processor.Inputs[0].Vector3Out();
                        Vector3 b = processor.Inputs[1].Vector3Out();
                        return(Vector3.Dot(a, b));
                    };
                }
                if (t0 == ValueType.Vector4)
                {
                    processor.FloatOut = () =>
                    {
                        Vector4 a = processor.Inputs[0].Vector4Out();
                        Vector4 b = processor.Inputs[1].Vector4Out();
                        return(Vector4.Dot(a, b));
                    };
                }
                if (t0 == ValueType.Color)
                {
                    processor.FloatOut = () =>
                    {
                        Color a = processor.Inputs[0].ColorOut();
                        Color b = processor.Inputs[1].ColorOut();
                        return(ColorDot(a, b));
                    };
                }
            }
            break;

            case OperationType.Normalize:
            {
                processor.Vector2Out = () =>
                {
                    Vector2 a = processor.Inputs[0].Vector2Out();
                    return(a.normalized);
                };
                processor.Vector3Out = () =>
                {
                    Vector3 a = processor.Inputs[0].Vector3Out();
                    return(a.normalized);
                };
                processor.Vector4Out = () =>
                {
                    Vector4 a = processor.Inputs[0].Vector4Out();
                    return(a.normalized);
                };
                processor.ColorOut = () =>
                {
                    Color a = processor.Inputs[0].ColorOut();
                    return(ColorNormalized(a));
                };
            }
            break;

            case OperationType.Length:
            {
                ValueType t0 = Parent.GetNode(Inputs[0]).CashedOutputType;
                if (t0 == ValueType.Vector2)
                {
                    processor.FloatOut = () =>
                    {
                        Vector2 a = processor.Inputs[0].Vector2Out();
                        return(a.magnitude);
                    };
                }
                if (t0 == ValueType.Vector3)
                {
                    processor.FloatOut = () =>
                    {
                        Vector3 a = processor.Inputs[0].Vector3Out();
                        return(a.magnitude);
                    };
                }
                if (t0 == ValueType.Vector4)
                {
                    processor.FloatOut = () =>
                    {
                        Vector4 a = processor.Inputs[0].Vector4Out();
                        return(a.magnitude);
                    };
                }
                if (t0 == ValueType.Color)
                {
                    processor.FloatOut = () =>
                    {
                        Color a = processor.Inputs[0].ColorOut();
                        return(ColorLength(a));
                    };
                }
            }
            break;

            case OperationType.Distance:
            {
                ValueType t0 = Parent.GetNode(Inputs[0]).CashedOutputType;
                if (t0 == ValueType.Vector2)
                {
                    processor.FloatOut = () =>
                    {
                        Vector2 a = processor.Inputs[0].Vector2Out();
                        Vector2 b = processor.Inputs[1].Vector2Out();
                        return(Vector2.Distance(a, b));
                    };
                }
                if (t0 == ValueType.Vector3)
                {
                    processor.FloatOut = () =>
                    {
                        Vector3 a = processor.Inputs[0].Vector3Out();
                        Vector3 b = processor.Inputs[1].Vector3Out();
                        return(Vector3.Distance(a, b));
                    };
                }
                if (t0 == ValueType.Vector4)
                {
                    processor.FloatOut = () =>
                    {
                        Vector4 a = processor.Inputs[0].Vector4Out();
                        Vector4 b = processor.Inputs[1].Vector4Out();
                        return(Vector4.Distance(a, b));
                    };
                }
                if (t0 == ValueType.Color)
                {
                    processor.FloatOut = () =>
                    {
                        Color a = processor.Inputs[0].ColorOut();
                        Color b = processor.Inputs[1].ColorOut();
                        return(ColorLength(a - b));
                    };
                }
            }
            break;

            case OperationType.Cross:
            {
                processor.Vector3Out = () =>
                {
                    Vector3 a = processor.Inputs[0].Vector3Out();
                    Vector3 b = processor.Inputs[1].Vector3Out();
                    return(Vector3.Cross(a, b));
                };
            }
            break;

            case OperationType.Project:
            {
                processor.Vector3Out = () =>
                {
                    Vector3 a = processor.Inputs[0].Vector3Out();
                    Vector3 b = processor.Inputs[1].Vector3Out();
                    return(Vector3.Project(a, b));
                };

                processor.Vector4Out = () =>
                {
                    Vector4 a = processor.Inputs[0].Vector4Out();
                    Vector4 b = processor.Inputs[1].Vector4Out();
                    return(Vector4.Project(a, b));
                };
            }
            break;

            case OperationType.ProjectOnPlane:
            {
                processor.Vector3Out = () =>
                {
                    Vector3 a = processor.Inputs[0].Vector3Out();
                    Vector3 b = processor.Inputs[1].Vector3Out();
                    return(Vector3.ProjectOnPlane(a, b));
                };
            }
            break;

            case OperationType.Reflect:
            {
                processor.Vector2Out = () =>
                {
                    Vector2 a = processor.Inputs[0].Vector2Out();
                    Vector2 b = processor.Inputs[1].Vector2Out();
                    return(Vector2.Reflect(a, b));
                };

                processor.Vector3Out = () =>
                {
                    Vector3 a = processor.Inputs[0].Vector3Out();
                    Vector3 b = processor.Inputs[1].Vector3Out();
                    return(Vector3.Reflect(a, b));
                };
            }
            break;
            }
        }
Пример #27
0
 public virtual void InitializeNodeProcessor(NodeProcessor processor)
 {
 }
Пример #28
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.FloatOut = () => Value;
 }
Пример #29
0
 public override void InitializeNodeProcessor(NodeProcessor processor)
 {
     processor.FloatOut = () => Curve.Evaluate(processor.Inputs[0].FloatOut());
 }