public void Initialize(string guid) { try { _selectedGuid = guid; var asset = AssetDatabase.LoadAssetAtPath <Object>(AssetDatabase.GUIDToAssetPath(guid)); var path = AssetDatabase.GetAssetPath(asset); var textGraph = File.ReadAllText(path, Encoding.UTF8); _logicGraphEditorObject = CreateInstance <LogicGraphEditorObject>(); LogicGraphData logicGraphData = JsonUtility.FromJson <LogicGraphData>(textGraph); _logicGraphEditorObject.Initialize(logicGraphData); LogicGraphEditorView = new LogicGraphEditorView(this, _logicGraphEditorObject); LogicGraphEditorView.RegisterCallback <GeometryChangedEvent>(OnPostLayout); titleContent = new GUIContent(_logicGraphEditorObject.name); Repaint(); } catch (Exception) { _graphEditorView = null; _logicGraphEditorObject = null; throw; } }
public LogicGraphEditorView(LogicGraphEditorWindow editorWindow, LogicGraphEditorObject logicGraphEditorObject) { Debug.Log(logicGraphEditorObject.GetInstanceID()); _editorWindow = editorWindow; _logicGraphEditorObject = logicGraphEditorObject; _logicGraphEditorObject.Deserialized += LogicGraphEditorDataOnDeserialized; this.LoadAndAddStyleSheet("Styles/LogicGraphEditorView"); var toolbar = new IMGUIContainer(() => { GUILayout.BeginHorizontal(EditorStyles.toolbar); if (GUILayout.Button("Save Asset", EditorStyles.toolbarButton)) { saveRequested?.Invoke(); } GUILayout.Space(6); if (GUILayout.Button("Show In Project", EditorStyles.toolbarButton)) { showInProjectRequested?.Invoke(); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); }); Add(toolbar); var content = new VisualElement { name = "content" }; { _graphView = new LogicGraphView(_logicGraphEditorObject) { name = "GraphView", // persistenceKey = "LogicGraphView", }; _graphView.SetupZoom(0.05f, ContentZoomer.DefaultMaxScale); _graphView.AddManipulator(new ContentDragger()); _graphView.AddManipulator(new SelectionDragger()); _graphView.AddManipulator(new RectangleSelector()); _graphView.AddManipulator(new ClickSelector()); _graphView.RegisterCallback <KeyDownEvent>(KeyDown); content.Add(_graphView); _graphView.graphViewChanged = GraphViewChanged; } _searchWindowProvider = ScriptableObject.CreateInstance <SearchWindowProvider>(); _searchWindowProvider.Initialize(editorWindow, this, _graphView); _edgeConnectorListener = new EdgeConnectorListener(this, _searchWindowProvider); _graphView.nodeCreationRequest = (c) => { _searchWindowProvider.ConnectedLogicPort = null; SearchWindow.Open(new SearchWindowContext(c.screenMousePosition), _searchWindowProvider); }; LoadElements(); Add(content); }
public LogicGraphView(LogicGraphEditorObject logicGraphEditorObject) : this() { LogicGraphEditorObject = logicGraphEditorObject; }