Exemplo n.º 1
0
 void InPin1_OnAddLinkInfo(CodeGenerateSystem.Base.LinkInfo linkInfo)
 {
     //var pin1 = GetLinkPinInfo(mCtrlValue1);
     //pin1.LinkType = linkInfo.m_linkFromObjectInfo.GetLinkType(0, true);
     //var pin2 = GetLinkPinInfo(mCtrlValue2);
     //if(pin2.HasLink)
     //{
     //    var pinOut = GetLinkPinInfo(mCtrlResultLink);
     //    pinOut.LinkType = GetAvilableType()
     //}
 }
Exemplo n.º 2
0
 void InPin2_OnDelLinkInfo(CodeGenerateSystem.Base.LinkInfo linkInfo)
 {
 }
Exemplo n.º 3
0
 partial void ArrayInPin_OnAddLinkInfo(CodeGenerateSystem.Base.LinkInfo linkInfo)
 {
 }
        internal async Task SetVariableBindOperation(EngineNS.UISystem.VariableBindInfo bindInfo)
        {
            var category   = Macross_Client.GetCategory(MacrossPanel.UIBindFuncCategoryName);
            var bindFromUI = HostControl.mCurrentUIHost.FindChildElement(bindInfo.BindFromUIElementId);
            var bindToUI   = HostControl.mCurrentUIHost.FindChildElement(bindInfo.BindToUIElementId);

            // from->to
            if (bindInfo.BindMode == EngineNS.UISystem.enBindMode.OnWayToSource ||
                bindInfo.BindMode == EngineNS.UISystem.enBindMode.TwoWay)
            {
                var item = new Macross.CategoryItem(null, category);
                item.CategoryItemType = Macross.CategoryItem.enCategoryItemType.Unknow;
                item.CanDrag          = false;
                item.InitTypeStr      = "UI_UIElement_VariableBind";
                var data = new UIElementVariableBindCategoryItemInitData();
                data.Reset();

                data.UIElement            = bindFromUI;
                data.UIElementId          = bindInfo.BindFromUIElementId;
                data.PropertyName         = bindInfo.BindFromPropertyName;
                data.PropertyType         = bindInfo.BindFromPropertyType;
                data.TargetUIElement      = bindToUI;
                data.TargetUIElementId    = bindInfo.BindToUIElementId;
                data.TargetPropertyName   = bindInfo.VariableName;
                data.TargetPropertyType   = bindInfo.BindToVariableType;
                data.FunctionName         = $"UIVariableBindFunc_Set_{bindInfo.BindFromUIElementId.ToString().Replace("-", "_")}_{item.Id.ToString().Replace("-", "_")}";
                bindInfo.FunctionName_Set = data.FunctionName;
                item.Initialize(Macross_Client, data);
                category.Items.Add(item);

                var varItemPro     = item.PropertyShowItem as UIElementVariableBindCategoryItemPropertys;
                var nodesContainer = await Macross_Client.CreateNodesContainer(item);

                var nodeType = typeof(CodeDomNode.MethodCustom);
                var csParam  = new CodeDomNode.MethodCustom.MethodCustomConstructParam()
                {
                    CSType             = Macross_Client.CSType,
                    HostNodesContainer = nodesContainer.NodesControl,
                    ConstructParam     = "",
                    MethodInfo         = varItemPro.MethodInfo,
                    IsShowProperty     = false,
                };
                var node = nodesContainer.NodesControl.AddOrigionNode(nodeType, csParam, 0, 0);
                node.IsDeleteable            = false;
                node.NodeNameAddShowNodeName = false;

                var retNodeType = typeof(CodeDomNode.ReturnCustom);
                var retCSParam  = new CodeDomNode.ReturnCustom.ReturnCustomConstructParam()
                {
                    CSType             = Macross_Client.CSType,
                    HostNodesContainer = nodesContainer.NodesControl,
                    ConstructParam     = "",
                    MethodInfo         = varItemPro.MethodInfo,
                    ShowPropertyType   = CodeDomNode.ReturnCustom.ReturnCustomConstructParam.enShowPropertyType.ReturnValue,
                };
                var retNode = nodesContainer.NodesControl.AddOrigionNode(retNodeType, retCSParam, 500, 0) as CodeDomNode.ReturnCustom;
                retNode.IsDeleteable = false;

                // 相同或可强转类型自动连接
                var nodePins    = node.GetLinkPinInfos();
                var retNodePins = retNode.GetLinkPinInfos();
                foreach (var pin in nodePins)
                {
                    if (pin.Visibility != Visibility.Visible)
                    {
                        continue;
                    }
                    foreach (var retPin in retNodePins)
                    {
                        if (retPin.Visibility != Visibility.Visible)
                        {
                            continue;
                        }
                        if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(pin, retPin))
                        {
                            var linkInfo = new CodeGenerateSystem.Base.LinkInfo(nodesContainer.NodesControl.GetDrawCanvas(), pin, retPin);
                        }
                    }
                }

                nodesContainer.Save();

                await Macross_Client.ShowNodesContainer(item);
            }

            // to->from
            if (bindInfo.BindMode == EngineNS.UISystem.enBindMode.OnWay ||
                bindInfo.BindMode == EngineNS.UISystem.enBindMode.TwoWay)
            {
                var item = new Macross.CategoryItem(null, category);
                item.CategoryItemType = Macross.CategoryItem.enCategoryItemType.Unknow;
                item.CanDrag          = false;
                item.InitTypeStr      = "UI_UIElement_VariableBind";
                var data = new UIElementVariableBindCategoryItemInitData();
                data.Reset();
                data.UIElement            = bindToUI;
                data.UIElementId          = bindInfo.BindToUIElementId;
                data.PropertyName         = bindInfo.VariableName;
                data.PropertyType         = bindInfo.BindToVariableType;
                data.TargetUIElement      = bindFromUI;
                data.TargetUIElementId    = bindInfo.BindFromUIElementId;
                data.TargetPropertyName   = bindInfo.BindFromPropertyName;
                data.TargetPropertyType   = bindInfo.BindFromPropertyType;
                data.FunctionName         = $"UIVariableBindFunc_Get_{bindInfo.BindToUIElementId.ToString().Replace("-", "_")}_{item.Id.ToString().Replace("-", "_")}";
                bindInfo.FunctionName_Get = data.FunctionName;
                item.Initialize(Macross_Client, data);
                category.Items.Add(item);

                var varItemPro     = item.PropertyShowItem as UIElementVariableBindCategoryItemPropertys;
                var nodesContainer = await Macross_Client.CreateNodesContainer(item);

                var nodeType = typeof(CodeDomNode.MethodCustom);
                var csParam  = new CodeDomNode.MethodCustom.MethodCustomConstructParam()
                {
                    CSType             = Macross_Client.CSType,
                    HostNodesContainer = nodesContainer.NodesControl,
                    ConstructParam     = "",
                    MethodInfo         = varItemPro.MethodInfo,
                    IsShowProperty     = false,
                };
                var node = nodesContainer.NodesControl.AddOrigionNode(nodeType, csParam, 0, 0);
                node.IsDeleteable            = false;
                node.NodeNameAddShowNodeName = false;

                var retNodeType = typeof(CodeDomNode.ReturnCustom);
                var retCSParam  = new CodeDomNode.ReturnCustom.ReturnCustomConstructParam()
                {
                    CSType             = Macross_Client.CSType,
                    HostNodesContainer = nodesContainer.NodesControl,
                    ConstructParam     = "",
                    MethodInfo         = varItemPro.MethodInfo,
                    ShowPropertyType   = CodeDomNode.ReturnCustom.ReturnCustomConstructParam.enShowPropertyType.ReturnValue,
                };
                var retNode = nodesContainer.NodesControl.AddOrigionNode(retNodeType, retCSParam, 500, 0) as CodeDomNode.ReturnCustom;
                retNode.IsDeleteable = false;

                // 相同或可强转类型自动连接
                bool childLinked     = false;
                var  nodeChildren    = node.GetChildNodes();
                var  retNodeChildren = retNode.GetChildNodes();
                foreach (var nodeChild in nodeChildren)
                {
                    foreach (var retNodeChild in retNodeChildren)
                    {
                        foreach (var pin in nodeChild.GetLinkPinInfos())
                        {
                            if (pin.Visibility != Visibility.Visible)
                            {
                                continue;
                            }
                            foreach (var retPin in retNodeChild.GetLinkPinInfos())
                            {
                                if (retPin.Visibility != Visibility.Visible)
                                {
                                    continue;
                                }
                                if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(pin, retPin))
                                {
                                    var linkInfo = new CodeGenerateSystem.Base.LinkInfo(nodesContainer.NodesControl.GetDrawCanvas(), pin, retPin);
                                    childLinked = true;
                                }
                            }
                        }
                    }
                }
                if (childLinked)
                {
                    var nodePins    = node.GetLinkPinInfos();
                    var retNodePins = retNode.GetLinkPinInfos();
                    foreach (var pin in nodePins)
                    {
                        if (pin.Visibility != Visibility.Visible)
                        {
                            continue;
                        }
                        foreach (var retPin in retNodePins)
                        {
                            if (retPin.Visibility != Visibility.Visible)
                            {
                                continue;
                            }
                            if (CodeGenerateSystem.Base.LinkInfo.CanLinkWith(pin, retPin))
                            {
                                var linkInfo = new CodeGenerateSystem.Base.LinkInfo(nodesContainer.NodesControl.GetDrawCanvas(), pin, retPin);
                            }
                        }
                    }
                }

                nodesContainer.Save();

                await Macross_Client.ShowNodesContainer(item);
            }

            List <EngineNS.UISystem.VariableBindInfo> infos;

            if (!bindFromUI.VariableBindInfosDic.TryGetValue(bindInfo.BindFromPropertyName, out infos))
            {
                infos = new List <EngineNS.UISystem.VariableBindInfo>();
                bindFromUI.VariableBindInfosDic[bindInfo.BindFromPropertyName] = infos;
            }
            infos.Add(bindInfo);

            HostControl.ChangeToLogic();
        }