예제 #1
0
        private void ResizableInputBlock(
            List <Connection> connections, ConnectionPointDirection direction)
        {
            int size = EditorGUILayout.DelayedIntField(
                connections.Count - 1, GUILayout.MaxWidth(30));

            if (size != connections.Count - 1)
            {
                int newSize = connections.Count - 1;
                while (size > newSize)
                {
                    Connection newConn = CreateNewConnection(ConnectionType.Int);
                    CheckForDuplicateNameInConnections(newConn, connections);
                    entityData.AddNewConnectionPoint(newConn, direction);
                    ++newSize;
                }

                bool confirmed = false;
                while (size < newSize)
                {
                    Connection remove = connections[newSize--];
                    DeleteInput(remove, ref confirmed);
                }
            }
        }
        public ConnectionPoint(GraphEntity node,
                               ConnectionPointDirection direction, Connection connection)
        {
            if (nodeGraph == null)
            {
                throw new System.Exception("ConnectionPoint.nodeGraph MUST be set!");
            }
            if (connection == null)
            {
                throw new System.Exception("Connection may not be null");
            }

            nodeWindow          = node;
            connectionDirection = direction;

            data = ConnectionPointData.GetControlPointData(connection.type);

            currentStyle = data.connectionPointStyle.unconnectedStyle;

            rect = new Rect(0, 0,
                            currentStyle.normal.background.width,
                            currentStyle.normal.background.height);

            GUID            = connection.GUID;
            this.connection = connection;

            nodeGraph.RefreshConnectionPoint(this);
        }
예제 #3
0
 public override void RemoveConnectionPoint(Connection connection, ConnectionPointDirection direction)
 {
     if (direction == ConnectionPointDirection.In)
     {
         inputConnections.Remove(connection);
     }
     else
     {
         outputConnections.Remove(connection);
     }
     window.RemoveConnectionPoint(connection, direction);
 }
예제 #4
0
 public override void AddNewConnectionPoint(Connection newConn, ConnectionPointDirection direction)
 {
     if (direction == ConnectionPointDirection.In)
     {
         inputConnections.Add(newConn);
     }
     else
     {
         outputConnections.Add(newConn);
     }
     window.AddNewConnectionPoint(newConn, direction);
 }
예제 #5
0
        public override void AddNewConnectionPoint(Connection newConn, ConnectionPointDirection direction)
        {
            ConnectionPoint newConnPoint = new ConnectionPoint(this, direction, newConn);

            if (direction == ConnectionPointDirection.In)
            {
                inConnectionPoints.Add(newConnPoint);
            }
            else
            {
                outConnectionPoints.Add(newConnPoint);
            }
        }
        private void CreateNewConnectionPointContextMenu(GraphEntityData graphEntity, ConnectionPoint connectedTo)
        {
            ConnectionPointDirection direction = connectedTo.connectionDirection == ConnectionPointDirection.In ?
                                                 ConnectionPointDirection.Out : ConnectionPointDirection.In;
            string msg = "Add new "
                         + (direction == ConnectionPointDirection.In ?
                            "Input" : "Output") + " Connection Point of type "
                         + connectedTo.connection.type + "?";

            var genericMenu = new GenericMenu();

            genericMenu.AddItem(new GUIContent(msg), false,
                                () => CreateNewConnectionPointFromConnection(graphEntity, connectedTo, direction));
            genericMenu.ShowAsContext();
        }
예제 #7
0
 public override void RemoveConnectionPoint(Connection conn, ConnectionPointDirection direction)
 {
     if (direction == ConnectionPointDirection.In)
     {
         ConnectionPoint del = null;
         for (int i = 0; i < inConnectionPoints.Count; ++i)
         {
             if (inConnectionPoints[i].GUID == conn.GUID)
             {
                 del = inConnectionPoints[i];
                 break;
             }
         }
         if (del == null)
         {
             Debug.LogError("Connection was not found trying to remove " + conn.GUID);
         }
         else
         {
             inConnectionPoints.Remove(del);
         }
     }
     else
     {
         ConnectionPoint del = null;
         for (int i = 0; i < outConnectionPoints.Count; ++i)
         {
             if (outConnectionPoints[i].GUID == conn.GUID)
             {
                 del = outConnectionPoints[i];
                 break;
             }
         }
         if (del == null)
         {
             Debug.LogError("Connection was not found trying to remove " + conn.GUID);
         }
         else
         {
             outConnectionPoints.Remove(del);
         }
     }
 }
예제 #8
0
 public override List <Connection> GetConnections(ConnectionPointDirection direction)
 {
     return(connections);
 }
예제 #9
0
 /// <summary>
 /// If this is input/entrance/start node, direction == ConnectionPointDirection.Out.
 /// If this is output/exit/end node, direction == ConnectionPointDirection.In.
 /// </summary>
 /// <param name="newConn"></param>
 /// <param name="direction"></param>
 public override void RemoveConnectionPoint(Connection connection, ConnectionPointDirection direction)
 {
     connections.Remove(connection);
     window.RemoveConnectionPoint(connection, direction);
 }
예제 #10
0
 /// <summary>
 /// If this is input/entrance/start node, direction == ConnectionPointDirection.Out.
 /// If this is output/exit/end node, direction == ConnectionPointDirection.In.
 /// </summary>
 /// <param name="newConn"></param>
 /// <param name="direction"></param>
 public override void AddNewConnectionPoint(Connection newConn, ConnectionPointDirection direction)
 {
     connections.Add(newConn);
     window.AddNewConnectionPoint(newConn, direction);
 }
예제 #11
0
 public override void AddNewConnectionPoint(Connection newConn, ConnectionPointDirection direction)
 {
     connectionPoints.Add(new ConnectionPoint(this, direction, newConn));
 }
        private void CreateNewConnectionPointFromConnection(GraphEntityData graphEntity, ConnectionPoint connectedTo, ConnectionPointDirection direction)
        {
            Connection newConn = new Connection()
            {
                type         = connectedTo.connection.type,
                GUID         = System.Guid.NewGuid().ToString(),
                variableName = connectedTo.connection.variableName,
            };

            ScenimaticBranchEditor.CheckForDuplicateNameInConnections(newConn, graphEntity.GetConnections(direction));
            graphEntity.AddNewConnectionPoint(newConn, direction);

            if (!connectedTo.AllowsMultipleConnections())
            {
                connectedTo.RemoveAllConnections();
            }

            newConn.connectedToGUIDs.Add(connectedTo.GUID);
            connectedTo.connection.connectedToGUIDs.Add(newConn.GUID);

            RefreshConnectionPoint(connectedTo);
        }
 public override List <Connection> GetConnections(ConnectionPointDirection direction)
 {
     return(direction == ConnectionPointDirection.In ?
            inputConnections : outputConnections);
 }
 public abstract void RemoveConnectionPoint(Connection conn, ConnectionPointDirection direction);
 public abstract void AddNewConnectionPoint(Connection newConn, ConnectionPointDirection direction);
 public abstract List <Connection> GetConnections(ConnectionPointDirection direction);