public NodePortGfx Setup(NodeGfx master, AdapterGroup adapterGroup, AdapterGroup.AdapterConnection connection, int value) { myMaster = master; myAdapterGroup = adapterGroup; myConnection = connection; myRend = GetComponentInChildren <UILineRenderer>(); ConnectionInProgressShowObject.SetActive(false); myRend.enabled = false; pathActive = false; myRend.Points = new Vector2[resolution + 1]; if (myAdapterGroup.type >= 0 && myAdapterGroup.type < myMaster.myViewer.PortColors.Length) { colorChangeImage.color = myMaster.myViewer.PortColors[myAdapterGroup.type]; myRend.color = myMaster.myViewer.lineColors[myAdapterGroup.type]; } else { colorChangeImage.color = Color.white; myRend.color = Color.white; } if (myRegion) { myRegion.SetUp( ValueRegion.type.port, adapterGroup.myType == AdapterGroup.AdapterType.counted, adapterGroup.isLeftAdapter ? "Ingredient" : "Result", null, this, value); } return(this); }
public void RemoveConnection(AdapterGroup sourceAdapterGroup, AdapterGroup.AdapterConnection sourceConnection) { // TODO: Add functionality to disconnect nodes from different recipe sets var sourceNode = GetNodeWithId(sourceAdapterGroup.parentNodeId); var otherNode = GetNodeWithId(sourceConnection.nodeId); AdapterGroup otherAdapterGroup = null; foreach (var adapterGroup in otherNode.myAdapters) { if (CanConnectAdapters(sourceAdapterGroup, adapterGroup)) { otherAdapterGroup = adapterGroup; break; } } AdapterGroup.AdapterConnection otherConnection = null; foreach (var connection in otherAdapterGroup.connections) { if (connection.nodeId == sourceNode.id) { otherConnection = connection; break; } } sourceAdapterGroup.connections.Remove(sourceConnection); otherAdapterGroup.connections.Remove(otherConnection); }
public static void AttachAdapters(AdapterGroup incomingAdapter, AdapterGroup targetAdapter) { // We want to only connect adapters on the opposite sides if (incomingAdapter.isLeftAdapter == !targetAdapter.isLeftAdapter) { if (incomingAdapter.type == targetAdapter.type) { incomingAdapter.connections.Add(new AdapterGroup.AdapterConnection() { count = 1, nodeId = targetAdapter.parentNodeId }); targetAdapter.connections.Add(new AdapterGroup.AdapterConnection() { count = 1, nodeId = incomingAdapter.parentNodeId }); } } }
public static void DetachAdapters(AdapterGroup incomingAdapter, AdapterGroup targetAdapter) { for (int i = 0; i < incomingAdapter.connections.Count; i++) { if (incomingAdapter.connections[i].nodeId == targetAdapter.parentNodeId) { incomingAdapter.connections.RemoveAt(i); break; } } for (int i = 0; i < targetAdapter.connections.Count; i++) { if (targetAdapter.connections[i].nodeId == incomingAdapter.parentNodeId) { targetAdapter.connections.RemoveAt(i); break; } } }
public static bool ConnectAdapters(AdapterGroup group1, AdapterGroup group2) { // Only connect left to right and only connect same types if (CanConnectAdapters(group1, group2)) { group1.connections.Add( new AdapterGroup.AdapterConnection() { count = 1, nodeId = group2.parentNodeId, recipeSetName = group2.recipeSetName } ); group2.connections.Add( new AdapterGroup.AdapterConnection() { count = 1, nodeId = group1.parentNodeId, recipeSetName = group1.recipeSetName } ); return(true); } else { return(false); } }
/// <summary> /// Returns whether two adapter groups can be connected /// </summary> /// <returns></returns> public static bool CanConnectAdapters(AdapterGroup group1, AdapterGroup group2) { return(group1.isLeftAdapter != group2.isLeftAdapter && group1.type == group2.type); }