예제 #1
0
 public Sequence(CodeGenerateSystem.Base.ConstructionParams csParam)
     : base(csParam)
 {
     NodeName = "Sequence(序列)";
     InitConstruction();
     AddLinkPinInfo("SeqIn", mSeqInPin, null);
 }
예제 #2
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            enLinkType linkType = enLinkType.Float1 | enLinkType.Float2 | enLinkType.Float3 | enLinkType.Float4;

            CollectLinkPinInfo(smParam, "InputLink", linkType, enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "ResultLink", linkType, enBezierType.Right, enLinkOpType.Start, true);
        }
예제 #3
0
 public BaseControl(CodeGenerateSystem.Base.ConstructionParams csParam)
     : base(csParam)
 {
     InitConstruction();
     IsOnlyReturnValue = true;
     AddLinkPinInfo("CtrlValue", mCtrlValue, null);
 }
예제 #4
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            var splits    = smParam.ConstructParam.Split(',');
            var valueType = splits[0];

            CollectLinkPinInfo(smParam, "OutLink", LinkPinControl.GetLinkTypeFromTypeString(valueType), enBezierType.Right, enLinkOpType.Start, true);
        }
예제 #5
0
        public CubeTexture(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            IsInConstantBuffer = false;
            IsGeneric          = true;
            mDropAdorner       = new EditorCommon.DragDrop.DropAdorner(Image_Texture);

            ShaderVarInfo.EditorType = "Texture";
            //ShaderVarInfo.VarName = GetTextureName();

            TexturePath = EngineNS.CEngine.Instance.GameEditorInstance.Desc.DefaultTextureName;

            AddLinkPinInfo("TextureLink", TextureLink, TextureLink.BackBrush);
            AddLinkPinInfo("UVLink_3D", UVLink_3D, null);
            AddLinkPinInfo("RGBALink", RGBALink, RGBALink.BackBrush);
            AddLinkPinInfo("RGBLink", RGBLink, RGBLink.BackBrush);
            AddLinkPinInfo("RLink", RLink, RLink.BackBrush);
            AddLinkPinInfo("GLink", GLink, GLink.BackBrush);
            AddLinkPinInfo("BLink", BLink, BLink.BackBrush);
            AddLinkPinInfo("ALink", ALink, ALink.BackBrush);

            InitializeShaderVarInfo();
        }
예제 #6
0
        public CommonValue(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();

            IsOnlyReturnValue = true;

            var param = csParam as CommonValueConstructionParams;

            if (param != null)
            {
                if (param.IsCommon)
                {
#warning 通用数值处理
                    throw new InvalidOperationException();
                }
                else
                {
                    if (param.ValueType != null)
                    {
                        NodeName = param.ValueType.Name;
                    }

                    AddLinkPinInfo("CtrlValueLinkHandle", mCtrlValueLinkHandle, null);
                }
            }

            //NodeName = ValueText;
        }
예제 #7
0
        public ParticleFrame(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            AddLinkPinInfo("TimeValueLink", TimeValueLink, TimeValueLink.BackBrush);
        }
예제 #8
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            var param = smParam as ExpandNodeChildConstructionParams;

            CollectLinkPinInfo(smParam, "ValueIn", param.ParamType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "ValueOut", param.ParamType, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
        }
예제 #9
0
 public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
 {
     CollectLinkPinInfo(smParam, "BaseLinkHandle", CodeGenerateSystem.Base.enLinkType.AnimationPose, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
     CollectLinkPinInfo(smParam, "AdditiveLinkHandle", CodeGenerateSystem.Base.enLinkType.AnimationPose, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
     CollectLinkPinInfo(smParam, "AlphaValueLinkHandle", CodeGenerateSystem.Base.enLinkType.Single, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
     CollectLinkPinInfo(smParam, "OutLinkHandle", CodeGenerateSystem.Base.enLinkType.AnimationPose, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, false);
 }
예제 #10
0
        public Abs(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            AddLinkPinInfo("InputLink", InputLink, null);
            AddLinkPinInfo("ResultLink", ResultLink, ResultLink.BackBrush);
        }
예제 #11
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            var param = smParam as ExpandNodeConstructParam;

            CollectLinkPinInfo(smParam, "CtrlMethodPin_Pre", CodeGenerateSystem.Base.enLinkType.Method, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlMethodPin_Next", CodeGenerateSystem.Base.enLinkType.Method, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, false);
            CollectLinkPinInfo(smParam, "CtrlTarget", param.ExpandType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlTargetOut", param.ExpandType, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
        }
예제 #12
0
        public SequenceElement(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            var param = CSParam as SequenceElementConstructParam;

            NodeType = enNodeType.ChildNode;
            InitConstruction();
            mElemPin.NameString = "[" + param.ElementIdx + "]";
            AddLinkPinInfo("ElemPin", mElemPin, null);
        }
예제 #13
0
        public ExpandNodeChild(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            IsOnlyReturnValue = true;
            InitConstruction();

            var param = csParam as ExpandNodeChildConstructionParams;

            AddLinkPinInfo("ValueIn", mCtrlValue_In);
            AddLinkPinInfo("ValueOut", mCtrlValue_Out);
        }
예제 #14
0
 public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
 {
     CollectLinkPinInfo(smParam, "TextureLink", enLinkType.Texture, enBezierType.Right, enLinkOpType.Start, true);
     CollectLinkPinInfo(smParam, "UVLink_3D", enLinkType.Float3 | enLinkType.Float4, enBezierType.Left, enLinkOpType.End, false);
     CollectLinkPinInfo(smParam, "RGBALink", enLinkType.Float4, enBezierType.Right, enLinkOpType.Start, true);
     CollectLinkPinInfo(smParam, "RGBLink", enLinkType.Float3, enBezierType.Right, enLinkOpType.Start, true);
     CollectLinkPinInfo(smParam, "RLink", enLinkType.Float1, enBezierType.Right, enLinkOpType.Start, true);
     CollectLinkPinInfo(smParam, "GLink", enLinkType.Float1, enBezierType.Right, enLinkOpType.Start, true);
     CollectLinkPinInfo(smParam, "BLink", enLinkType.Float1, enBezierType.Right, enLinkOpType.Start, true);
     CollectLinkPinInfo(smParam, "ALink", enLinkType.Float1, enBezierType.Right, enLinkOpType.Start, true);
 }
예제 #15
0
        public FinalTextureControl(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            IsInConstantBuffer = false;

            AddLinkPinInfo("TextureLink", TextureLink, TextureLink.BackBrush);
            AddLinkPinInfo("UVLink_2D", UVLink_2D, null);
            AddLinkPinInfo("Tex2DLink", Tex2DLink, Tex2DLink.BackBrush);
        }
예제 #16
0
        public Typeof(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();

            IsOnlyReturnValue = true;
            AddLinkPinInfo("TypeValueLinkHandle", mTypeValueLinkHandle, null);

            var param = csParam as TypeofConstructionParams;

            NodeName = "typeof: " + param.ValueTypeFullName;
        }
예제 #17
0
        public Return(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();
            NodeName = "Return";

            var param = csParam as ReturnConstructParam;

            SetParameters(param.MethodInfo);

            AddLinkPinInfo("CtrlMethodLink", mCtrlMethodLink, null);
        }
예제 #18
0
        public ShaderAutoData(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            var splits = smParam.ConstructParam.Split(',');

            mValueType        = splits[0];
            Title             = splits[1];
            Description       = splits[2] + "(" + mValueType + ")";
            OutLink.BackBrush = Program.GetBrushFromValueType(mValueType, this);
            AddLinkPinInfo("OutLink", OutLink, OutLink.BackBrush);
        }
예제 #19
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            CollectLinkPinInfo(smParam, "CtrlMethodLink_Pre", CodeGenerateSystem.Base.enLinkType.Method, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlMethodLink_Complete", CodeGenerateSystem.Base.enLinkType.Method, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, false);
            CollectLinkPinInfo(smParam, "CtrlMethodLink_LoopBody", CodeGenerateSystem.Base.enLinkType.Method, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, false);
            CollectLinkPinInfo(smParam, "CtrlArrayElement", CodeGenerateSystem.Base.enLinkType.All, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
            CollectLinkPinInfo(smParam, "CtrlArrayIndex", CodeGenerateSystem.Base.enLinkType.Int32, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
            CollectLinkPinInfo(smParam, "CtrlArrayIn", CodeGenerateSystem.Base.enLinkType.Enumerable | CodeGenerateSystem.Base.enLinkType.IntPtr, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "CtrlArrayCount", CodeGenerateSystem.Base.enLinkType.Int32, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false);

            CollectLinkPinInfo(smParam, "CtrlDicKey", CodeGenerateSystem.Base.enLinkType.All, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
            CollectLinkPinInfo(smParam, "CtrlDicValue", CodeGenerateSystem.Base.enLinkType.All, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true);
        }
예제 #20
0
        public IF(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            AddLinkPinInfo("ValueA", ValueA, null);
            AddLinkPinInfo("ValueB", ValueB, null);
            AddLinkPinInfo("ValueAgtB", ValueAgtB, null);
            AddLinkPinInfo("ValueAeqB", ValueAeqB, null);
            AddLinkPinInfo("ValueAltB", ValueAltB, null);
            AddLinkPinInfo("ResultHandle", ResultHandle, ResultHandle.BackBrush);
            //AddLinkObject(enLinkType.Bool, ValueBool, enBezierType.Left, enLinkOpType.End, null, false);
        }
예제 #21
0
        public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam)
        {
            enLinkType codValueLinkType = enLinkType.Float1 | enLinkType.Int32 | enLinkType.Int64 | enLinkType.Double | enLinkType.Single;

            CollectLinkPinInfo(smParam, "ValueA", codValueLinkType, enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "ValueB", codValueLinkType, enBezierType.Left, enLinkOpType.End, false);
            enLinkType resultValueType = enLinkType.Int32 | enLinkType.Float1 | enLinkType.Float2 | enLinkType.Float3 | enLinkType.Float4;

            CollectLinkPinInfo(smParam, "ValueAgtB", resultValueType, enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "ValueAeqB", resultValueType, enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "ValueAltB", resultValueType, enBezierType.Left, enLinkOpType.End, false);
            CollectLinkPinInfo(smParam, "ResultHandle", resultValueType, enBezierType.Right, enLinkOpType.Start, true);
        }
예제 #22
0
        public Aix(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();
            AddLinkPinInfo("Ctrlvalue_VectorIn", mCtrlvalue_VectorIn, null);
            AddLinkPinInfo("Ctrlvalue_VectorOut", mCtrlvalue_VectorOut, null);

            mValueType = typeof(EngineNS.Vector4);
            AddFloatValue("X");
            AddFloatValue("Y");
            AddFloatValue("Z");
            AddFloatValue("Angle");
            NodeName = mValueType.Name;
        }
예제 #23
0
        public ListCount(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            NodeName = "Count";
            InitConstruction();

            IsOnlyReturnValue = true;

            var pin = AddLinkPinInfo("ArrayIn", mArrayInPin);

            pin.OnAddLinkInfo += ArrayInPin_OnAddLinkInfo;
            pin.OnDelLinkInfo += ArrayInPin_OnDelLinkInfo;
            AddLinkPinInfo("CountOut", mCountOutPin);
        }
예제 #24
0
        public IfNode(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();
            NodeName = "if";
            var ccP = CodeGenerateSystem.Base.BaseNodeControl.CreateConstructionParam(typeof(ConditionControl));

            ccP.CSType             = csParam.CSType;
            ccP.HostNodesContainer = CSParam.HostNodesContainer;
            ConditionControl cc = new ConditionControl(ccP);

            AddChildNode(cc, mChildNodeContainer);

            AddLinkPinInfo("CtrlMethodLink_Pre", mCtrlMethodLink_Pre, null);
            AddLinkPinInfo("CtrlMethodLink_False", mCtrlMethodLink_False, null);
        }
예제 #25
0
        public MaterialControl(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            IsDeleteable = false;

            mOutLinks.Clear();
            mInLinks_VS.Clear();
            mInLinks_PS.Clear();

            //AddSemanticHandle("Base Color", "vAlbedo", "float4", "Base Color, Albedo", true);
            //AddSemanticHandle("LightMapColor", "vLightMapColor", "float4", "LightMapColor", true);
            //AddSemanticHandle("Normal", "vNormal", "float4", "Normal", true);
            //AddSemanticHandle("BumpNormal", "vBumpNormal", "float4", "BumpNormal", true);
            //AddSemanticHandle("Specular", "vSpecular", "float4", "Specular", true);
            //AddSemanticHandle("Bloom", "vBloom", "float", "Bloom", true);
            //AddSemanticHandle("Metal", "vMetal", "float", "Metal", true);
            //AddSemanticHandle("Roughness", "vRoughness", "float", "Roughness", true);
            //AddSemanticHandle("LitMode", "vLitMode", "float", "光照模式,是皮肤处理,还是金属处理,等等", true);
            //AddSemanticHandle("Pixel Shader UV", "vUV", "float2", "Pixel Shader UV", true, true);

            AddSemanticHandle("Albedo", "mAlbedo", "float3", "color of material without light shading", true);
            AddSemanticHandle("Normal", "mNormal", "float3", "surface normal", true);
            AddSemanticHandle("Metallic", "mMetallic", "float", "the metal value of material", true);
            AddSemanticHandle("Smooth", "mRough", "float", "The smoothness of surface", true);
            AddSemanticHandle("AbsSpecular", "mAbsSpecular", "float", "Absolute specular", true);
            AddSemanticHandle("Transmit", "mTransmit", "float", "transimission", true);
            AddSemanticHandle("Emissive", "mEmissive", "float3", "Emissive", true);
            AddSemanticHandle("Fuzz", "mFuzz", "float", "fuzzy", true);
            AddSemanticHandle("Iridescence", "mIridescence", "float", "iridescence", true);
            AddSemanticHandle("Distortion", "mDistortion", "float", "distort the background", true);
            AddSemanticHandle("Alpha", "mAlpha", "float", "material alpha", true);
            AddSemanticHandle("AlphaTest", "mAlphaTest", "float", "alpha test threshold", true);
            AddSemanticHandle("VertexOffset", "mVertexOffset", "float3", "vertex animation", true, true);
            AddSemanticHandle("SubAlbedo", "mSubAlbedo", "float3", "subsurface albedo", true);

            AddSemanticHandle("AO", "mAO", "float", "AO", true);
            AddSemanticHandle("Mask", "mMask", "float", "mask", true);

            AddSemanticHandle("ShadowColor", "mShadowColor", "float3", "shadow color mainly for npr to use", true);
            AddSemanticHandle("DeepShadow", "mDeepShadow", "float", "make the shadow even deep for npr to use", true);
            AddSemanticHandle("MoodColor", "mMoodColor", "float3", "mood color for npr to use", true);


            mMtlMacros = new MtlMacros(this);
        }
예제 #26
0
        public MethodOverride(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();

            IsOnlyReturnValue = true;
            AddLinkPinInfo("CtrlMethodPin_Next", mCtrlMethodPin_Next, null);
            //if (string.IsNullOrEmpty(csParam.ConstructParam))
            //    return;

            try
            {
                var param = csParam as MethodOverrideConstructParam;
                NodeName     = param.MethodInfo.MethodName;
                ShowNodeName = param.MethodInfo.ShowMethodName;
                //mMethodInfo = Program.GetMethodInfoFromParam(CSParam.ConstructParam);
                //if(mMethodInfo != null)
                //{
                //    SetParameters(mMethodInfo.GetParameters(), StandardParamPropertyInfos);
                //    MethodReturnType = mMethodInfo.ReturnType;
                //}
                //else
                //{
                //    // 连线函数不存在
                //    HasError = true;
                //    ErrorDescription = $"函数不存在!";

                //    if(!string.IsNullOrEmpty(splits[3]))
                //    {
                //        var paramSplits = splits[3].Split('/');
                //        SetParameters(paramSplits, CSParam.CSType);
                //    }
                //    if(!string.IsNullOrEmpty(splits[4]))
                //    {
                //        var retType = EngineNS.Rtti.RttiHelper.GetTypeFromSaveString(splits[4]);
                //        MethodReturnType = retType;
                //    }
                //}
                SetParameters(param.MethodInfo.Params);
                MethodReturnType = param.MethodInfo.ReturnType;
            }
            catch (System.Exception e)
            {
                HasError         = true;
                ErrorDescription = $"连线函数节点异常!:Name={NodeName}, Param={csParam.ConstructParam}\r\n{e.ToString()}";
            }
        }
예제 #27
0
        public Tex2D(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            var linkObj = AddLinkPinInfo("TextureLink", TextureLink, null);

            linkObj.OnAddLinkInfo += new LinkPinControl.Delegate_OnOperateLinkInfo(TextureLink_OnAddLinkInfo);
            linkObj = AddLinkPinInfo("UVLink", UVLink, null);
            linkObj.OnAddLinkInfo += new LinkPinControl.Delegate_OnOperateLinkInfo(UVLink_OnAddLinkInfo);
            AddLinkPinInfo("RGBALink", RGBALink, RGBALink.BackBrush);
            AddLinkPinInfo("RGBLink", RGBLink, RGBLink.BackBrush);
            AddLinkPinInfo("RLink", RLink, RLink.BackBrush);
            AddLinkPinInfo("GLink", GLink, GLink.BackBrush);
            AddLinkPinInfo("BLink", BLink, BLink.BackBrush);
            AddLinkPinInfo("ALink", ALink, ALink.BackBrush);
        }
예제 #28
0
        public MethodInvoke_DelegateControl(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            var param = csParam as MethodInvoke_DelegateControlConstructionParams;

            IsOnlyReturnValue = true;
            NodeName          = param.ParamInfo.ParamName;//param.ConstructParam;

            InitConstruction();
            switch (param.ConstructType)
            {
            case MethodInvokeNode.enParamConstructType.MethodInvoke:
                break;

            default:
                throw new InvalidOperationException();
            }
        }
예제 #29
0
        public ExpandNode(CodeGenerateSystem.Base.ConstructionParams csParam)
            : base(csParam)
        {
            InitConstruction();
            IsOnlyReturnValue = true;

            AddLinkPinInfo("CtrlMethodPin_Pre", mCtrlMethodPin_Pre);
            AddLinkPinInfo("CtrlMethodPin_Next", mCtrlMethodPin_Next);
            AddLinkPinInfo("CtrlTarget", mCtrlTarget);
            AddLinkPinInfo("CtrlTargetOut", mCtrlTargetOut);

            var param = csParam as ExpandNodeConstructParam;

            NodeName = EngineNS.Rtti.RttiHelper.GetAppTypeString(param.ExpandType);

            CreateTemplateClass_All();
            CreateTemplateClass_Show();
        }
예제 #30
0
        public Arithmetic(CodeGenerateSystem.Base.ConstructionParams smParam)
            : base(smParam)
        {
            InitializeComponent();

            //NodeName = "运算(" + P1_Label.Text + " " + smParam.ConstructParam + " " + P2_Label.Text + ")";
            switch (CSParam.ConstructParam)
            {
            case "+":
                NodeName = "Add";
                break;

            case "-":
                NodeName = "Subtract";
                break;

            case "×":
                NodeName = "Multiply";
                break;

            case "·":       // 点乘
            case "dot":
                NodeName = "Dot";
                break;

            case "÷":
                NodeName = "Divide";
                break;

            case "cross":
                NodeName = "Cross";
                break;

            default:
                NodeName = CSParam.ConstructParam;
                break;
            }

            AddLinkPinInfo("Value1", Value1, null);
            AddLinkPinInfo("Value2", Value2, null);
            AddLinkPinInfo("ResultLink", ResultLink, ResultLink.BackBrush);
        }