コード例 #1
0
        VisualElement CreateGUI(AbstractMaterialNode node, InspectableAttribute attribute, out VisualElement propertyVisualElement)
        {
            VisualElement nodeSettings = new VisualElement();
            var           nameLabel    = PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold);

            nodeSettings.Add(nameLabel);
            if (node.sgVersion < node.latestVersion)
            {
                var help = HelpBoxRow.TryGetDeprecatedHelpBoxRow($"{node.name} Node", () =>
                {
                    m_setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo($"Update {node.name} Node");
                    node.ChangeVersion(node.latestVersion);
                    inspectorUpdateDelegate?.Invoke();
                    m_updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });

                if (help != null)
                {
                    nodeSettings.Insert(0, help);
                }
            }

            PropertyDrawerUtils.AddDefaultNodeProperties(nodeSettings, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);

            propertyVisualElement = null;

            return(nodeSettings);
        }
コード例 #2
0
        VisualElement CreateGUI(AbstractMaterialNode node, InspectableAttribute attribute, out VisualElement propertyVisualElement)
        {
            VisualElement nodeSettings = new VisualElement();
            var           nameLabel    = PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold);

            nodeSettings.Add(nameLabel);
            if (node.sgVersion < node.latestVersion)
            {
                string      deprecationText = null;
                string      buttonText      = null;
                string      labelText       = null;
                MessageType messageType     = MessageType.Warning;
                if (node is IHasCustomDeprecationMessage nodeWithCustomDeprecationSettings)
                {
                    nodeWithCustomDeprecationSettings.GetCustomDeprecationMessage(out deprecationText, out buttonText, out labelText, out messageType);
                }

                Action dismissAction = null;
                if (node.dismissedUpdateVersion < node.latestVersion)
                {
                    dismissAction = () =>
                    {   // dismiss
                        m_setNodesAsDirtyCallback?.Invoke();
                        node.owner.owner.RegisterCompleteObjectUndo($"Dismiss {node.name} Node Upgrade Flag");
                        node.dismissedUpdateVersion = node.latestVersion;
                        node.owner.messageManager.ClearNodesFromProvider(node.owner, new AbstractMaterialNode[] { node });
                        node.Dirty(ModificationScope.Graph);
                        inspectorUpdateDelegate?.Invoke();
                        m_updateNodeViewsCallback?.Invoke();
                    };
                }

                var help = HelpBoxRow.TryGetDeprecatedHelpBoxRow($"{node.name} Node",
                                                                 () =>
                {       // upgrade
                    m_setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo($"Update {node.name} Node");
                    node.ChangeVersion(node.latestVersion);
                    node.owner.messageManager.ClearNodesFromProvider(node.owner, new AbstractMaterialNode[] { node });
                    node.Dirty(ModificationScope.Graph);
                    inspectorUpdateDelegate?.Invoke();
                    m_updateNodeViewsCallback?.Invoke();
                },
                                                                 dismissAction, deprecationText, buttonText, labelText, messageType);

                if (help != null)
                {
                    nodeSettings.Insert(0, help);
                }
            }

            PropertyDrawerUtils.AddDefaultNodeProperties(nodeSettings, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);
            AddCustomNodeProperties(nodeSettings, node, m_setNodesAsDirtyCallback, m_updateNodeViewsCallback);

            propertyVisualElement = null;

            return(nodeSettings);
        }
コード例 #3
0
        VisualElement CreateGUI(AbstractMaterialNode node, InspectableAttribute attribute, out VisualElement propertyVisualElement)
        {
            VisualElement nodeSettings = new VisualElement();
            var           nameLabel    = PropertyDrawerUtils.CreateLabel($"{node.name} Node", 0, FontStyle.Bold);

            nodeSettings.Add(nameLabel);
            if (node.sgVersion < node.latestVersion)
            {
                var help = HelpBoxRow.TryGetDeprecatedHelpBoxRow($"{node.name} Node", () =>
                {
                    m_setNodesAsDirtyCallback?.Invoke();
                    node.owner.owner.RegisterCompleteObjectUndo($"Update {node.name} Node");
                    node.ChangeVersion(node.latestVersion);
                    inspectorUpdateDelegate?.Invoke();
                    m_updateNodeViewsCallback?.Invoke();
                    node.Dirty(ModificationScope.Graph);
                });

                if (help != null)
                {
                    nodeSettings.Insert(0, help);
                }
            }
            EnumField precisionField = null;

            if (node.canSetPrecision)
            {
                precisionField = new EnumField(node.precision);
                var propertyRow = new PropertyRow(new Label("Precision"));
                propertyRow.Add(precisionField, (field) =>
                {
                    field.RegisterValueChangedCallback(evt =>
                    {
                        if (evt.newValue.Equals(node.precision))
                        {
                            return;
                        }

                        m_setNodesAsDirtyCallback();
                        node.owner.owner.RegisterCompleteObjectUndo("Change precision");
                        node.precision = (Precision)evt.newValue;
                        node.owner.ValidateGraph();
                        m_updateNodeViewsCallback();
                        node.Dirty(ModificationScope.Graph);
                    });
                });
                if (node is Serialization.MultiJsonInternal.UnknownNodeType)
                {
                    precisionField.SetEnabled(false);
                }
                nodeSettings.Add(propertyRow);
            }
            propertyVisualElement = precisionField;
            return(nodeSettings);
        }