public MasterPreviewView(string assetName, PreviewManager previewManager, AbstractMaterialGraph graph) { m_Graph = graph; AddStyleSheetPath("Styles/MaterialGraph"); m_PreviewRenderHandle = previewManager.masterRenderData; m_PreviewRenderHandle.onPreviewChanged += OnPreviewChanged; var topContainer = new VisualElement() { name = "top" }; { var title = new Label(assetName + " master node preview") { name = "title" }; topContainer.Add(title); } Add(topContainer); var middleContainer = new VisualElement { name = "middle" }; { m_PreviewTextureView = new PreviewTextureView { name = "preview", image = Texture2D.blackTexture }; m_PreviewTextureView.AddManipulator(new Draggable(OnMouseDragPreviwMesh, true)); middleContainer.Add(m_PreviewTextureView); m_PreviewScrollPosition = new Vector2(0f, 0f); middleContainer.Add(m_PreviewTextureView); } Add(middleContainer); var bottomContainer = new VisualElement() { name = "bottom" }; { m_PreviewMeshPicker = new ObjectField { name = "picker", objectType = typeof(Mesh) }; m_PreviewMeshPicker.OnValueChanged(OnPreviewMeshChanged); bottomContainer.Add(m_PreviewMeshPicker); } Add(bottomContainer); }
public MasterPreviewView(string assetName, PreviewManager previewManager, AbstractMaterialGraph graph) { this.clippingOptions = ClippingOptions.ClipAndCacheContents; m_Graph = graph; AddStyleSheetPath("Styles/MasterPreviewView"); m_PreviewRenderHandle = previewManager.masterRenderData; m_PreviewRenderHandle.onPreviewChanged += OnPreviewChanged; var topContainer = new VisualElement() { name = "top" }; { var title = new Label(assetName.Split('/').Last()) { name = "title" }; topContainer.Add(title); } Add(topContainer); var middleContainer = new VisualElement { name = "middle" }; { m_PreviewTextureView = new PreviewTextureView { name = "preview", image = Texture2D.blackTexture }; m_PreviewTextureView.AddManipulator(new Draggable(OnMouseDragPreviewMesh, true)); m_PreviewTextureView.AddManipulator((IManipulator)Activator.CreateInstance(s_ContextualMenuManipulator, (Action <ContextualMenuPopulateEvent>)BuildContextualMenu)); middleContainer.Add(m_PreviewTextureView); m_PreviewScrollPosition = new Vector2(0f, 0f); middleContainer.Add(m_PreviewTextureView); middleContainer.AddManipulator(new Scrollable(OnScroll)); } Add(middleContainer); }
public void Initialize(AbstractMaterialNode inNode, PreviewManager previewManager, IEdgeConnectorListener connectorListener) { AddToClassList("MaterialNode"); if (inNode == null) { return; } m_ConnectorListener = connectorListener; node = inNode; persistenceKey = node.guid.ToString(); UpdateTitle(); m_ControlsContainer = new VisualElement { name = "controls" }; extensionContainer.Add(m_ControlsContainer); m_ControlsDivider = new VisualElement { name = "divider" }; m_ControlsDivider.AddToClassList("horizontal"); if (node.hasPreview) { m_PreviewContainer = new VisualElement { name = "previewContainer" }; m_PreviewContainer.AddToClassList("expanded"); { m_PreviewTextureView = new PreviewTextureView { name = "preview", pickingMode = PickingMode.Ignore, image = Texture2D.whiteTexture }; m_PreviewRenderData = previewManager.GetPreview(inNode); m_PreviewRenderData.onPreviewChanged += UpdatePreviewTexture; UpdatePreviewTexture(); var collapsePreviewButton = new VisualElement { name = "collapse" }; collapsePreviewButton.Add(new VisualElement { name = "icon" }); collapsePreviewButton.AddManipulator(new Clickable(() => { node.owner.owner.RegisterCompleteObjectUndo("Collapse Preview"); UpdatePreviewExpandedState(false); })); UpdatePreviewExpandedState(node.previewExpanded); m_PreviewTextureView.Add(collapsePreviewButton); var expandPreviewButton = new VisualElement { name = "expand" }; expandPreviewButton.Add(new VisualElement { name = "icon" }); expandPreviewButton.AddManipulator(new Clickable(() => { node.owner.owner.RegisterCompleteObjectUndo("Expand Preview"); UpdatePreviewExpandedState(true); })); m_PreviewContainer.Add(expandPreviewButton); } extensionContainer.Add(m_PreviewContainer); } m_ControlViews = new List <VisualElement>(); foreach (var propertyInfo in node.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)) { foreach (IControlAttribute attribute in propertyInfo.GetCustomAttributes(typeof(IControlAttribute), false)) { m_ControlViews.Add(attribute.InstantiateControl(node, propertyInfo)); } } m_Attachers = new List <Attacher>(node.GetInputSlots <MaterialSlot>().Count()); AddSlots(node.GetSlots <MaterialSlot>()); UpdateSlotAttachers(); base.expanded = node.drawState.expanded; RefreshExpandedState(); //This should not be needed. GraphView needs to improve the extension api here UpdatePortInputVisibilities(); SetPosition(new Rect(node.drawState.position.x, node.drawState.position.y, 0, 0)); UpdateControls(); if (node is PreviewNode) { var resizeHandle = new Label { name = "resize", text = "" }; resizeHandle.AddManipulator(new Draggable(OnResize)); Add(resizeHandle); UpdateSize(); } }
public GraphInspectorView(string assetName, PreviewManager previewManager, AbstractMaterialGraph graph) { m_Graph = graph; AddStyleSheetPath("Styles/MaterialGraph"); var topContainer = new VisualElement { name = "top" }; { var headerContainer = new VisualElement { name = "header" }; { var title = new Label(assetName) { name = "title" }; title.AddManipulator(new Clickable(() => { if (onShowInProjectClick != null) { onShowInProjectClick(); } })); headerContainer.Add(title); headerContainer.Add(new Button(() => { if (onUpdateAssetClick != null) { onUpdateAssetClick(); } }) { name = "save", text = "Save" }); } topContainer.Add(headerContainer); var propertiesContainer = new VisualElement { name = "properties" }; { var header = new VisualElement { name = "header" }; { var title = new Label("Properties") { name = "title" }; header.Add(title); var addPropertyButton = new Button(OnAddProperty) { text = "Add", name = "addButton" }; header.Add(addPropertyButton); } propertiesContainer.Add(header); m_PropertyItems = new VisualContainer { name = "items" }; propertiesContainer.Add(m_PropertyItems); } topContainer.Add(propertiesContainer); } Add(topContainer); var bottomContainer = new VisualElement { name = "bottom" }; { m_PreviewTextureView = new PreviewTextureView { name = "preview", image = Texture2D.blackTexture }; m_PreviewTextureView.AddManipulator(new Draggable(OnMouseDrag, true)); bottomContainer.Add(m_PreviewTextureView); m_PreviewScrollPosition = new Vector2(0f, 0f); m_PreviewMeshPicker = new ObjectField { objectType = typeof(Mesh) }; m_PreviewMeshPicker.OnValueChanged(OnPreviewMeshChanged); bottomContainer.Add(m_PreviewMeshPicker); } Add(bottomContainer); m_PreviewRenderHandle = previewManager.masterRenderData; m_PreviewRenderHandle.onPreviewChanged += OnPreviewChanged; m_PreviewMeshPicker.SetValueAndNotify(m_Graph.previewData.serializedMesh.mesh); foreach (var property in m_Graph.properties) { m_PropertyItems.Add(new ShaderPropertyView(m_Graph, property)); } Add(new ResizeSideHandle(this, ResizeHandleAnchor.TopLeft, new string[] { "resize", "diagonal", "top-left" })); Add(new ResizeSideHandle(this, ResizeHandleAnchor.Top, new string[] { "resize", "vertical", "top" })); Add(new ResizeSideHandle(this, ResizeHandleAnchor.TopRight, new string[] { "resize", "diagonal", "top-right" })); Add(new ResizeSideHandle(this, ResizeHandleAnchor.Right, new string[] { "resize", "horizontal", "right" })); Add(new ResizeSideHandle(this, ResizeHandleAnchor.BottomRight, new string[] { "resize", "diagonal", "bottom-right" })); Add(new ResizeSideHandle(this, ResizeHandleAnchor.Bottom, new string[] { "resize", "vertical", "bottom" })); Add(new ResizeSideHandle(this, ResizeHandleAnchor.BottomLeft, new string[] { "resize", "diagonal", "bottom-left" })); Add(new ResizeSideHandle(this, ResizeHandleAnchor.Left, new string[] { "resize", "horizontal", "left" })); }