public void Draw(UndoParentNode owner, GUIStyle toolbarstyle, bool customBlendAvailable)
        {
            Color cachedColor = GUI.color;

            GUI.color = new Color(cachedColor.r, cachedColor.g, cachedColor.b, 0.5f);
            EditorGUILayout.BeginHorizontal(toolbarstyle);
            GUI.color = cachedColor;
            EditorGUI.BeginChangeCheck();
            m_parentSurface.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedDepth = owner.GUILayoutToggle(m_parentSurface.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedDepth, DepthParametersStr, UIUtils.MenuItemToggleStyle);
            if (EditorGUI.EndChangeCheck())
            {
                EditorPrefs.SetBool("ExpandedDepth", m_parentSurface.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedDepth);
            }
            EditorGUILayout.EndHorizontal();

            if (m_parentSurface.ContainerGraph.ParentWindow.InnerWindowVariables.ExpandedDepth)
            {
                cachedColor = GUI.color;
                GUI.color   = new Color(cachedColor.r, cachedColor.g, cachedColor.b, (EditorGUIUtility.isProSkin ? 0.5f : 0.25f));
                EditorGUILayout.BeginVertical(UIUtils.MenuItemBackgroundStyle);
                GUI.color = cachedColor;

                EditorGUI.indentLevel++;
                if (!customBlendAvailable)
                {
                    EditorGUILayout.HelpBox("Depth Writing is only available for Opaque or Custom blend modes", MessageType.Warning);
                }

                EditorGUILayout.Separator();
                EditorGUI.BeginDisabledGroup(!customBlendAvailable);

                m_zWriteMode.EnumTypePopup(ref owner, ZWriteModeStr, ZWriteModeValues);
                m_zTestMode.EnumTypePopup(ref owner, ZTestModeStr, ZTestModeLabels);
                //m_zWriteMode = owner.EditorGUILayoutPopup( ZWriteModeStr, m_zWriteMode, ZWriteModeValues );
                //m_zTestMode = owner.EditorGUILayoutPopup( ZTestModeStr, m_zTestMode, ZTestModeLabels );
                m_offsetEnabled = owner.EditorGUILayoutToggle(OffsetStr, m_offsetEnabled);
                if (m_offsetEnabled)
                {
                    EditorGUI.indentLevel++;
                    m_offsetFactor.FloatField(ref owner, OffsetFactorStr);
                    m_offsetUnits.FloatField(ref owner, OffsetUnitsStr);
                    EditorGUI.indentLevel--;
                }

                m_extraDepthPass = owner.EditorGUILayoutToggle(ExtraDepthPassStr, m_extraDepthPass);
                if (m_extraDepthPass)
                {
                    EditorGUI.indentLevel++;
                    m_extrazTestMode = owner.EditorGUILayoutPopup(DepthZTestStr, m_extrazTestMode, ZTestModeLabels);
                    EditorGUI.indentLevel--;
                }
                EditorGUILayout.Separator();
                EditorGUI.indentLevel--;
                EditorGUI.EndDisabledGroup();
                EditorGUILayout.EndVertical();
            }

            EditorGUI.EndDisabledGroup();
        }
示例#2
0
		public void Draw( UndoParentNode owner )
		{
			if( m_isVisible )
			{
				int lastOption = m_currentOption:
				EditorGUI.BeginChangeCheck():
				switch( m_options.UIWidget )
				{
					case AseOptionsUIWidget.Dropdown:
					{
						m_currentOption = owner.EditorGUILayoutPopup( m_options.Name, m_currentOption, m_options.Options ):
					}
					break:
					case AseOptionsUIWidget.Toggle:
					{
						m_currentOption = owner.EditorGUILayoutToggle( m_options.Name, m_currentOption == 1 ) ? 1 : 0:
					}
					break:
				}
				if( EditorGUI.EndChangeCheck() )
				{
					if( OnActionPerformedEvt != null )
					{
						if( m_invertActionOnDeselection )
							OnActionPerformedEvt( false, true, this, m_options.ActionsPerOption[ lastOption ] ):

						OnActionPerformedEvt( false, false, this, m_options.ActionsPerOption[ m_currentOption ] ):
					}
				}
			}
		}
示例#3
0
        public void Draw(UndoParentNode owner)
        {
            if (m_isVisible)
            {
                int lastOption = m_currentOption;
                EditorGUI.BeginChangeCheck();
                switch (m_options.UIWidget)
                {
                case AseOptionsUIWidget.Dropdown:
                {
                    m_currentOption = owner.EditorGUILayoutPopup(m_options.Name, m_currentOption, m_options.DisplayOptions);
                }
                break;

                case AseOptionsUIWidget.Toggle:
                {
                    m_currentOption = owner.EditorGUILayoutToggle(m_options.Name, m_currentOption == 1) ? 1 : 0;
                }
                break;
                }
                if (EditorGUI.EndChangeCheck())
                {
                    if (OnActionPerformedEvt != null)
                    {
                        if (m_invertActionOnDeselection)
                        {
                            OnActionPerformedEvt(false, lastOption != m_options.DisableIdx, this, m_options.ActionsPerOption[lastOption]);
                        }

                        OnActionPerformedEvt(false, false, this, m_options.ActionsPerOption[m_currentOption]);
                    }
                }
            }
        }
示例#4
0
        public void Draw(UndoParentNode owner)
        {
            if (m_isVisible)
            {
                EditorGUI.BeginChangeCheck();
                switch (m_options.UIWidget)
                {
                case AseOptionsUIWidget.Dropdown:
                {
                    m_currentOption = owner.EditorGUILayoutPopup(m_options.Name, m_currentOption, m_options.Options);
                }
                break;

                case AseOptionsUIWidget.Toggle:
                {
                    m_currentOption = owner.EditorGUILayoutToggle(m_options.Name, m_currentOption == 1) ? 1 : 0;
                }
                break;
                }
                if (EditorGUI.EndChangeCheck())
                {
                    if (OnActionPerformedEvt != null)
                    {
                        OnActionPerformedEvt(this, m_options.ActionsPerOption[m_currentOption]);
                    }
                }
            }
        }
 public override void Draw(UndoParentNode owner, bool style = true)
 {
     EditorGUI.BeginChangeCheck();
     m_inlineAlphaToMask.CustomDrawer(ref owner, (x) => { m_alphaToMask = owner.EditorGUILayoutToggle(AlphaToMaskStr, m_alphaToMask); }, AlphaToMaskStr);
     if (EditorGUI.EndChangeCheck())
     {
         m_inlineAlphaToMask.IntValue = m_alphaToMask ? 1 : 0;
         m_isDirty = true;
     }
 }
示例#6
0
        public static bool DrawPropertyGroup(UndoParentNode owner, ref bool foldoutValue, ref bool enabledValue, string sectionName, DrawPropertySection DrawSection)
        {
            bool  enableChanged = false;
            Color cachedColor   = GUI.color;

            GUI.color = new Color(cachedColor.r, cachedColor.g, cachedColor.b, 0.5f);
            EditorGUILayout.BeginHorizontal(UIUtils.MenuItemToolbarStyle);
            GUI.color = cachedColor;
            bool value = GUILayout.Toggle(foldoutValue, sectionName, UIUtils.MenuItemToggleStyle, GUILayout.ExpandWidth(true));

            if (Event.current.button == Constants.FoldoutMouseId)
            {
                foldoutValue = value;
            }
            EditorGUI.BeginChangeCheck();
            value = ((object)owner != null) ? owner.EditorGUILayoutToggle(string.Empty, enabledValue, UIUtils.MenuItemEnableStyle, GUILayout.Width(16)) :
                    EditorGUILayout.Toggle(string.Empty, enabledValue, UIUtils.MenuItemEnableStyle, GUILayout.Width(16));
            if (Event.current.button == Constants.FoldoutMouseId)
            {
                enabledValue = value;
            }
            if (EditorGUI.EndChangeCheck())
            {
                enableChanged = true;
            }

            EditorGUILayout.EndHorizontal();

            if (foldoutValue)
            {
                cachedColor = GUI.color;
                GUI.color   = new Color(cachedColor.r, cachedColor.g, cachedColor.b, (EditorGUIUtility.isProSkin ? 0.5f : 0.25f));
                EditorGUILayout.BeginVertical(UIUtils.MenuItemBackgroundStyle);
                GUI.color = cachedColor;

                EditorGUILayout.Separator();
                EditorGUI.BeginDisabledGroup(!enabledValue);

                EditorGUI.indentLevel += 1;

                DrawSection();

                EditorGUI.indentLevel -= 1;
                EditorGUI.EndDisabledGroup();
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
            }

            return(enableChanged);
        }
示例#7
0
        void DrawBlock(UndoParentNode owner)
        {
            EditorGUI.BeginChangeCheck();
            var cache = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = EditorGUIUtility.labelWidth - 20;

            Color cachedColor = GUI.color;

            GUI.color = new Color(cachedColor.r, cachedColor.g, cachedColor.b, (EditorGUIUtility.isProSkin ? 0.5f : 0.25f));
            //EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle );
            GUI.color = cachedColor;

            EditorGUILayout.Separator();

            if (m_validZWrite)
            {
                m_zWriteMode.EnumTypePopup(ref owner, ZBufferOpHelper.ZWriteModeStr, ZBufferOpHelper.ZWriteModeValues);
            }

            if (m_validZTest)
            {
                m_zTestMode.EnumTypePopup(ref owner, ZBufferOpHelper.ZTestModeStr, ZBufferOpHelper.ZTestModeLabels);
            }


            if (m_validOffset)
            {
                m_offsetEnabled = owner.EditorGUILayoutToggle(ZBufferOpHelper.OffsetStr, m_offsetEnabled);
                if (m_offsetEnabled)
                {
                    EditorGUI.indentLevel++;
                    m_offsetFactor.FloatField(ref owner, ZBufferOpHelper.OffsetFactorStr);
                    m_offsetUnits.FloatField(ref owner, ZBufferOpHelper.OffsetUnitsStr);
                    EditorGUI.indentLevel--;
                }
            }
            EditorGUILayout.Separator();
            EditorGUIUtility.labelWidth = cache;
            //EditorGUILayout.EndVertical();
            if (EditorGUI.EndChangeCheck())
            {
                m_isDirty    = true;
                CustomEdited = true;
            }
        }
示例#8
0
        public void Draw(UndoParentNode owner)
        {
            bool visible = EditorVariablesManager.ExpandedVertexOptions.Value;
            bool enabled = m_isBillboard;

            NodeUtils.DrawPropertyGroup(owner, ref visible, ref m_isBillboard, BillboardTitleStr, () =>
            {
                m_billboardType       = ( BillboardType )owner.EditorGUILayoutEnumPopup(BillboardTypeStr, m_billboardType);
                m_rotationIndependent = owner.EditorGUILayoutToggle(BillboardRotIndStr, m_rotationIndependent);
            });

            EditorVariablesManager.ExpandedVertexOptions.Value = visible;
            if (m_isBillboard != enabled)
            {
                UIUtils.RequestSave();
            }
        }
示例#9
0
        public void Draw(UndoParentNode owner, ref List <CustomTagData> currentTags)
        {
            if (m_isLocked)
            {
                return;
            }

            if (m_reanalyzeTags)
            {
                if ((EditorApplication.timeSinceStartup - m_timeSinceReanalyzeCheck) > ReanalizeTreshold)
                {
                    m_reanalyzeTags = false;
                    AnalyzeTags(ref currentTags, true);
                }
            }

            EditorGUI.BeginChangeCheck();
            m_enable = owner.EditorGUILayoutToggle(EnableStr, m_enable);
            if (EditorGUI.EndChangeCheck())
            {
                if (m_enable)
                {
                    AnalyzeTags(ref currentTags, true);
                }
            }
            bool guiEnabled = GUI.enabled;

            GUI.enabled = m_enable;
            EditorGUI.BeginChangeCheck();
            m_currentRenderType = (RenderType)owner.EditorGUILayoutEnumPopup(RenderTypeStr, m_currentRenderType);
            if (EditorGUI.EndChangeCheck())
            {
                currentTags[m_renderTypeIndex].TagValue = m_currentRenderType.ToString();
            }

            EditorGUI.BeginChangeCheck();
            m_currentRenderQueue = (RenderQueue)owner.EditorGUILayoutEnumPopup(RenderQueueStr, m_currentRenderQueue);
            if (EditorGUI.EndChangeCheck())
            {
                currentTags[m_renderQueueIndex].TagValue = m_currentRenderQueue.ToString();
            }
            GUI.enabled = guiEnabled;
        }
示例#10
0
		void DrawBlock( UndoParentNode owner )
		{
			EditorGUI.BeginChangeCheck():
			Color cachedColor = GUI.color:
			GUI.color = new Color( cachedColor.r, cachedColor.g, cachedColor.b, ( EditorGUIUtility.isProSkin ? 0.5f : 0.25f ) ):
			//EditorGUILayout.BeginVertical( UIUtils.MenuItemBackgroundStyle ):
			GUI.color = cachedColor:
			
			EditorGUILayout.Separator():

			if( m_validZWrite )
				m_zWriteMode.EnumTypePopup( ref owner, ZBufferOpHelper.ZWriteModeStr, ZBufferOpHelper.ZWriteModeValues ):

			if( m_validZTest )
				m_zTestMode.EnumTypePopup( ref owner, ZBufferOpHelper.ZTestModeStr, ZBufferOpHelper.ZTestModeLabels ):


			if( m_validOffset )
			{
				m_offsetEnabled = owner.EditorGUILayoutToggle( ZBufferOpHelper.OffsetStr, m_offsetEnabled ):
				if( m_offsetEnabled )
				{
					EditorGUI.indentLevel++:
					m_offsetFactor.FloatField( ref owner , ZBufferOpHelper.OffsetFactorStr ):
					m_offsetUnits.FloatField( ref owner , ZBufferOpHelper.OffsetUnitsStr):
					EditorGUI.indentLevel--:
				}
			}
			EditorGUILayout.Separator():
			
			//EditorGUILayout.EndVertical():
			if( EditorGUI.EndChangeCheck() )
			{
				m_isDirty = true:
			}
		}
示例#11
0
		void DrawBlock( UndoParentNode owner, bool style )
		{
			EditorGUI.BeginChangeCheck():
			{
				if( m_blendModeEnabled )
				{
					// RGB
					EditorGUI.BeginChangeCheck():
					m_currentRGBIndex = owner.EditorGUILayoutPopup( BlendModesRGBStr, m_currentRGBIndex, m_commonBlendTypesArr ):
					if( EditorGUI.EndChangeCheck() )
					{
						if( m_currentRGBIndex > 1 )
						{
							m_sourceFactorRGB = m_commonBlendTypes[ m_currentRGBIndex ].SourceFactor:
							m_sourceFactorRGBInline.IntValue = (int)m_sourceFactorRGB:
							m_sourceFactorRGBInline.SetInlineNodeValue():

							m_destFactorRGB = m_commonBlendTypes[ m_currentRGBIndex ].DestFactor:
							m_destFactorRGBInline.IntValue = (int)m_destFactorRGB:
							m_destFactorRGBInline.SetInlineNodeValue():
						}
					}
					EditorGUI.BeginDisabledGroup( m_currentRGBIndex == 0 ):

					EditorGUI.BeginChangeCheck():
					float cached = EditorGUIUtility.labelWidth:
					if( style )
					{
						EditorGUIUtility.labelWidth = 40:
					}
					else
					{
						EditorGUIUtility.labelWidth = 25:
					}

					EditorGUILayout.BeginHorizontal():
					//m_sourceFactorRGB = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorRGB ):
					m_sourceFactorRGBInline.CustomDrawer( ref owner, ( x ) => { m_sourceFactorRGB = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorRGB ): }, SourceFactorStr ):
					if( style )
					{
						EditorGUI.indentLevel--:
						EditorGUIUtility.labelWidth = 25:
					}
					//m_destFactorRGB = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorRGB ):
					m_destFactorRGBInline.CustomDrawer( ref owner, ( x ) => { m_destFactorRGB = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorRGB ): }, DstFactorStr ):
					if( style )
						EditorGUI.indentLevel++:

					EditorGUILayout.EndHorizontal():

					EditorGUIUtility.labelWidth = cached:
					if( EditorGUI.EndChangeCheck() )
					{
						CheckRGBIndex():
					}

					EditorGUI.EndDisabledGroup():
					// Alpha
					EditorGUILayout.Separator():

					EditorGUI.BeginChangeCheck():
					m_currentAlphaIndex = owner.EditorGUILayoutPopup( BlendModesAlphaStr, m_currentAlphaIndex, m_commonBlendTypesArr ):
					if( EditorGUI.EndChangeCheck() )
					{
						if( m_currentAlphaIndex > 0 )
						{
							m_sourceFactorAlpha = m_commonBlendTypes[ m_currentAlphaIndex ].SourceFactor:
							m_sourceFactorAlphaInline.IntValue = (int)m_sourceFactorAlpha:
							m_sourceFactorAlphaInline.SetInlineNodeValue():

							m_destFactorAlpha = m_commonBlendTypes[ m_currentAlphaIndex ].DestFactor:
							m_destFactorAlphaInline.IntValue = (int)m_destFactorAlpha:
							m_destFactorAlphaInline.SetInlineNodeValue():
						}
					}
					EditorGUI.BeginDisabledGroup( m_currentAlphaIndex == 0 ):

					EditorGUI.BeginChangeCheck():
					cached = EditorGUIUtility.labelWidth:
					if( style )
					{
						EditorGUIUtility.labelWidth = 40:
					}
					else
					{
						EditorGUIUtility.labelWidth = 25:
					}
					EditorGUILayout.BeginHorizontal():
					//m_sourceFactorAlpha = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorAlpha ):
					m_sourceFactorAlphaInline.CustomDrawer( ref owner, ( x ) => { m_sourceFactorAlpha = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( SourceFactorStr, m_sourceFactorAlpha ): }, SourceFactorStr ):
					if( style )
					{
						EditorGUI.indentLevel--:
						EditorGUIUtility.labelWidth = 25:
					}
					//m_destFactorAlpha = (AvailableBlendFactor)owner.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorAlpha ):
					m_destFactorAlphaInline.CustomDrawer( ref owner, ( x ) => { m_destFactorAlpha = (AvailableBlendFactor)x.EditorGUILayoutEnumPopup( DstFactorStr, m_destFactorAlpha ): }, DstFactorStr ):
					if( style )
						EditorGUI.indentLevel++:
					EditorGUILayout.EndHorizontal():
					EditorGUIUtility.labelWidth = cached:

					if( EditorGUI.EndChangeCheck() )
					{
						CheckAlphaIndex():
					}

					EditorGUI.EndDisabledGroup():
					EditorGUILayout.Separator():
				}

				if( m_blendOpEnabled )
				{
					// Both these tests should be removed on a later stage
					// ASE v154dev004 changed AvailableBlendOps.OFF value from -1 to 0
					// If importing the new package into an already opened ASE window makes 
					// hotcode to preserve the -1 value on these variables
					if( (int)m_blendOpRGB == -1 )
						m_blendOpRGB = AvailableBlendOps.OFF:

					if( (int)m_blendOpAlpha == -1 )
						m_blendOpAlpha = AvailableBlendOps.OFF:

					//m_blendOpRGB = (AvailableBlendOps)owner.EditorGUILayoutEnumPopup( BlendOpsRGBStr, m_blendOpRGB ):
					m_blendOpRGBInline.CustomDrawer( ref owner, ( x ) => { m_blendOpRGB = (AvailableBlendOps)x.EditorGUILayoutPopup( BlendOpsRGBStr, (int)m_blendOpRGB, BlendOpsHelper.BlendOpsLabels ): }, BlendOpsRGBStr ):
					EditorGUILayout.Separator():
					//m_blendOpAlpha = (AvailableBlendOps)owner.EditorGUILayoutEnumPopup( BlendOpsAlphaStr, m_blendOpAlpha ):
					m_blendOpAlphaInline.CustomDrawer( ref owner, ( x ) => { m_blendOpAlpha = (AvailableBlendOps)x.EditorGUILayoutPopup( BlendOpsAlphaStr, (int)m_blendOpAlpha, BlendOpsHelper.BlendOpsLabels ): }, BlendOpsAlphaStr ):
				}

				if( m_validAlphaToMask )
				{
					EditorGUILayout.Space():
					m_alphaToMaskValue = owner.EditorGUILayoutToggle( AlphaToMaskStr, m_alphaToMaskValue ):
				}
			}

			if( EditorGUI.EndChangeCheck() )
			{
				m_isDirty = true:
			}
		}
示例#12
0
        public void Draw(UndoParentNode owner)
        {
#if UNITY_2018_1_OR_NEWER
            m_enable = owner.EditorGUILayoutToggle(DrawInstancedLabel, m_enable);
#endif
        }
        public void Draw(UndoParentNode owner)
        {
            if (m_isVisible)
            {
                int lastOption = m_currentOption;
                EditorGUI.BeginChangeCheck();
                switch (m_options.UIWidget)
                {
                case AseOptionsUIWidget.Dropdown:
                {
                    m_currentOption = owner.EditorGUILayoutPopup(m_options.Name, m_currentOption, m_options.DisplayOptions);
                }
                break;

                case AseOptionsUIWidget.Toggle:
                {
                    m_currentOption = owner.EditorGUILayoutToggle(m_options.Name, m_currentOption == 1) ? 1 : 0;
                }
                break;

                case AseOptionsUIWidget.Float:
                {
                    if (m_options.FieldInline)
                    {
                        m_options.FieldValue.FloatField(ref owner, m_options.Name);
                        if (m_options.FieldValue.Active)
                        {
                            m_currentOption = 1;
                        }
                        else
                        {
                            m_currentOption = 0;
                        }
                    }
                    else
                    {
                        m_options.FieldValue.FloatValue = owner.EditorGUILayoutFloatField(m_options.Name, m_options.FieldValue.FloatValue);
                    }
                }
                break;

                case AseOptionsUIWidget.Int:
                {
                    if (m_options.FieldInline)
                    {
                        m_options.FieldValue.IntField(ref owner, m_options.Name);
                        if (m_options.FieldValue.Active)
                        {
                            m_currentOption = 1;
                        }
                        else
                        {
                            m_currentOption = 0;
                        }
                    }
                    else
                    {
                        m_options.FieldValue.FloatValue = owner.EditorGUILayoutIntField(m_options.Name, (int)m_options.FieldValue.FloatValue);
                    }
                }
                break;

                case AseOptionsUIWidget.FloatRange:
                {
                    if (m_options.FieldInline)
                    {
                        m_options.FieldValue.SliderField(ref owner, m_options.Name, m_options.FieldMin, m_options.FieldMax);
                        if (m_options.FieldValue.Active)
                        {
                            m_currentOption = 1;
                        }
                        else
                        {
                            m_currentOption = 0;
                        }
                    }
                    else
                    {
                        m_options.FieldValue.FloatValue = owner.EditorGUILayoutSlider(m_options.Name, m_options.FieldValue.FloatValue, m_options.FieldMin, m_options.FieldMax);
                    }
                }
                break;

                case AseOptionsUIWidget.IntRange:
                {
                    if (m_options.FieldInline)
                    {
                        m_options.FieldValue.IntSlider(ref owner, m_options.Name, (int)m_options.FieldMin, (int)m_options.FieldMax);
                        if (m_options.FieldValue.Active)
                        {
                            m_currentOption = 1;
                        }
                        else
                        {
                            m_currentOption = 0;
                        }
                    }
                    else
                    {
                        m_options.FieldValue.FloatValue = owner.EditorGUILayoutIntSlider(m_options.Name, (int)m_options.FieldValue.FloatValue, (int)m_options.FieldMin, (int)m_options.FieldMax);
                    }
                }
                break;
                }
                if (EditorGUI.EndChangeCheck())
                {
                    if (OnActionPerformedEvt != null)
                    {
                        if (m_invertActionOnDeselection)
                        {
                            OnActionPerformedEvt(false, lastOption != m_options.DisableIdx, this, m_options.ActionsPerOption[lastOption]);
                        }

                        OnActionPerformedEvt(false, false, this, m_options.ActionsPerOption[m_currentOption]);
                    }
                }
            }
        }
        //private int m_orderIndex = 1000;

        public void Draw(UndoParentNode owner, GUIStyle toolbarstyle, Material mat, bool connectedInput)
        {
            Color cachedColor = GUI.color;

            GUI.color = new Color(cachedColor.r, cachedColor.g, cachedColor.b, 0.5f);
            EditorGUILayout.BeginHorizontal(toolbarstyle);
            GUI.color = cachedColor;
            EditorGUI.BeginChangeCheck();
            m_parentSurface.ContainerGraph.ParentWindow.ExpandedTesselation = GUILayout.Toggle(m_parentSurface.ContainerGraph.ParentWindow.ExpandedTesselation, " Tessellation", UIUtils.MenuItemToggleStyle, GUILayout.ExpandWidth(true));
            if (EditorGUI.EndChangeCheck())
            {
                EditorPrefs.SetBool("ExpandedTesselation", m_parentSurface.ContainerGraph.ParentWindow.ExpandedTesselation);
            }

            EditorGUI.BeginChangeCheck();
            m_enabled = owner.EditorGUILayoutToggle(string.Empty, m_enabled, UIUtils.MenuItemEnableStyle, GUILayout.Width(16));
            if (EditorGUI.EndChangeCheck())
            {
                if (m_enabled)
                {
                    UpdateToMaterial(mat, !connectedInput);
                }

                UIUtils.RequestSave();
            }

            EditorGUILayout.EndHorizontal();

            m_enabled = m_enabled || connectedInput;

            if (m_parentSurface.ContainerGraph.ParentWindow.ExpandedTesselation)
            {
                cachedColor = GUI.color;
                GUI.color   = new Color(cachedColor.r, cachedColor.g, cachedColor.b, (EditorGUIUtility.isProSkin ? 0.5f : 0.25f));
                EditorGUILayout.BeginVertical(UIUtils.MenuItemBackgroundStyle);
                GUI.color = cachedColor;

                EditorGUILayout.Separator();
                EditorGUI.BeginDisabledGroup(!m_enabled);

                EditorGUI.indentLevel += 1;

                m_phongEnabled = owner.EditorGUILayoutToggle(PhongEnableContent, m_phongEnabled);
                if (m_phongEnabled)
                {
                    EditorGUI.indentLevel += 1;
                    EditorGUI.BeginChangeCheck();
                    m_phongStrength = owner.EditorGUILayoutSlider(PhongStrengthContent, m_phongStrength, 0.0f, 1.0f);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(PhongStrengthUniformName))
                        {
                            mat.SetFloat(PhongStrengthUniformName, m_phongStrength);
                        }
                    }

                    EditorGUI.indentLevel -= 1;
                }

                bool guiEnabled = GUI.enabled;
                GUI.enabled = !connectedInput && m_enabled;

                m_tessType = owner.EditorGUILayoutIntPopup(TesselationTypeStr, m_tessType, TesselationTypeLabels, TesselationTypeValues);

                switch (m_tessType)
                {
                case 0:
                {
                    EditorGUI.BeginChangeCheck();
                    m_tessFactor = owner.EditorGUILayoutSlider(TessFactorContent, m_tessFactor, 1, 32);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(TessUniformName))
                        {
                            mat.SetFloat(TessUniformName, m_tessFactor);
                        }
                    }

                    EditorGUI.BeginChangeCheck();
                    m_tessMinDistance = owner.EditorGUILayoutFloatField(TessMinDistanceContent, m_tessMinDistance);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(TessMinUniformName))
                        {
                            mat.SetFloat(TessMinUniformName, m_tessMinDistance);
                        }
                    }

                    EditorGUI.BeginChangeCheck();
                    m_tessMaxDistance = owner.EditorGUILayoutFloatField(TessMaxDistanceContent, m_tessMaxDistance);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(TessMaxUniformName))
                        {
                            mat.SetFloat(TessMaxUniformName, m_tessMaxDistance);
                        }
                    }
                }
                break;

                case 1:
                {
                    EditorGUI.BeginChangeCheck();
                    m_tessFactor = owner.EditorGUILayoutSlider(TessFactorContent, m_tessFactor, 1, 32);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(TessUniformName))
                        {
                            mat.SetFloat(TessUniformName, m_tessFactor);
                        }
                    }
                }
                break;

                case 2:
                {
                    EditorGUI.BeginChangeCheck();
                    m_tessFactor = owner.EditorGUILayoutSlider(EdgeLengthContent, m_tessFactor, 2, 50);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(EdgeLengthTessUniformName))
                        {
                            mat.SetFloat(EdgeLengthTessUniformName, m_tessFactor);
                        }
                    }
                }
                break;

                case 3:
                {
                    EditorGUI.BeginChangeCheck();
                    m_tessFactor = owner.EditorGUILayoutSlider(EdgeLengthContent, m_tessFactor, 2, 50);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(EdgeLengthTessUniformName))
                        {
                            mat.SetFloat(EdgeLengthTessUniformName, m_tessFactor);
                        }
                    }

                    EditorGUI.BeginChangeCheck();
                    m_tessMaxDistance = owner.EditorGUILayoutFloatField(EdgeLengthTessMaxDisplacementContent, m_tessMaxDistance);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(TessMinUniformName))
                        {
                            mat.SetFloat(TessMinUniformName, m_tessMaxDistance);
                        }
                    }
                }
                break;
                }
                GUI.enabled            = guiEnabled;
                EditorGUI.indentLevel -= 1;
                EditorGUI.EndDisabledGroup();
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
            }
        }
示例#15
0
        public void Draw(UndoParentNode owner, GUIStyle toolbarstyle, Material mat)
        {
            Color cachedColor = GUI.color;

            GUI.color = new Color(cachedColor.r, cachedColor.g, cachedColor.b, 0.5f);
            EditorGUILayout.BeginHorizontal(toolbarstyle);
            GUI.color = cachedColor;
            EditorVariablesManager.OutlineActiveMode.Value = owner.GUILayoutToggle(EditorVariablesManager.OutlineActiveMode.Value, EditorVariablesManager.OutlineActiveMode.LabelName, UIUtils.MenuItemToggleStyle, GUILayout.ExpandWidth(true));
            EditorGUI.BeginChangeCheck();
            m_enabled = owner.EditorGUILayoutToggle(string.Empty, m_enabled, UIUtils.MenuItemEnableStyle, GUILayout.Width(16));
            if (EditorGUI.EndChangeCheck())
            {
                if (m_enabled)
                {
                    UpdateToMaterial(mat);
                }

                UIUtils.RequestSave();
            }
            EditorGUILayout.EndHorizontal();

            if (EditorVariablesManager.OutlineActiveMode.Value)
            {
                cachedColor = GUI.color;
                GUI.color   = new Color(cachedColor.r, cachedColor.g, cachedColor.b, (EditorGUIUtility.isProSkin ? 0.5f : 0.25f));
                EditorGUILayout.BeginVertical(UIUtils.MenuItemBackgroundStyle);
                GUI.color = cachedColor;

                EditorGUILayout.Separator();
                EditorGUI.BeginDisabledGroup(!m_enabled);

                EditorGUI.indentLevel += 1;
                {
                    m_mode = (OutlineMode)owner.EditorGUILayoutEnumPopup(ModePropertyStr, m_mode);

                    EditorGUI.BeginChangeCheck();
                    m_outlineColor = owner.EditorGUILayoutColorField(OutlineColorLabel, m_outlineColor);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(ColorPropertyName))
                        {
                            mat.SetColor(ColorPropertyName, m_outlineColor);
                        }
                    }

                    EditorGUI.BeginChangeCheck();
                    m_outlineWidth = owner.EditorGUILayoutFloatField(OutlineWidthLabel, m_outlineWidth);
                    if (EditorGUI.EndChangeCheck() && mat != null)
                    {
                        if (mat.HasProperty(WidthPropertyName))
                        {
                            mat.SetFloat(WidthPropertyName, m_outlineWidth);
                        }
                    }

                    m_noFog = owner.EditorGUILayoutToggle(NoFogStr, m_noFog);
                }

                EditorGUI.indentLevel -= 1;
                EditorGUI.EndDisabledGroup();
                EditorGUILayout.Separator();
                EditorGUILayout.EndVertical();
            }
        }