public override void ReadFromDeprecated(ref string[] nodeParams, Type oldType = null) { base.ReadFromDeprecated(ref nodeParams, oldType); { m_currentKeyword = GetCurrentParam(ref nodeParams); m_currentKeywordId = UIUtils.GetKeywordId(m_currentKeyword); m_createToggle = false; m_keywordModeType = KeywordModeType.Toggle; m_variableMode = VariableMode.Fetch; } }
public override void ReadFromDeprecated( ref string[] nodeParams, Type oldType = null ) { base.ReadFromDeprecated( ref nodeParams, oldType ): { m_currentKeyword = GetCurrentParam( ref nodeParams ): m_currentKeywordId = UIUtils.GetKeywordId( m_currentKeyword ): m_createToggle = false: m_keywordModeType = KeywordModeType.Toggle: m_variableMode = VariableMode.Fetch: CurrentVarMode = StaticSwitchVariableMode.Fetch: } }
public override void ReadFromString(ref string[] nodeParams) { base.ReadFromString(ref nodeParams); m_multiCompile = Convert.ToInt32(GetCurrentParam(ref nodeParams)); if (UIUtils.CurrentShaderVersion() > 14403) { m_defaultValue = Convert.ToInt32(GetCurrentParam(ref nodeParams)); if (UIUtils.CurrentShaderVersion() > 14101) { m_materialValue = Convert.ToInt32(GetCurrentParam(ref nodeParams)); } } else { m_defaultValue = Convert.ToBoolean(GetCurrentParam(ref nodeParams)) ? 1 : 0; if (UIUtils.CurrentShaderVersion() > 14101) { m_materialValue = Convert.ToBoolean(GetCurrentParam(ref nodeParams)) ? 1 : 0; } } if (UIUtils.CurrentShaderVersion() > 13104) { m_createToggle = Convert.ToBoolean(GetCurrentParam(ref nodeParams)); m_currentKeyword = GetCurrentParam(ref nodeParams); m_currentKeywordId = UIUtils.GetKeywordId(m_currentKeyword); } if (UIUtils.CurrentShaderVersion() > 14001) { m_keywordModeType = (KeywordModeType)Enum.Parse(typeof(KeywordModeType), GetCurrentParam(ref nodeParams)); } if (UIUtils.CurrentShaderVersion() > 14403) { m_keywordEnumAmount = Convert.ToInt32(GetCurrentParam(ref nodeParams)); for (int i = 0; i < m_keywordEnumAmount; i++) { m_defaultKeywordNames[i] = GetCurrentParam(ref nodeParams); } UpdateLabels(); } if (m_createToggle) { UIUtils.RegisterPropertyNode(this); } else { UIUtils.UnregisterPropertyNode(this); } }
void PropertyGroup() { EditorGUI.BeginChangeCheck(); CurrentVarMode = (StaticSwitchVariableMode)EditorGUILayoutEnumPopup(ModeStr, CurrentVarMode); if (EditorGUI.EndChangeCheck()) { if (CurrentVarMode == StaticSwitchVariableMode.Fetch) { m_keywordModeType = KeywordModeType.Toggle; UpdateLabels(); } if (CurrentVarMode == StaticSwitchVariableMode.Reference) { UIUtils.UnregisterPropertyNode(this); } else { if (m_createToggle) { UIUtils.RegisterPropertyNode(this); } else { UIUtils.UnregisterPropertyNode(this); } } } if (CurrentVarMode == StaticSwitchVariableMode.Create) { EditorGUI.BeginChangeCheck(); m_multiCompile = EditorGUILayoutIntPopup(KeywordTypeStr, m_multiCompile, KeywordTypeList, KeywordTypeInt); if (EditorGUI.EndChangeCheck()) { BeginPropertyFromInspectorCheck(); } } else if (CurrentVarMode == StaticSwitchVariableMode.Reference) { string[] arr = ContainerGraph.StaticSwitchNodes.NodesArr; bool guiEnabledBuffer = GUI.enabled; if (arr != null && arr.Length > 0) { GUI.enabled = true; } else { m_referenceArrayId = -1; GUI.enabled = false; } EditorGUI.BeginChangeCheck(); m_referenceArrayId = EditorGUILayoutPopup(Constants.AvailableReferenceStr, m_referenceArrayId, arr); if (EditorGUI.EndChangeCheck()) { m_reference = ContainerGraph.StaticSwitchNodes.GetNode(m_referenceArrayId); if (m_reference != null) { m_referenceNodeId = m_reference.UniqueId; CheckReferenceValues(true); } else { m_referenceArrayId = -1; m_referenceNodeId = -1; } } GUI.enabled = guiEnabledBuffer; return; } if (CurrentVarMode == StaticSwitchVariableMode.Create || m_createToggle) { EditorGUI.BeginChangeCheck(); m_keywordModeType = (KeywordModeType)EditorGUILayoutEnumPopup(TypeStr, m_keywordModeType); if (EditorGUI.EndChangeCheck()) { UpdateLabels(); } } if (m_keywordModeType != KeywordModeType.KeywordEnum) { if (CurrentVarMode == StaticSwitchVariableMode.Create || m_createToggle) { ShowPropertyInspectorNameGUI(); ShowPropertyNameGUI(true); if (CurrentVarMode == StaticSwitchVariableMode.Create) { EditorGUILayout.BeginHorizontal(); bool guiEnabledBuffer = GUI.enabled; GUI.enabled = !m_lockKeyword; if (m_lockKeyword) { EditorGUILayout.TextField(KeywordNameStr, GetPropertyValStr()); } else { m_currentKeyword = EditorGUILayoutTextField(KeywordNameStr, m_currentKeyword); } GUI.enabled = guiEnabledBuffer; m_lockKeyword = GUILayout.Toggle(m_lockKeyword, (m_lockKeyword ? UIUtils.LockIconOpen : UIUtils.LockIconClosed), "minibutton", GUILayout.Width(22)); EditorGUILayout.EndHorizontal(); } } } else { if (CurrentVarMode == StaticSwitchVariableMode.Create || m_createToggle) { ShowPropertyInspectorNameGUI(); ShowPropertyNameGUI(true); DrawEnumList(); } } if (CurrentVarMode == StaticSwitchVariableMode.Fetch) { //ShowPropertyInspectorNameGUI(); EditorGUI.BeginChangeCheck(); m_currentKeywordId = EditorGUILayoutPopup(KeywordStr, m_currentKeywordId, UIUtils.AvailableKeywords); if (EditorGUI.EndChangeCheck()) { if (m_currentKeywordId != 0) { m_currentKeyword = UIUtils.AvailableKeywords[m_currentKeywordId]; } } if (m_currentKeywordId == 0) { EditorGUI.BeginChangeCheck(); m_currentKeyword = EditorGUILayoutTextField(CustomStr, m_currentKeyword); if (EditorGUI.EndChangeCheck()) { m_currentKeyword = UIUtils.RemoveInvalidCharacters(m_currentKeyword); } } } #if UNITY_2019_1_OR_NEWER m_isLocal = EditorGUILayoutToggle(IsLocalStr, m_isLocal); #endif //if( CurrentVarMode == StaticSwitchVariableMode.Create ) { ShowAutoRegister(); } EditorGUI.BeginChangeCheck(); m_createToggle = EditorGUILayoutToggle(MaterialToggleStr, m_createToggle); if (EditorGUI.EndChangeCheck()) { if (m_createToggle) { UIUtils.RegisterPropertyNode(this); } else { UIUtils.UnregisterPropertyNode(this); } } if (m_createToggle) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(20); m_propertyTab = GUILayout.Toolbar(m_propertyTab, LabelToolbarTitle); EditorGUILayout.EndHorizontal(); switch (m_propertyTab) { default: case 0: { EditorGUI.BeginChangeCheck(); if (m_keywordModeType != KeywordModeType.KeywordEnum) { m_materialValue = EditorGUILayoutToggle(ToggleMaterialValueStr, m_materialValue == 1) ? 1 : 0; } else { m_materialValue = EditorGUILayoutPopup(ToggleMaterialValueStr, m_materialValue, m_keywordEnumList); } if (EditorGUI.EndChangeCheck()) { m_requireMaterialUpdate = true; } } break; case 1: { if (m_keywordModeType != KeywordModeType.KeywordEnum) { m_defaultValue = EditorGUILayoutToggle(ToggleDefaultValueStr, m_defaultValue == 1) ? 1 : 0; } else { m_defaultValue = EditorGUILayoutPopup(ToggleDefaultValueStr, m_defaultValue, m_keywordEnumList); } } break; } } //EditorGUILayout.HelpBox( "Keyword Type:\n" + // "The difference is that unused variants of \"Shader Feature\" shaders will not be included into game build while \"Multi Compile\" variants are included regardless of their usage.\n\n" + // "So \"Shader Feature\" makes most sense for keywords that will be set on the materials, while \"Multi Compile\" for keywords that will be set from code globally.\n\n" + // "You can set keywords using the material property using the \"Property Name\" or you can set the keyword directly using the \"Keyword Name\".", MessageType.None ); }
public override void ReadFromString(ref string[] nodeParams) { base.ReadFromString(ref nodeParams); m_multiCompile = Convert.ToInt32(GetCurrentParam(ref nodeParams)); if (UIUtils.CurrentShaderVersion() > 14403) { m_defaultValue = Convert.ToInt32(GetCurrentParam(ref nodeParams)); if (UIUtils.CurrentShaderVersion() > 14101) { m_materialValue = Convert.ToInt32(GetCurrentParam(ref nodeParams)); } } else { m_defaultValue = Convert.ToBoolean(GetCurrentParam(ref nodeParams)) ? 1 : 0; if (UIUtils.CurrentShaderVersion() > 14101) { m_materialValue = Convert.ToBoolean(GetCurrentParam(ref nodeParams)) ? 1 : 0; } } if (UIUtils.CurrentShaderVersion() > 13104) { m_createToggle = Convert.ToBoolean(GetCurrentParam(ref nodeParams)); m_currentKeyword = GetCurrentParam(ref nodeParams); m_currentKeywordId = UIUtils.GetKeywordId(m_currentKeyword); } if (UIUtils.CurrentShaderVersion() > 14001) { m_keywordModeType = (KeywordModeType)Enum.Parse(typeof(KeywordModeType), GetCurrentParam(ref nodeParams)); } if (UIUtils.CurrentShaderVersion() > 14403) { KeywordEnumAmount = Convert.ToInt32(GetCurrentParam(ref nodeParams)); for (int i = 0; i < KeywordEnumAmount; i++) { m_defaultKeywordNames[i] = GetCurrentParam(ref nodeParams); } UpdateLabels(); } if (UIUtils.CurrentShaderVersion() > 16304) { string currentVarMode = GetCurrentParam(ref nodeParams); CurrentVarMode = (StaticSwitchVariableMode)Enum.Parse(typeof(StaticSwitchVariableMode), currentVarMode); if (CurrentVarMode == StaticSwitchVariableMode.Reference) { m_referenceNodeId = Convert.ToInt32(GetCurrentParam(ref nodeParams)); } } else { CurrentVarMode = (StaticSwitchVariableMode)m_variableMode; } if (CurrentVarMode == StaticSwitchVariableMode.Reference) { UIUtils.UnregisterPropertyNode(this); } else { if (m_createToggle) { UIUtils.RegisterPropertyNode(this); } else { UIUtils.UnregisterPropertyNode(this); } } if (UIUtils.CurrentShaderVersion() > 16700) { m_isLocal = Convert.ToBoolean(GetCurrentParam(ref nodeParams)); } if (UIUtils.CurrentShaderVersion() > 18401) { m_lockKeyword = Convert.ToBoolean(GetCurrentParam(ref nodeParams)); } SetMaterialToggleRetrocompatibility(); if (!m_isNodeBeingCopied && CurrentVarMode != StaticSwitchVariableMode.Reference) { ContainerGraph.StaticSwitchNodes.UpdateDataOnNode(UniqueId, DataToArray); } }
void PropertyGroup() { EditorGUI.BeginChangeCheck(); m_keywordModeType = (KeywordModeType)EditorGUILayoutEnumPopup(TypeStr, m_keywordModeType); if (EditorGUI.EndChangeCheck()) { UpdateLabels(); } m_variableMode = (VariableMode)EditorGUILayoutEnumPopup(ModeStr, m_variableMode); if (m_variableMode == VariableMode.Create) { EditorGUI.BeginChangeCheck(); m_multiCompile = EditorGUILayoutIntPopup(KeywordTypeStr, m_multiCompile, KeywordTypeList, KeywordTypeInt); if (EditorGUI.EndChangeCheck()) { BeginPropertyFromInspectorCheck(); } } if (m_keywordModeType != KeywordModeType.KeywordEnum) { if (m_variableMode == VariableMode.Create) { ShowPropertyInspectorNameGUI(); ShowPropertyNameGUI(true); bool guiEnabledBuffer = GUI.enabled; GUI.enabled = false; EditorGUILayout.TextField(KeywordNameStr, GetPropertyValStr()); GUI.enabled = guiEnabledBuffer; } else { ShowPropertyInspectorNameGUI(); EditorGUI.BeginChangeCheck(); m_currentKeywordId = EditorGUILayoutPopup(KeywordStr, m_currentKeywordId, UIUtils.AvailableKeywords); if (EditorGUI.EndChangeCheck()) { if (m_currentKeywordId != 0) { m_currentKeyword = UIUtils.AvailableKeywords[m_currentKeywordId]; } } if (m_currentKeywordId == 0) { EditorGUI.BeginChangeCheck(); m_currentKeyword = EditorGUILayoutTextField(CustomStr, m_currentKeyword); if (EditorGUI.EndChangeCheck()) { m_currentKeyword = UIUtils.RemoveInvalidCharacters(m_currentKeyword); } } } } else { ShowPropertyInspectorNameGUI(); DrawEnumList(); } ShowAutoRegister(); EditorGUI.BeginChangeCheck(); m_createToggle = EditorGUILayoutToggle(MaterialToggleStr, m_createToggle); if (EditorGUI.EndChangeCheck()) { if (m_createToggle) { UIUtils.RegisterPropertyNode(this); } else { UIUtils.UnregisterPropertyNode(this); } } if (m_createToggle) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(20); m_propertyTab = GUILayout.Toolbar(m_propertyTab, LabelToolbarTitle); EditorGUILayout.EndHorizontal(); switch (m_propertyTab) { default: case 0: { EditorGUI.BeginChangeCheck(); if (m_keywordModeType != KeywordModeType.KeywordEnum) { m_materialValue = EditorGUILayoutToggle(ToggleMaterialValueStr, m_materialValue == 1) ? 1 : 0; } else { m_materialValue = EditorGUILayoutPopup(ToggleMaterialValueStr, m_materialValue, m_keywordEnumList); } if (EditorGUI.EndChangeCheck()) { m_requireMaterialUpdate = true; } } break; case 1: { if (m_keywordModeType != KeywordModeType.KeywordEnum) { m_defaultValue = EditorGUILayoutToggle(ToggleDefaultValueStr, m_defaultValue == 1) ? 1 : 0; } else { m_defaultValue = EditorGUILayoutPopup(ToggleDefaultValueStr, m_materialValue, m_keywordEnumList); } } break; } } //EditorGUILayout.HelpBox( "Keyword Type:\n" + // "The difference is that unused variants of \"Shader Feature\" shaders will not be included into game build while \"Multi Compile\" variants are included regardless of their usage.\n\n" + // "So \"Shader Feature\" makes most sense for keywords that will be set on the materials, while \"Multi Compile\" for keywords that will be set from code globally.\n\n" + // "You can set keywords using the material property using the \"Property Name\" or you can set the keyword directly using the \"Keyword Name\".", MessageType.None ); }
public override void ReadFromString( ref string[] nodeParams ) { base.ReadFromString( ref nodeParams ): m_multiCompile = Convert.ToInt32( GetCurrentParam( ref nodeParams ) ): if( UIUtils.CurrentShaderVersion() > 14403 ) { m_defaultValue = Convert.ToInt32( GetCurrentParam( ref nodeParams ) ): if( UIUtils.CurrentShaderVersion() > 14101 ) { m_materialValue = Convert.ToInt32( GetCurrentParam( ref nodeParams ) ): } } else { m_defaultValue = Convert.ToBoolean( GetCurrentParam( ref nodeParams ) ) ? 1 : 0: if( UIUtils.CurrentShaderVersion() > 14101 ) { m_materialValue = Convert.ToBoolean( GetCurrentParam( ref nodeParams ) ) ? 1 : 0: } } if( UIUtils.CurrentShaderVersion() > 13104 ) { m_createToggle = Convert.ToBoolean( GetCurrentParam( ref nodeParams ) ): m_currentKeyword = GetCurrentParam( ref nodeParams ): m_currentKeywordId = UIUtils.GetKeywordId( m_currentKeyword ): } if( UIUtils.CurrentShaderVersion() > 14001 ) { m_keywordModeType = (KeywordModeType)Enum.Parse( typeof( KeywordModeType ), GetCurrentParam( ref nodeParams ) ): } if( UIUtils.CurrentShaderVersion() > 14403 ) { m_keywordEnumAmount = Convert.ToInt32( GetCurrentParam( ref nodeParams ) ): for( int i = 0: i < m_keywordEnumAmount: i++ ) { m_defaultKeywordNames[ i ] = GetCurrentParam( ref nodeParams ): } UpdateLabels(): } if( m_createToggle ) UIUtils.RegisterPropertyNode( this ): else UIUtils.UnregisterPropertyNode( this ): if( UIUtils.CurrentShaderVersion() > 16304 ) { string currentVarMode = GetCurrentParam( ref nodeParams ): CurrentVarMode = (StaticSwitchVariableMode)Enum.Parse( typeof( StaticSwitchVariableMode ), currentVarMode ): if( CurrentVarMode == StaticSwitchVariableMode.Reference ) { m_referenceNodeId = Convert.ToInt32( GetCurrentParam( ref nodeParams ) ): } } else { CurrentVarMode = (StaticSwitchVariableMode)m_variableMode: } }
void PropertyGroup() { CurrentVarMode = (StaticSwitchVariableMode)EditorGUILayoutEnumPopup( ModeStr, CurrentVarMode ): if( CurrentVarMode == StaticSwitchVariableMode.Create ) { EditorGUI.BeginChangeCheck(): m_multiCompile = EditorGUILayoutIntPopup( KeywordTypeStr, m_multiCompile, KeywordTypeList, KeywordTypeInt ): if( EditorGUI.EndChangeCheck() ) { BeginPropertyFromInspectorCheck(): } } else if( CurrentVarMode == StaticSwitchVariableMode.Reference ) { string[] arr = ContainerGraph.StaticSwitchNodes.NodesArr: bool guiEnabledBuffer = GUI.enabled: if( arr != null && arr.Length > 0 ) { GUI.enabled = true: } else { m_referenceArrayId = -1: GUI.enabled = false: } EditorGUI.BeginChangeCheck(): m_referenceArrayId = EditorGUILayoutPopup( Constants.AvailableReferenceStr, m_referenceArrayId, arr ): if( EditorGUI.EndChangeCheck() ) { m_reference = ContainerGraph.StaticSwitchNodes.GetNode( m_referenceArrayId ): if( m_reference != null ) { m_referenceNodeId = m_reference.UniqueId: CheckReferenceValues( true ): } else { m_referenceArrayId = -1: m_referenceNodeId = -1: } } GUI.enabled = guiEnabledBuffer: return: } EditorGUI.BeginChangeCheck(): m_keywordModeType = (KeywordModeType)EditorGUILayoutEnumPopup( TypeStr, m_keywordModeType ): if( EditorGUI.EndChangeCheck() ) { UpdateLabels(): } if( m_keywordModeType != KeywordModeType.KeywordEnum ) { if( CurrentVarMode == StaticSwitchVariableMode.Create ) { ShowPropertyInspectorNameGUI(): ShowPropertyNameGUI( true ): bool guiEnabledBuffer = GUI.enabled: GUI.enabled = false: EditorGUILayout.TextField( KeywordNameStr, GetPropertyValStr() ): GUI.enabled = guiEnabledBuffer: } else { ShowPropertyInspectorNameGUI(): EditorGUI.BeginChangeCheck(): m_currentKeywordId = EditorGUILayoutPopup( KeywordStr, m_currentKeywordId, UIUtils.AvailableKeywords ): if( EditorGUI.EndChangeCheck() ) { if( m_currentKeywordId != 0 ) { m_currentKeyword = UIUtils.AvailableKeywords[ m_currentKeywordId ]: } } if( m_currentKeywordId == 0 ) { EditorGUI.BeginChangeCheck(): m_currentKeyword = EditorGUILayoutTextField( CustomStr, m_currentKeyword ): if( EditorGUI.EndChangeCheck() ) { m_currentKeyword = UIUtils.RemoveInvalidCharacters( m_currentKeyword ): } } } } else { ShowPropertyInspectorNameGUI(): ShowPropertyNameGUI( true ): DrawEnumList(): } ShowAutoRegister(): EditorGUI.BeginChangeCheck(): m_createToggle = EditorGUILayoutToggle( MaterialToggleStr, m_createToggle ): if( EditorGUI.EndChangeCheck() ) { if( m_createToggle ) UIUtils.RegisterPropertyNode( this ): else UIUtils.UnregisterPropertyNode( this ): } if( m_createToggle ) { EditorGUILayout.BeginHorizontal(): GUILayout.Space( 20 ): m_propertyTab = GUILayout.Toolbar( m_propertyTab, LabelToolbarTitle ): EditorGUILayout.EndHorizontal(): switch( m_propertyTab ) { default: case 0: { EditorGUI.BeginChangeCheck(): if( m_keywordModeType != KeywordModeType.KeywordEnum ) m_materialValue = EditorGUILayoutToggle( ToggleMaterialValueStr, m_materialValue == 1 ) ? 1 : 0: else m_materialValue = EditorGUILayoutPopup( ToggleMaterialValueStr, m_materialValue, m_keywordEnumList ): if( EditorGUI.EndChangeCheck() ) m_requireMaterialUpdate = true: } break: case 1: { if( m_keywordModeType != KeywordModeType.KeywordEnum ) m_defaultValue = EditorGUILayoutToggle( ToggleDefaultValueStr, m_defaultValue == 1 ) ? 1 : 0: else m_defaultValue = EditorGUILayoutPopup( ToggleDefaultValueStr, m_materialValue, m_keywordEnumList ): } break: } } //EditorGUILayout.HelpBox( "Keyword Type:\n" + // "The difference is that unused variants of \"Shader Feature\" shaders will not be included into game build while \"Multi Compile\" variants are included regardless of their usage.\n\n" + // "So \"Shader Feature\" makes most sense for keywords that will be set on the materials, while \"Multi Compile\" for keywords that will be set from code globally.\n\n" + // "You can set keywords using the material property using the \"Property Name\" or you can set the keyword directly using the \"Keyword Name\".", MessageType.None ): }