Example #1
0
    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);
    }
Example #2
0
    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);
    }
Example #3
0
 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
             });
         }
     }
 }
Example #4
0
    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;
            }
        }
    }
Example #5
0
 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);
     }
 }
Example #6
0
 /// <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);
 }