@ -344,15 +344,29 @@ static Variant create_var(RS::GlobalShaderParameterType p_type) {
}
}
}
}
String ShaderGlobalsEditor : : _check_new_variable_name ( const String & p_variable_name ) {
if ( p_variable_name . is_empty ( ) ) {
return TTR ( " Name cannot be empty. " ) ;
}
if ( ! p_variable_name . is_valid_identifier ( ) ) {
return TTR ( " Name must be a valid identifier. " ) ;
}
return " " ;
}
void ShaderGlobalsEditor : : _variable_name_text_changed ( const String & p_variable_name ) {
const String & warning = _check_new_variable_name ( p_variable_name . strip_edges ( ) ) ;
variable_add - > set_tooltip_text ( warning ) ;
variable_add - > set_disabled ( ! warning . is_empty ( ) ) ;
}
void ShaderGlobalsEditor : : _variable_added ( ) {
void ShaderGlobalsEditor : : _variable_added ( ) {
String var = variable_name - > get_text ( ) . strip_edges ( ) ;
String var = variable_name - > get_text ( ) . strip_edges ( ) ;
if ( var . is_empty ( ) | | ! var . is_valid_identifier ( ) ) {
EditorNode : : get_singleton ( ) - > show_warning ( TTR ( " Please specify a valid shader uniform identifier name. " ) ) ;
return ;
}
if ( RenderingServer : : get_singleton ( ) - > global_shader_parameter_get ( var ) . get_type ( ) ! = Variant : : NIL ) {
if ( RenderingServer : : get_singleton ( ) - > global_shader_parameter_get ( var ) . get_type ( ) ! = Variant : : NIL ) {
EditorNode : : get_singleton ( ) - > show_warning ( vformat ( TTR ( " Global shader parameter '%s' already exists' " ) , var ) ) ;
EditorNode : : get_singleton ( ) - > show_warning ( vformat ( TTR ( " Global shader parameter '%s' already exists. " ) , var ) ) ;
return ;
return ;
}
}
@ -416,6 +430,10 @@ void ShaderGlobalsEditor::_notification(int p_what) {
}
}
} break ;
} break ;
case NOTIFICATION_THEME_CHANGED : {
variable_add - > set_icon ( get_editor_theme_icon ( SNAME ( " Add " ) ) ) ;
} break ;
case NOTIFICATION_PREDELETE : {
case NOTIFICATION_PREDELETE : {
inspector - > edit ( nullptr ) ;
inspector - > edit ( nullptr ) ;
} break ;
} break ;
@ -431,6 +449,9 @@ ShaderGlobalsEditor::ShaderGlobalsEditor() {
add_menu_hb - > add_child ( memnew ( Label ( TTR ( " Name: " ) ) ) ) ;
add_menu_hb - > add_child ( memnew ( Label ( TTR ( " Name: " ) ) ) ) ;
variable_name = memnew ( LineEdit ) ;
variable_name = memnew ( LineEdit ) ;
variable_name - > set_h_size_flags ( SIZE_EXPAND_FILL ) ;
variable_name - > set_h_size_flags ( SIZE_EXPAND_FILL ) ;
variable_name - > set_clear_button_enabled ( true ) ;
variable_name - > connect ( " text_changed " , callable_mp ( this , & ShaderGlobalsEditor : : _variable_name_text_changed ) ) ;
add_menu_hb - > add_child ( variable_name ) ;
add_menu_hb - > add_child ( variable_name ) ;
add_menu_hb - > add_child ( memnew ( Label ( TTR ( " Type: " ) ) ) ) ;
add_menu_hb - > add_child ( memnew ( Label ( TTR ( " Type: " ) ) ) ) ;
@ -443,6 +464,7 @@ ShaderGlobalsEditor::ShaderGlobalsEditor() {
}
}
variable_add = memnew ( Button ( TTR ( " Add " ) ) ) ;
variable_add = memnew ( Button ( TTR ( " Add " ) ) ) ;
variable_add - > set_disabled ( true ) ;
add_menu_hb - > add_child ( variable_add ) ;
add_menu_hb - > add_child ( variable_add ) ;
variable_add - > connect ( " pressed " , callable_mp ( this , & ShaderGlobalsEditor : : _variable_added ) ) ;
variable_add - > connect ( " pressed " , callable_mp ( this , & ShaderGlobalsEditor : : _variable_added ) ) ;