Beispiel #1
0
        public void DisconnectSocket(Socket socket, bool recordUndo, bool saveAssets = false)
        {
            if (!socket.IsConnected)
            {
                return;
            }

            if (recordUndo)
            {
                RecordUndo(GraphAction.Disconnect.ToString());
            }
            List <string> socketConnectionIds = socket.GetConnectionIds();

            foreach (string connectionId in socketConnectionIds)
            {
                if (!ConnectionsDatabase.ContainsKey(connectionId))
                {
                    continue;
                }
                VirtualConnection vc = ConnectionsDatabase[connectionId];
                vc.OutputSocket.RemoveConnection(connectionId);
                vc.InputSocket.RemoveConnection(connectionId);
                EditorUtility.SetDirty(vc.OutputNode);
                EditorUtility.SetDirty(vc.InputNode);
                ConnectionsDatabase.Remove(connectionId);
            }

            CurrentGraph.SetDirty(saveAssets);
            GraphEvent.Send(GraphEvent.EventType.EVENT_NODE_DISCONNECTED, socket.NodeId);
        }
Beispiel #2
0
        private void DisconnectVirtualPoint(VirtualPoint virtualPoint, bool recordUndo, bool saveAssets = false)
        {
            if (!virtualPoint.Socket.IsConnected)
            {
                return;
            }
            if (!virtualPoint.IsConnected)
            {
                return;
            }

            if (recordUndo)
            {
                RecordUndo(GraphAction.Disconnect.ToString());
            }

            var connections = new List <VirtualConnection>();

            foreach (VirtualConnection connection in ConnectionsDatabase.Values)
            {
                if (connection.InputVirtualPoint == virtualPoint || connection.OutputVirtualPoint == virtualPoint)
                {
                    connections.Add(connection);
                }
            }

            foreach (VirtualConnection vc in connections)
            {
                vc.OutputSocket.RemoveConnection(vc.ConnectionId);
                vc.InputSocket.RemoveConnection(vc.ConnectionId);
                EditorUtility.SetDirty(vc.OutputNode);
                EditorUtility.SetDirty(vc.InputNode);
                ConnectionsDatabase.Remove(vc.ConnectionId);
            }

            CurrentGraph.SetDirty(saveAssets);
            GraphEvent.Send(GraphEvent.EventType.EVENT_CONNECTION_DELETED);
        }