Ejemplo n.º 1
0
            public override void OnOpen()
            {
                var settingsView = new MixtureSettingsView(graphView.graph.settings, graphView, "Graph Settings", false);

                settingsView.AddToClassList("RTSettingsView");
                settingsView.style.height = new StyleLength(new Length(100, LengthUnit.Percent));
                settingsView.RegisterChangedCallback(() => graphView.ProcessGraph());

                var otherHeader = new Label("Advanced Settings");

                otherHeader.AddToClassList(MixtureSettingsView.headerStyleClass);
                settingsView.Add(otherHeader);

                var defaultInheritanceMode = new EnumField(graphView.graph.defaultNodeInheritanceMode)
                {
                    label = "Node Inheritance Mode"
                };

                defaultInheritanceMode.RegisterValueChangedCallback(e => {
                    graphView.RegisterCompleteObjectUndo("Changed node inheritance mode");
                    graphView.graph.defaultNodeInheritanceMode = (NodeInheritanceMode)e.newValue;

                    graphView.graph.UpdateNodeInheritanceMode();
                    graphView.RefreshNodeSettings();

                    graphView.ProcessGraph();
                });
                settingsView.Add(defaultInheritanceMode);

                editorWindow.rootVisualElement.Add(settingsView);
            }
Ejemplo n.º 2
0
        public MixtureExposedParameterPropertyView(BaseGraphView graphView, ExposedParameter param)
        {
            mixtureGraphView = graphView as MixtureGraphView;
            parameter        = param;

            var valueField = graphView.exposedParameterFactory.GetParameterValueField(param, (newValue) => {
                graphView.RegisterCompleteObjectUndo("Updated Parameter Value");
                param.value = newValue;
                graphView.graph.NotifyExposedParameterValueChanged(param);
                mixtureGraphView.ProcessGraph();
            });

            var field = graphView.exposedParameterFactory.GetParameterSettingsField(param, (newValue) => {
                param.settings = newValue as ExposedParameter.Settings;
            });

            Add(valueField);

            Add(field);
        }
Ejemplo n.º 3
0
        void InitializeView()
        {
            // Register callbacks
            settingsButton.clicked += () => {
                if (settingsButton.ClassListContains("ActiveButton"))
                {
                    settingsButton.RemoveFromClassList("ActiveButton");
                    portSettings.style.display  = DisplayStyle.None;
                    portNameField.style.display = DisplayStyle.None;
                }
                else
                {
                    settingsButton.AddToClassList("ActiveButton");
                    portSettings.style.display  = DisplayStyle.Flex;
                    portNameField.style.display = DisplayStyle.Flex;
                }
            };

            portNameField.RegisterValueChangedCallback(name => {
                graphView.RegisterCompleteObjectUndo("Change output name");
                var uniqueName      = ObjectNames.GetUniqueName(node.outputTextureSettings.Select(o => o.name).ToArray(), name.newValue);
                targetSettings.name = uniqueName;
                portName.text       = uniqueName;

#if UNITY_EDITOR
                if (graphView.graph.isRealtime)
                {
                    graphView.graph.UpdateRealtimeAssetsOnDisk();
                }
#endif
            });
            portNameField.value = targetSettings.name;
            portName.text       = targetSettings.name;

            enableCompression.RegisterValueChangedCallback(enabled => {
                graphView.RegisterCompleteObjectUndo($"Change {targetSettings.name} compression");
                var textureDim = node.rtSettings.GetTextureDimension(graphView.graph);

                if (textureDim == TextureDimension.Tex2D || textureDim == TextureDimension.Cube)
                {
                    targetSettings.enableCompression = enabled.newValue;
                    if (enabled.newValue)
                    {
                        compressionFields.style.display = DisplayStyle.Flex;
                    }
                    else
                    {
                        compressionFields.style.display = DisplayStyle.None;
                    }
                }
                else
                {
                    Debug.LogError("Compression is not yet supported for " + textureDim);
                    enableCompression.SetValueWithoutNotify(false);
                }
            });
            enableCompression.value = targetSettings.enableCompression;

            compressionFormat.RegisterValueChangedCallback(format => {
                targetSettings.compressionFormat = (TextureFormat)format.newValue;
            });
            compressionQuality.RegisterValueChangedCallback(quality => {
                targetSettings.compressionQuality = (MixtureCompressionQuality)quality.newValue;
            });

            compressionFormat.SetValueWithoutNotify(targetSettings.compressionFormat);
            compressionQuality.SetValueWithoutNotify(targetSettings.compressionQuality);

            createMipMapShaderButton.clicked += MixtureAssetCallbacks.CreateCustomMipMapShaderGraph;
            // TODO: assign the created shader when finished

            mipmapShaderField.objectType           = typeof(Shader);
            mipmapShaderField.value                = targetSettings.customMipMapShader;
            createMipMapShaderButton.style.display = targetSettings.customMipMapShader != null ? DisplayStyle.None : DisplayStyle.Flex;
            mipmapShaderField.RegisterValueChangedCallback(e => {
                graphView.RegisterCompleteObjectUndo("Changed Custom Mip Map Shader");
                targetSettings.customMipMapShader      = e.newValue as Shader;
                createMipMapShaderButton.style.display = e.newValue != null ? DisplayStyle.None : DisplayStyle.Flex;;
            });

            enableMipMap.RegisterValueChangedCallback(e => {
                targetSettings.hasMipMaps = e.newValue;
                if (supportCustomMipMaps)
                {
                    mipmapFields.style.display = targetSettings.hasMipMaps ? DisplayStyle.Flex : DisplayStyle.None;
                }

                // Processing the graph to update the previews with the new mipmaps
                graphView.ProcessGraph();
            });
            enableMipMap.value = targetSettings.hasMipMaps;

            removeOutputButton.clicked += () => {
                node.RemoveTextureOutput(targetSettings);
                nodeView.ForceUpdatePorts();
            };

            enableConversion.RegisterValueChangedCallback(e => {
                graphView.RegisterCompleteObjectUndo("Changed Conversion value");
                targetSettings.enableConversion = e.newValue;
                conversionFormat.style.display  = e.newValue ? DisplayStyle.Flex : DisplayStyle.None;
            });
            enableConversion.value = targetSettings.enableConversion;

            conversionFormat.RegisterValueChangedCallback(e => {
                graphView.RegisterCompleteObjectUndo("Changed Conversion Format");
                targetSettings.conversionFormat = (ConversionFormat)e.newValue;
            });
            conversionFormat.value = targetSettings.conversionFormat;

            sRGB.RegisterValueChangedCallback(e => {
                graphView.RegisterCompleteObjectUndo("Changed sRGB");
                targetSettings.sRGB = e.newValue;

                // when updating sRGB flag, we need to process the graph to update the final copy material
                graphView.ProcessGraph();
            });
            sRGB.value = targetSettings.sRGB;

            // Initial view state
            portSettings.style.display      = DisplayStyle.None;
            compressionFields.style.display = targetSettings.enableCompression ? DisplayStyle.Flex : DisplayStyle.None;
            mipmapFields.style.display      = targetSettings.hasMipMaps ? DisplayStyle.Flex : DisplayStyle.None;
            portNameField.style.display     = DisplayStyle.None;
            conversionFormat.style.display  = targetSettings.enableConversion ? DisplayStyle.Flex : DisplayStyle.None;
        }