/// <summary> /// Adds a connection between a node's connector and another node. /// </summary> /// <param name='sourceConnector'> /// Source connector. /// </param> /// <param name='targetNode'> /// Target node. /// </param> public void AddConnection(UTNode.Connector sourceConnector, UTNode targetNode) { var sourceEntry = sourceConnector.owner.Data; var property = sourceConnector.property; var targetEntry = targetNode.Data; var sourceNode = sourceConnector.owner; CUUndoUtility.RegisterUndo(new UObject[] { sourceEntry, graphData }, "Add connector"); var reference = graphData.GetReference(sourceEntry, property); if (reference == null) { reference = new UTReference(); reference.Source = sourceEntry; reference.SourceProperty = property; graphData.AddReference(reference); } reference.Target = targetEntry; SetProperty(sourceEntry, property, targetEntry); sourceNode.Recalc(); EditorUtility.SetDirty(sourceEntry); EditorUtility.SetDirty(graphData); }
/// <summary> /// Deletes a reference from the graph. /// </summary> /// <param name='reference'> /// Reference to delete. /// </param> public void DeleteReference(UTReference reference) { if (references == null || !references.Contains(reference)) { throw new ArgumentException("Trying to delete non-existing reference."); } references.Remove(reference); }
/// <summary> /// Adds a reference to the graph. /// </summary> /// <param name='reference'> /// Reference to be added. /// </param> public void AddReference(UTReference reference) { if (references == null) { references = new List<UTReference>(); } references.Add(reference); }