/// <summary> /// 刷新节点值 /// </summary> /// <param name="nodeGUI"></param> static public void UpdateNodeGraph(NodeGUI nodeGUI) { //强制刷新 nodeGUI.Data.NeedsRevisit = true; nodeGUI.Data.Operation.Save(); nodeGUI.ParentGraph.SetGraphDirty(); NodeGUIUtility.NodeEventHandler(new NodeEvent(NodeEvent.EventType.EVENT_NODE_UPDATED, nodeGUI)); }
/// <summary> /// 更新连接线 /// </summary> /// <param name="nodeGUI"></param> /// <param name="outputConnect"></param> static public void UpdateConnectLine(NodeGUI nodeGUI, ConnectionPointData outputConnect) { if (outputConnect == null) { return; } nodeGUI.Data.NeedsRevisit = true; nodeGUI.Data.Operation.Save(); nodeGUI.ParentGraph.SetGraphDirty(); NodeGUIUtility.NodeEventHandler(new NodeEvent(NodeEvent.EventType.EVENT_CONNECTIONPOINT_LABELCHANGED, nodeGUI, Vector2.zero, outputConnect)); }
/// <summary> /// 移除输出节点 /// </summary> /// <param name="nodeGUI"></param> /// <param name="outputConnect"></param> static public void RemoveOutputNode(NodeGUI nodeGUI, ConnectionPointData outputConnect) { if (outputConnect == null) { return; } nodeGUI.Data.OutputPoints.Remove(outputConnect); nodeGUI.Data.NeedsRevisit = true; nodeGUI.Data.Operation.Save(); nodeGUI.ParentGraph.SetGraphDirty(); //移除连接线 NodeGUIUtility.NodeEventHandler(new NodeEvent(NodeEvent.EventType.EVENT_CONNECTIONPOINT_DELETED, nodeGUI, Vector2.zero, outputConnect)); }
private void RemoveFromFilterEntryList(ReorderableList list) { if (list.count > 0) { //移除序列化值 var removeIdx = this.groupFilterPathDataList.Count - 1; var rItem = this.groupFilterPathDataList[removeIdx]; this.groupFilterPathDataList.RemoveAt(removeIdx); //移除输出节点 var rOutputNode = this.selfNodeGUI.Data.OutputPoints.Find((node) => node.Id == rItem.OutputNodeId); this.selfNodeGUI.Data.OutputPoints.Remove(rOutputNode); list.index--; //移除连接线 NodeGUIUtility.NodeEventHandler(new NodeEvent(NodeEvent.EventType.EVENT_CONNECTIONPOINT_DELETED, this.selfNodeGUI, Vector2.zero, rOutputNode)); //刷新 GraphNodeHelper.UpdateNodeGraph(this.selfNodeGUI); } }
public void InitFunc() { FunctionCall func = new FunctionCall(); NodeFuncData funcNodeData = this.funcNodeData as NodeFuncData; Type methodClassType = NodeGUIUtility.GetType(funcNodeData.funcClassType); MethodInfo method = methodClassType.GetMethod(funcNodeData.methodName); AccessCode access = new AccessCode(); List <NodePointData> parameterPoint = GetPointData(ConnectionPointType.Parameter); if (method.IsStatic) { access.ownerObject = new Variable() { Var = methodClassType.Name }; func.Access = access; } else { NodePointData ownerPoint = parameterPoint.Find((p) => p.parameterType == funcNodeData.funcClassType); AddMapping(ownerPoint.GUID, (c) => ((AccessCode)((FunctionCall)code).Access).ownerObject = c); parameterPoint.Remove(ownerPoint); } foreach (var param in parameterPoint) { AddMapping(param.GUID, (c) => ((ParameterBlock)((FunctionCall)code).Parameter).Parameters.Add(c)); } access.member = new Variable() { Var = method.Name }; func.Access = access; func.Parameter = new ParameterBlock(); code = func; }
public void InitFunc() { FunctionCall func = new FunctionCall(); NodeFuncData funcNodeData = this.funcNodeData as NodeFuncData; Type methodClassType = NodeGUIUtility.GetType(funcNodeData.funcClassType); List <NodePointData> parameterPoint = GetPointData(ConnectionPointType.Parameter); List <Type> methodParameters = new List <Type>(); foreach (var point in funcNodeData.parameters) { methodParameters.Add(NodeGUIUtility.GetType(point)); } MethodBase method; if (funcNodeData.nodeType == NodeType.Constructor) { method = methodClassType.GetConstructor(methodParameters.ToArray()); KeywordCode keyCode = new KeywordCode() { keyword = new Variable() { Var = "new" }, code = new Variable() { Var = funcNodeData.funcClassType } }; foreach (var param in parameterPoint) { AddMapping(param.GUID, (c) => ((ParameterBlock)((FunctionCall)code).Parameter).Parameters.Add(c)); } func.Access = keyCode; func.Parameter = new ParameterBlock(); code = func; } else if (funcNodeData.nodeType == NodeType.Property) { method = methodParameters.Count != 0 ? methodClassType.GetMethod(funcNodeData.methodName, methodParameters.ToArray()) : methodClassType.GetMethod(funcNodeData.methodName); AccessCode access = new AccessCode(); if (method.IsStatic) { access.ownerObject = new Variable() { Var = methodClassType.Name }; func.Access = access; } else { NodePointData ownerPoint = parameterPoint.Find((p) => p.parameterType == funcNodeData.funcClassType); AddMapping(ownerPoint.GUID, (c) => { if (code is OperatorBlock) { ((AccessCode)((OperatorBlock)code).A).ownerObject = c; } else { ((AccessCode)code).ownerObject = c; } }); parameterPoint.Remove(ownerPoint); } foreach (var param in parameterPoint) { AddMapping(param.GUID, (c) => { OperatorBlock oper = new OperatorBlock(); oper.Operator = "="; oper.A = code; oper.B = c; code = oper; }); } access.member = new Variable() { Var = method.Name.Split('_')[1] }; code = access; } else { method = methodParameters.Count != 0 ? methodClassType.GetMethod(funcNodeData.methodName, methodParameters.ToArray()) : methodClassType.GetMethod(funcNodeData.methodName); AccessCode access = new AccessCode(); if (method.IsStatic) { access.ownerObject = new Variable() { Var = methodClassType.Name }; func.Access = access; } else { NodePointData ownerPoint = parameterPoint.Find((p) => p.parameterType == funcNodeData.funcClassType); AddMapping(ownerPoint.GUID, (c) => ((AccessCode)((FunctionCall)code).Access).ownerObject = c); parameterPoint.Remove(ownerPoint); } foreach (var param in parameterPoint) { AddMapping(param.GUID, (c) => ((ParameterBlock)((FunctionCall)code).Parameter).Parameters.Add(c)); } access.member = new Variable() { Var = method.Name }; func.Access = access; func.Parameter = new ParameterBlock(); code = func; } }