protected void OnEndConnection(RoomNode roomNode, Event e) { if (connectionFrom == null) { return; } var from = connectionFrom; var to = roomNode; // TODO: how to handle this properly? var connection = (Connection)CreateInstance(Data.ConnectionType); 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; }
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(); }
protected void OnStartConnection(RoomNode roomNode, Event e) { if (connectionFrom == null) { connectionFrom = roomNode; connectionProgress = new ConnectionProgressNode(); connectionProgress.From = roomNode.Rect.center; } }
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; }