internal BlackboardCategoryController(CategoryData categoryData, BlackboardCategoryViewModel categoryViewModel, GraphDataStore dataStore)
            : base(categoryData, categoryViewModel, dataStore)
        {
            m_BlackboardCategoryView = new SGBlackboardCategory(categoryViewModel, this);
            blackboard = categoryViewModel.parentView as SGBlackboard;
            if (blackboard == null)
            {
                return;
            }

            blackboard.Add(m_BlackboardCategoryView);
            // These make sure that the drag indicators are disabled whenever a drag action is cancelled without completing a drop
            blackboard.RegisterCallback <MouseUpEvent>(evt =>
            {
                m_BlackboardCategoryView.OnDragActionCanceled();
            });
            blackboard.hideDragIndicatorAction += m_BlackboardCategoryView.OnDragActionCanceled;

            foreach (var categoryItem in categoryData.Children)
            {
                if (categoryItem == null)
                {
                    AssertHelpers.Fail("Failed to insert blackboard row into category due to shader input being null.");
                    continue;
                }
                InsertBlackboardRow(categoryItem);
            }
        }
        internal BlackboardSectionController(GraphData graphData, BlackboardSectionViewModel sectionViewModel, GraphDataStore dataStore)
            : base(graphData, sectionViewModel, dataStore)
        {
            m_BlackboardSectionView = new SGBlackboardSection(sectionViewModel);

            blackboard = sectionViewModel.parentView as SGBlackboard;
            if (blackboard == null)
            {
                return;
            }

            blackboard.Add(m_BlackboardSectionView);
            // These make sure that the drag indicators are disabled whenever a drag action is cancelled without completing a drop
            blackboard.RegisterCallback <MouseUpEvent>(evt =>
            {
                m_BlackboardSectionView.OnDragActionCanceled();
            });
            blackboard.hideDragIndicatorAction += m_BlackboardSectionView.OnDragActionCanceled;

            // Go through categories in Data Store
            foreach (var categoryData in graphData.categories)
            {
                // If category can be found with matching guid for this section
                // And that category contains this input
                if (categoryData.categoryGuid == ViewModel.associatedCategoryGuid)
                {
                    m_CategoryDataReference = categoryData;
                    break;
                }
            }

            foreach (var shaderInput in graphData.properties)
            {
                if (IsInputInSection(shaderInput))
                {
                    InsertBlackboardRow(shaderInput);
                }
            }

            foreach (var shaderInput in graphData.keywords)
            {
                if (IsInputInSection(shaderInput))
                {
                    InsertBlackboardRow(shaderInput);
                }
            }

            foreach (var shaderInput in graphData.dropdowns)
            {
                if (IsInputInSection(shaderInput))
                {
                    InsertBlackboardRow(shaderInput);
                }
            }
        }
Пример #3
0
        // [UnityTest]
        // public IEnumerator SubWindowLocationRememberedAfterCloseAndReopen()
        // {
        //     yield return TestBlackboardLocation(new Rect(50.0f, 50.0f, 160.0f, 160.0f));
        //     yield return TestBlackboardLocation(new Rect(80050.0f, 50.0f, 220.0f, 240.0f));
        //     yield return TestBlackboardLocation(new Rect(50.0f, 90050.0f, 220.0f, 240.0f));
        //     yield return TestBlackboardLocation(new Rect(80050.0f, 90050.0f, 220.0f, 240.0f));
        //     yield return TestBlackboardLocation(new Rect(50.0f, -50.0f, 230.0f, 230.0f));
        // }
        // Test does not pass when run in batchmode on yamato, needs more investigation to re-enable

        // Only works for Blackboard... for now. (Plan is to make Internal Inspector, Blackboard 2.0, and MasterPreview use the same SubWindow class someday)
        private IEnumerator TestBlackboardLocation(Rect blackboardRect)
        {
            ToggleSubWindows(true, true, true);

            SGBlackboard      blackboard        = m_GraphEditorView.blackboardController.blackboard;
            MasterPreviewView masterPreviewView = m_GraphEditorView.Q <MasterPreviewView>();

            blackboard.SetPosition(blackboardRect);
            yield return(null);

            CloseGraphWindow();
            yield return(null);

            OpenGraphWindow();
            yield return(null);

            blackboard = m_GraphEditorView.blackboardController.blackboard;

            // Keep inside the GraphEditor in the same way as expected
            Rect editorViewContainer  = m_GraphEditorView.graphView.contentContainer.layout;
            Rect blackboardRectBefore = blackboardRect;

            if (blackboardRect.x + blackboardRect.width > editorViewContainer.width)
            {
                blackboardRect.x = editorViewContainer.width - blackboardRect.width;
            }
            if (blackboardRect.y + blackboardRect.height > editorViewContainer.height)
            {
                blackboardRect.y = editorViewContainer.height - blackboardRect.height;
            }
            if (blackboardRect.x < 0)
            {
                blackboardRect.x = 0;
            }
            if (blackboardRect.y < 0)
            {
                blackboardRect.y = 0;
            }

            // Using approximately instead of exact comparisons, which is why we don't use (blackboard.layout == blackboardRect)
            Assert.That(Mathf.Approximately(blackboard.layout.x, blackboardRect.x), "Blackboard did not remember location, x differs: "
                        + "m_GraphEditorView.layout=" + m_GraphEditorView.layout + " blackboard.layout=" + blackboard.layout + " blackboardRect=" + blackboardRect + " blackboardRectPreModification=" + blackboardRectBefore);
            Assert.That(Mathf.Approximately(blackboard.layout.y, blackboardRect.y), "Blackboard did not remember location, y differs: "
                        + "m_GraphEditorView.layout=" + m_GraphEditorView.layout + " blackboard.layout=" + blackboard.layout + " blackboardRect=" + blackboardRect + " blackboardRectPreModification=" + blackboardRectBefore);
            Assert.That(Mathf.Approximately(blackboard.layout.width, blackboardRect.width), "Blackboard did not remember width: "
                        + "m_GraphEditorView.layout=" + m_GraphEditorView.layout + " blackboard.layout=" + blackboard.layout + " blackboardRect=" + blackboardRect + " blackboardRectPreModification=" + blackboardRectBefore);
            Assert.That(Mathf.Approximately(blackboard.layout.height, blackboardRect.height), "Blackboard did not remember height: "
                        + "m_GraphEditorView.layout=" + m_GraphEditorView.layout + " blackboard.layout=" + blackboard.layout + " blackboardRect=" + blackboardRect + " blackboardRectPreModification=" + blackboardRectBefore);
        }