// called by the BaseGraph when the node is added to the graph public void Initialize(BaseGraph graph) { this.graph = graph; ExceptionToLog.Call(() => Enable()); inputPorts = new NodeInputPortContainer(this); outputPorts = new NodeOutputPortContainer(this); nodeFields = new Dictionary <string, NodeFieldInformation>(); customPortTypeBehaviorMap = new Dictionary <Type, CustomPortTypeBehaviorDelegate>(); InitializeInOutDatas(); InitializePorts(); }
/// <summary> /// 只有两种情况会调用到这个函数 /// 1.打开GraphEditorWindow(初次打开或者在已经打开的基础上更换GraphAsset) /// 2.编译/进入PlayMode而导致的GraphEditorWindow重载 /// </summary> /// <param name="graph"></param> public void InitializeGraph(BaseGraph graph) { if (this.graph != null && graph != this.graph) { // Save the graph to the disk GraphCreateAndSaveHelper.SaveGraphToDisk(this.graph); // Unload the graph graphUnloaded?.Invoke(this.graph); } graphLoaded?.Invoke(graph); this.graph = graph; if (graphView != null) { rootView.Remove(graphView); } InitializeWindow(graph); rootView.Add(graphView); graphView = rootView.Children().FirstOrDefault(e => e is BaseGraphView) as BaseGraphView; if (graphView == null) { Debug.LogError("GraphView has not been added to the BaseGraph root view !"); return; } graphView.Initialize(graph); InitializeGraphView(graphView); // TOOD: onSceneLinked... if (graph.IsLinkedToScene()) { LinkGraphWindowToScene(graph.GetLinkedScene()); } else { graph.onSceneLinked += LinkGraphWindowToScene; } //防止在外部调用InitializeGraph时重复执行InitializeGraph reloadWorkaround = false; }
public void Initialize(BaseGraph graph) { if (this.graph != null) { SaveGraphToDisk(); } this.graph = graph; connectorListener = new EdgeConnectorListener(this); InitializeNodeViews(); InitializeEdgeViews(); InitializeViews(); InitializeCommentBlocks(); UpdateComputeOrder(); }
public void InitializeGraph(BaseGraph graph) { this.graph = graph; if (graphView != null) { rootView.Remove(graphView); } //Initialize will provide the BaseGraphView Initialize(graph); graphView = rootView.Children().FirstOrDefault(e => e is BaseGraphView) as BaseGraphView; if (graphView == null) { Debug.LogError("GraphView has not been added to the BaseGraph root view !"); return; } graphView.Initialize(graph); }
PushDataDelegate CreatePushDataDelegateForEdge(SerializableEdge edge) { try { //Creation of the delegate to move the data from the input node to the output node: FieldInfo inputField = edge.inputNode.GetType().GetField(edge.inputFieldName, BindingFlags.Public | BindingFlags.Instance); FieldInfo outputField = edge.outputNode.GetType().GetField(edge.outputFieldName, BindingFlags.Public | BindingFlags.Instance); // We keep slow checks inside the editor #if UNITY_EDITOR if (!BaseGraph.TypesAreConnectable(inputField.FieldType, outputField.FieldType)) { Debug.LogError("Can't convert from " + inputField.FieldType + " to " + outputField.FieldType + ", you must specify a custom port function (i.e CustomPortInput or CustomPortOutput) for non-implicit convertions"); } #endif // TODO: TypeAdapter convertion method here Expression inputParamField = Expression.Field(Expression.Constant(edge.inputNode), inputField); Expression outputParamField = Expression.Field(Expression.Constant(edge.outputNode), outputField); // If there is a user defined convertion function, then we call it if (TypeAdapter.AreAssignable(outputField.FieldType, inputField.FieldType)) { outputParamField = Expression.Call(TypeAdapter.GetConvertionMethod(outputField.FieldType, inputField.FieldType), outputParamField); } else // otherwise we cast { outputParamField = Expression.Convert(outputParamField, inputField.FieldType); } BinaryExpression assign = Expression.Assign(inputParamField, outputParamField); return(Expression.Lambda <PushDataDelegate>(assign).Compile()); } catch (Exception e) { Debug.LogError(e); return(null); } }
// called by the BaseGraph when the node is added to the graph public void Initialize(BaseGraph graph) { this.graph = graph; Enable(); foreach (var nodeFieldKP in nodeFields) { var nodeField = nodeFieldKP.Value; if (nodeField.behavior != null) { UpdatePortsForField(nodeField.fieldName); } else { // If we don't have a custom behavor on the node, we just have to create a simple port AddPort(nodeField.input, nodeField.fieldName, new PortData { acceptMultipleEdges = nodeField.isMultiple, displayName = nodeField.name }); } } }
// called by the BaseGraph when the node is added to the graph public void Initialize(BaseGraph graph) { this.graph = graph; Enable(); }
protected virtual void OnEnable() { graph = target as BaseGraph; graph.onExposedParameterListChanged += UpdateExposedParameters; graph.onExposedParameterModified += UpdateExposedParameters; }
/// <summary> /// Manage graph scheduling and processing /// </summary> /// <param name="graph">Graph to be processed</param> public ProcessGraphProcessor(BaseGraph graph) : base(graph) { }