Example #1
0
        protected void OnEndConnection(RoomNode roomNode, Event e)
        {
            if (connectionFrom == null)
            {
                return;
            }

            var from = connectionFrom;
            var to   = roomNode;

            var connection = CreateInstance <Connection>();

            connection.From = connectionFrom.Data;
            connection.To   = roomNode.Data;

            if (from != to && !connectionNodes.Any(x => (x.From == @from && x.To == to) || (x.To == @from && x.From == to)))
            {
                Data.Connections.Add(connection);
                AssetDatabase.AddObjectToAsset(connection, Data);

                CreateConnection(connection, @from, to);
            }

            connectionFrom     = null;
            connectionProgress = null;
            GUI.changed        = true;
        }
Example #2
0
        public override void OnGUI()
        {
            var e           = Event.current;
            var modeChanged = false;

            if (e.control && editorMode == EditorMode.Drag)
            {
                editorMode  = EditorMode.MakeConnections;
                modeChanged = true;
            }
            else if (!e.control && editorMode == EditorMode.MakeConnections)
            {
                modeChanged = true;
                editorMode  = EditorMode.Drag;
            }

            if (modeChanged)
            {
                connectionProgress            = null;
                connectionFrom                = null;
                roomNodes.ForEach(x => x.Mode = editorMode);
            }

            base.OnGUI();

            DrawMenuBar();
        }
Example #3
0
        protected ConnectionNode CreateConnection(Connection data, RoomNode from, RoomNode to)
        {
            var node = new ConnectionNode(data, from, to, connectionHandleStyle, 12);

            node.OnDelete += () => OnDeleteConnectionNode(node);
            connectionNodes.Add(node);

            return(node);
        }
Example #4
0
 protected void OnStartConnection(RoomNode roomNode, Event e)
 {
     if (connectionFrom == null)
     {
         connectionFrom          = roomNode;
         connectionProgress      = new ConnectionProgressNode();
         connectionProgress.From = roomNode.Rect.center;
     }
 }
Example #5
0
        protected RoomNode CreateNode(Room data)
        {
            var node = new RoomNode(data, 40, 40, roomNodeStyle, editorMode);

            node.OnDelete          += () => OnDeleteRoomNode(node);
            node.OnStartConnection += (e) => OnStartConnection(node, e);
            node.OnEndConnection   += (e) => OnEndConnection(node, e);
            roomNodes.Add(node);

            return(node);
        }
Example #6
0
        private void OnDeleteRoomNode(RoomNode node)
        {
            Data.Rooms.Remove(node.Data);
            DestroyImmediate(node.Data, true);
            roomNodes.Remove(node);

            var connectionsToRemove = new List <ConnectionNode>();

            foreach (var connectionNode in connectionNodes)
            {
                if (connectionNode.From == node || connectionNode.To == node)
                {
                    connectionsToRemove.Add(connectionNode);
                }
            }

            foreach (var connectionNode in connectionsToRemove)
            {
                OnDeleteConnectionNode(connectionNode);
            }
        }
Example #7
0
        public void Initialize()
        {
            SetupStyles();

            var roomToRoomNodes = new Dictionary <Room, RoomNode>();

            roomNodes = new List <RoomNode>();
            foreach (var data in Data.Rooms)
            {
                var roomNode = CreateNode(data);
                roomToRoomNodes.Add(data, roomNode);
            }

            connectionNodes = new List <ConnectionNode>();
            foreach (var data in Data.Connections)
            {
                CreateConnection(data, roomToRoomNodes[data.From], roomToRoomNodes[data.To]);
            }

            editorMode         = EditorMode.Drag;
            connectionFrom     = null;
            connectionProgress = null;
            StaticData         = Data;
        }