Example #1
0
 public virtual void RefreshNodeProperty(CodeGenerateSystem.Base.BaseNodeControl node, ENodeHandleType type)
 {
     if (!IsLoading)
     {
         OnRefreshLinkControl?.Invoke(node, type);
     }
 }
Example #2
0
        public static string GetValidNodeName(CodeGenerateSystem.Base.BaseNodeControl nodeCtrl)
        {
            string postStr = "";

            if (nodeCtrl.HostNodesContainer != null)
            {
                var matCtrl = nodeCtrl.HostNodesContainer.HostControl as MaterialEditorControl;
                if (matCtrl != null)
                {
                    // matCtrl.CurrentMaterial 不应为空,所以这里不判断
                    var hash64 = matCtrl.CurrentMaterial.GetHash64();
                    postStr = hash64.ToString();
                }
            }
            string strValueName;

            if ((string.IsNullOrEmpty(nodeCtrl.NodeName)) || (nodeCtrl.NodeName == CodeGenerateSystem.Program.NodeDefaultName))
            {
                strValueName = EngineNS.Graphics.CGfxMaterialManager.GetValidShaderVarName(EngineNS.Editor.Assist.GetValuedGUIDString(nodeCtrl.Id), postStr);
            }
            else
            {
                strValueName = EngineNS.Graphics.CGfxMaterialManager.GetValidShaderVarName(nodeCtrl.NodeName, postStr);
            }

            return(strValueName);
        }
Example #3
0
        private void ReturnCustom_HostNodesContainer_OnDeletedNodeControl(CodeGenerateSystem.Base.BaseNodeControl node)
        {
            // 清除OutParams
            var param = CSParam as ReturnCustomConstructParam;

            param.MethodInfo.OutParams.Clear();
            param.MethodInfo.RemoveOutParamOperation(this);
            //param.MethodInfo.OnAddedOutParam -= ((ReturnCustom)node).ReturnCustom_AddParam;
            //param.MethodInfo.OnRemovedOutParam -= ((ReturnCustom)node).ReturnCustom_RemoveParam;
        }
Example #4
0
 public virtual void DeleteNode(CodeGenerateSystem.Base.BaseNodeControl node, bool needUndoRedo = true)
 {
     OnBeferDeleteNodeControl?.Invoke(node);
     node.Clear();
     mCtrlNodeList.Remove(node);
     ContainLinkNodes = mCtrlNodeList.Count != OrigionNodeControls.Count;
     RefreshNodeProperty(node, Base.ENodeHandleType.DeleteNodeControl);
     OnDeletedNodeControl?.Invoke(node);
     IsDirty = true;
 }
Example #5
0
        private void ReturnCustom_HostNodesContainer_OnBeferDeleteNodeControl(CodeGenerateSystem.Base.BaseNodeControl node)
        {
            var param = CSParam as ReturnCustomConstructParam;

            for (int i = 0; i < param.MethodInfo.OutParams.Count; i++)
            {
                var otParam = param.MethodInfo.OutParams[i];
                var chd     = mChildNodes[i] as MethodInvokeParameterControl;
                otParam.OnParamTypeChanged -= chd.UpdateParamType;
            }
        }
Example #6
0
 protected override void AddChildNode(CodeGenerateSystem.Base.BaseNodeControl node, Panel container)
 {
     if (node is CodeDomNode.MethodInUnionControl)
     {
         base.AddChildNodeNoChanageContainer(node, mInputMethodParamsPanel);
     }
     else if (node is CodeDomNode.MethodOutUnionControl)
     {
         base.AddChildNodeNoChanageContainer(node, mOutputMethodParamsPanel);
     }
     else
     {
         base.AddChildNode(node, container);
     }
 }
Example #7
0
        public override void Load(EngineNS.IO.XmlNode xmlNode, double deltaX, double deltaY)
        {
            try
            {
                base.Load(xmlNode, deltaX, deltaY);

                var childNode = xmlNode.FindNode("combinationNodes");
                foreach (var node in childNode.GetNodes())
                {
                    Type ctrlType = EngineNS.Rtti.RttiHelper.GetTypeFromSaveString(node.FindAttrib("Type").Value);//  Program.GetType(xmlNode.FindAttrib("Type").Value);
                    if (ctrlType == null)
                    {
                        continue;
                    }
                    //Type nodeType = Type.GetType(element.GetAttribute("Type"));

                    //string strParam = element.GetAttribute("Params");
                    var    paramAtt = node.FindAttrib("Params");
                    string strParam = null;
                    if (paramAtt != null)
                    {
                        strParam = paramAtt.Value;
                    }

                    //double x = System.Convert.ToDouble(element.GetAttribute("X"));
                    //double y = System.Convert.ToDouble(element.GetAttribute("Y"));
                    double x = System.Convert.ToDouble(node.FindAttrib("X").Value);
                    double y = System.Convert.ToDouble(node.FindAttrib("Y").Value);

                    CodeGenerateSystem.Base.BaseNodeControl nodeControl = HostNodesContainer.AddNodeControl(ctrlType, strParam, x, y, false);
                    nodeControl.Load(node);
                    PackageNodeList.Add(nodeControl);
                    nodeControl.PackagedNode = this;
                }
            }
            catch (System.Exception e)
            {
                ShowMethodLost = true;
                SetErrorShow_WPF("节点读取失败!");
                System.Diagnostics.Debug.WriteLine($"节点读取失败!:Name={NodeName}\r\n{e.ToString()}");
            }
        }
Example #8
0
 public void Initialize(CodeGenerateSystem.Base.BaseNodeControl hostNode)
 {
     mHostNode = hostNode;
 }
Example #9
0
 partial void ClearChildNode_WPF(CodeGenerateSystem.Base.BaseNodeControl child);
Example #10
0
        public virtual async System.Threading.Tasks.Task Load(EngineNS.IO.XndNode xndNode)
        {
            IsLoading = true;

            var att = xndNode.FindAttrib("Head");

            att.BeginRead();
            int ver = 0;

            att.Read(out ver);
            att.Read(out mGuid);
            att.EndRead();

            ClearControlNodes();

            switch (ver)
            {
            case 0:
            {
                // 读取节点信息并创建节点
                var childNodesCtrls = xndNode.FindNode("ChildNodesCtrls");
                if (childNodesCtrls == null)
                {
                    return;
                }
                var xndChildNodes = childNodesCtrls.GetNodes();
                foreach (var cldNode in xndChildNodes)
                //foreach (XmlElement element in doc.DocumentElement.ChildNodes)
                {
                    Type ctrlType = null;
                    ConstructionParams csParam = null;
                    var childAtt = cldNode.FindAttrib("_nodeHead");
                    switch (childAtt.Version)
                    {
                    case 0:
                    {
                        childAtt.BeginRead();
                        string typeSaveName;
                        childAtt.Read(out typeSaveName);
                        ctrlType = Program.GetNodeControlTypeFromSaveString(typeSaveName);                //  Program.GetType(xmlNode.FindAttrib("Type").Value);
                        string constructParam;
                        childAtt.Read(out constructParam);
                        childAtt.EndRead();
                        if (ctrlType == null)
                        {
                            continue;
                        }
                        csParam = new ConstructionParams()
                        {
                            CSType             = this.CSType,
                            HostNodesContainer = this,
                            ConstructParam     = constructParam,
                        };
                    }
                    break;

                    case 1:
                    {
                        childAtt.BeginRead();
                        string typeSaveName;
                        childAtt.Read(out typeSaveName);
                        ctrlType = Program.GetNodeControlTypeFromSaveString(typeSaveName);                //  Program.GetType(xmlNode.FindAttrib("Type").Value);
                        childAtt.EndRead();
                        if (ctrlType == null)
                        {
                            continue;
                        }
                        csParam                    = BaseNodeControl.CreateConstructionParam(ctrlType);
                        csParam.CSType             = this.CSType;
                        csParam.HostNodesContainer = this;
                        csParam.Read(cldNode);
                    }
                    break;
                    }

                    SetConstructionParams_WPF(csParam);
                    CodeGenerateSystem.Base.BaseNodeControl nodeControl = AddNodeControl(ctrlType, csParam, double.NaN, double.NaN);
                    await nodeControl.Load(cldNode);
                }

                // 读取完成后根据id设置一遍链接节点
                foreach (var node in mCtrlNodeList)
                {
                    node.ConstructLinkInfo(this);
                }
                //foreach (var node in mCtrlNodeList)
                //{
                //    node.InitializeUsefulLinkDatas();
                //}

                IsLoading = false;
                IsDirty   = false;
                RefreshNodeProperty(null, ENodeHandleType.UpdateNodeControl);

                var origionCtrlIdsAtt = xndNode.FindAttrib("OrigionCtrlIds");
                if (origionCtrlIdsAtt != null)
                {
                    origionCtrlIdsAtt.BeginRead();
                    int count;
                    origionCtrlIdsAtt.Read(out count);
                    for (int i = 0; i < count; i++)
                    {
                        Guid oriId;
                        origionCtrlIdsAtt.Read(out oriId);
                        var ctrl = FindControl(oriId);
                        if (ctrl != null)
                        {
                            mOrigionNodeControls.Add(ctrl);
                        }
                    }
                    origionCtrlIdsAtt.EndRead();
                }
            }
            break;
            }

            AfterLoad_WPF();
            for (int i = 0; i < CtrlNodeList.Count; ++i)
            {
                CtrlNodeList[i].ContainerLoadComplete(this);
            }
            // 加载完后检查节点错误
            CheckError();
        }