public BlackboardProvider(string assetName, AbstractMaterialGraph graph) { m_AssetName = assetName; m_Graph = graph; m_ExposedIcon = Resources.Load("GraphView/Nodes/BlackboardFieldExposed") as Texture2D; m_PropertyRows = new Dictionary <Guid, BlackboardRow>(); blackboard = new Blackboard() { scrollable = true, title = assetName, editTextRequested = EditTextRequested, addItemRequested = AddItemRequested, moveItemRequested = MoveItemRequested }; m_WindowDraggable = new WindowDraggable(blackboard.shadow.Children().First().Q("header")); blackboard.AddManipulator(m_WindowDraggable); m_ResizeBorderFrame = new ResizeBorderFrame(blackboard) { name = "resizeBorderFrame" }; blackboard.shadow.Add(m_ResizeBorderFrame); m_Section = new BlackboardSection { headerVisible = false }; foreach (var property in graph.properties) { AddProperty(property); } blackboard.Add(m_Section); }
public MasterPreviewView(PreviewManager previewManager, GraphData graph) { cacheAsBitmap = true; style.overflow = Overflow.Hidden; m_PreviewManager = previewManager; m_Graph = graph; styleSheets.Add(Resources.Load <StyleSheet>("Styles/MasterPreviewView")); m_PreviewRenderHandle = previewManager.masterRenderData; if (m_PreviewRenderHandle != null) { m_PreviewRenderHandle.onPreviewChanged += OnPreviewChanged; } var topContainer = new VisualElement() { name = "top" }; { m_Title = new Label() { name = "title" }; m_Title.text = "Main Preview"; // Add preview collapse button on top of preview m_CollapsePreviewContainer = new VisualElement { name = "collapse-container" }; m_CollapsePreviewContainer.AddToClassList("collapse-container"); topContainer.Add(m_Title); topContainer.Add(m_CollapsePreviewContainer); } Add(topContainer); m_Preview = new VisualElement { name = "middle" }; { m_PreviewTextureView = CreatePreview(Texture2D.blackTexture); m_PreviewScrollPosition = new Vector2(0f, 0f); preview.Add(m_PreviewTextureView); preview.AddManipulator(new Scrollable(OnScroll)); } Add(preview); m_PreviewResizeBorderFrame = new ResizeBorderFrame(previewTextureView, this) { name = "resizeBorderFrame" }; m_PreviewResizeBorderFrame.maintainAspectRatio = true; Add(m_PreviewResizeBorderFrame); m_ExpandedPreviewSize = new Vector2(256f, 256f); m_RecalculateLayout = false; previewTextureView.RegisterCallback <GeometryChangedEvent>(OnGeometryChanged); }
public MasterPreviewView(PreviewManager previewManager, AbstractMaterialGraph graph) { this.clippingOptions = ClippingOptions.ClipAndCacheContents; m_PreviewManager = previewManager; m_Graph = graph; AddStyleSheetPath("Styles/MasterPreviewView"); m_PreviewRenderHandle = previewManager.masterRenderData; var topContainer = new VisualElement() { name = "top" }; { m_Title = new Label() { name = "title" }; m_Title.text = "Main Preview"; // Add preview collapse button on top of preview m_CollapsePreviewContainer = new VisualElement { name = "collapse-container" }; m_CollapsePreviewContainer.AddToClassList("collapse-container"); topContainer.Add(m_Title); topContainer.Add(m_CollapsePreviewContainer); } Add(topContainer); m_Preview = new VisualElement { name = "middle" }; { m_PreviewTextureView = CreatePreview(Texture2D.blackTexture); m_PreviewScrollPosition = new Vector2(0f, 0f); preview.Add(m_PreviewTextureView); preview.AddManipulator(new Scrollable(OnScroll)); } m_PreviewRenderHandle.onPreviewChanged += OnPreviewChanged; Add(preview); m_PreviewResizeBorderFrame = new ResizeBorderFrame(previewTextureView, this) { name = "resizeBorderFrame" }; m_PreviewResizeBorderFrame.maintainAspectRatio = true; Add(m_PreviewResizeBorderFrame); m_ExpandedPreviewSize = new Vector2(256f, 256f); m_RecalculateLayout = false; previewTextureView.RegisterCallback <GeometryChangedEvent>(OnGeometryChanged); }
public GraphEditorView(EditorWindow editorWindow, AbstractMaterialGraph graph, string assetName) { m_Graph = graph; AddStyleSheetPath("Styles/GraphEditorView"); m_EditorWindow = editorWindow; previewManager = new PreviewManager(graph); string serializedWindowLayout = EditorUserSettings.GetConfigValue(k_FloatingWindowsLayoutKey); if (!string.IsNullOrEmpty(serializedWindowLayout)) { m_FloatingWindowsLayout = JsonUtility.FromJson <FloatingWindowsLayout>(serializedWindowLayout); if (m_FloatingWindowsLayout.masterPreviewSize.x > 0f && m_FloatingWindowsLayout.masterPreviewSize.y > 0f) { previewManager.ResizeMasterPreview(m_FloatingWindowsLayout.masterPreviewSize); } } previewManager.RenderPreviews(); var toolbar = new IMGUIContainer(() => { GUILayout.BeginHorizontal(EditorStyles.toolbar); if (GUILayout.Button("Save Asset", EditorStyles.toolbarButton)) { if (saveRequested != null) { saveRequested(); } } GUILayout.Space(6); if (GUILayout.Button("Show In Project", EditorStyles.toolbarButton)) { if (showInProjectRequested != null) { showInProjectRequested(); } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); }); Add(toolbar); var content = new VisualElement { name = "content" }; { m_GraphView = new MaterialGraphView(graph) { name = "GraphView", persistenceKey = "MaterialGraphView" }; m_GraphView.SetupZoom(0.05f, ContentZoomer.DefaultMaxScale); m_GraphView.AddManipulator(new ContentDragger()); m_GraphView.AddManipulator(new SelectionDragger()); m_GraphView.AddManipulator(new RectangleSelector()); m_GraphView.AddManipulator(new ClickSelector()); m_GraphView.AddManipulator(new GraphDropTarget(graph)); m_GraphView.RegisterCallback <KeyDownEvent>(OnSpaceDown); content.Add(m_GraphView); // Uncomment to enable pixel caching profiler // m_ProfilerView = new PixelCacheProfilerView(this); // m_GraphView.Add(m_ProfilerView); m_BlackboardProvider = new BlackboardProvider(assetName, graph); m_GraphView.Add(m_BlackboardProvider.blackboard); m_BlackboardProvider.blackboard.layout = new Rect(new Vector2(10f, 10f), m_BlackboardProvider.blackboard.layout.size); m_MasterPreviewView = new MasterPreviewView(assetName, previewManager, graph) { name = "masterPreview" }; WindowDraggable masterPreviewViewDraggable = new WindowDraggable(); m_MasterPreviewView.AddManipulator(masterPreviewViewDraggable); m_GraphView.Add(m_MasterPreviewView); ResizeBorderFrame masterPreviewResizeBorderFrame = new ResizeBorderFrame(m_MasterPreviewView) { name = "resizeBorderFrame" }; masterPreviewResizeBorderFrame.stayWithinParentBounds = true; masterPreviewResizeBorderFrame.maintainAspectRatio = true; masterPreviewResizeBorderFrame.OnResizeFinished += UpdateSerializedWindowLayout; m_MasterPreviewView.Add(masterPreviewResizeBorderFrame); m_BlackboardProvider.onDragFinished += UpdateSerializedWindowLayout; m_BlackboardProvider.onResizeFinished += UpdateSerializedWindowLayout; masterPreviewViewDraggable.OnDragFinished += UpdateSerializedWindowLayout; masterPreviewResizeBorderFrame.OnResizeFinished += UpdateSerializedWindowLayout; m_GraphView.graphViewChanged = GraphViewChanged; RegisterCallback <PostLayoutEvent>(ApplySerializewindowLayouts); } m_SearchWindowProvider = ScriptableObject.CreateInstance <SearchWindowProvider>(); m_SearchWindowProvider.Initialize(editorWindow, m_Graph, m_GraphView); m_GraphView.nodeCreationRequest = (c) => { m_SearchWindowProvider.connectedPort = null; SearchWindow.Open(new SearchWindowContext(c.screenMousePosition), m_SearchWindowProvider); }; m_EdgeConnectorListener = new EdgeConnectorListener(m_Graph, m_SearchWindowProvider); foreach (var node in graph.GetNodes <INode>()) { AddNode(node); } foreach (var edge in graph.edges) { AddEdge(edge); } Add(content); }
public GraphEditorView(EditorWindow editorWindow, AbstractMaterialGraph graph, string assetName) { m_Graph = graph; AddStyleSheetPath("Styles/MaterialGraph"); m_EditorWindow = editorWindow; previewManager = new PreviewManager(graph); var content = new VisualElement { name = "content" }; { m_GraphView = new MaterialGraphView(graph) { name = "GraphView", persistenceKey = "MaterialGraphView" }; m_GraphView.SetupZoom(ContentZoomer.DefaultMinScale, ContentZoomer.DefaultMaxScale); m_GraphView.AddManipulator(new ContentDragger()); m_GraphView.AddManipulator(new SelectionDragger()); m_GraphView.AddManipulator(new RectangleSelector()); m_GraphView.AddManipulator(new ClickSelector()); m_GraphView.AddManipulator(new GraphDropTarget(graph)); content.Add(m_GraphView); m_GraphInspectorView = new GraphInspectorView(assetName, previewManager, graph) { name = "inspector" }; m_GraphView.RegisterCallback <KeyDownEvent>(OnSpaceDown); m_GraphView.Add(m_GraphInspectorView); m_MasterPreviewView = new MasterPreviewView(assetName, previewManager, graph) { name = "masterPreview" }; WindowDraggable masterPreviewViewDraggable = new WindowDraggable(); masterPreviewViewDraggable.OnDragFinished += UpdateSerializedWindowLayout; m_MasterPreviewView.AddManipulator(masterPreviewViewDraggable); m_GraphView.Add(m_MasterPreviewView); ResizeBorderFrame masterPreviewResizeBorderFrame = new ResizeBorderFrame(m_MasterPreviewView) { name = "resizeBorderFrame" }; masterPreviewResizeBorderFrame.OnResizeFinished += UpdateSerializedWindowLayout; m_MasterPreviewView.Add(masterPreviewResizeBorderFrame); m_GraphView.graphViewChanged = GraphViewChanged; m_FloatingWindowsLayoutKey = "UnityEditor.ShaderGraph.FloatingWindowsLayout"; string serializedWindowLayout = EditorUserSettings.GetConfigValue(m_FloatingWindowsLayoutKey); if (!String.IsNullOrEmpty(serializedWindowLayout)) { m_FLoatingWindowsLayout = JsonUtility.FromJson <FloatingWindowsLayout>(serializedWindowLayout); m_GraphInspectorView.layout = m_FLoatingWindowsLayout.inspectorLayout; m_MasterPreviewView.layout = m_FLoatingWindowsLayout.previewLayout; } else { m_FLoatingWindowsLayout = new FloatingWindowsLayout(); } } m_SearchWindowProvider = ScriptableObject.CreateInstance <SearchWindowProvider>(); m_SearchWindowProvider.Initialize(editorWindow, m_Graph, m_GraphView); m_GraphView.nodeCreationRequest = (c) => { m_SearchWindowProvider.connectedPort = null; SearchWindow.Open(new SearchWindowContext(c.screenMousePosition), m_SearchWindowProvider); }; m_EdgeConnectorListener = new EdgeConnectorListener(m_Graph, m_SearchWindowProvider); foreach (var node in graph.GetNodes <INode>()) { AddNode(node); } foreach (var edge in graph.edges) { AddEdge(edge); } Add(content); }