summaryrefslogtreecommitdiffstats
path: root/editor/shader_create_dialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/shader_create_dialog.cpp')
-rw-r--r--editor/shader_create_dialog.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/editor/shader_create_dialog.cpp b/editor/shader_create_dialog.cpp
index 8d77b14ab0..6657aa6121 100644
--- a/editor/shader_create_dialog.cpp
+++ b/editor/shader_create_dialog.cpp
@@ -243,7 +243,12 @@ void fog() {
emit_signal(SNAME("shader_include_created"), shader_inc);
} else {
- if (!is_built_in) {
+ if (is_built_in) {
+ Node *edited_scene = get_tree()->get_edited_scene_root();
+ if (likely(edited_scene)) {
+ shader->set_path(edited_scene->get_scene_file_path() + "::");
+ }
+ } else {
String lpath = ProjectSettings::get_singleton()->localize_path(file_path->get_text());
shader->set_path(lpath);
@@ -277,7 +282,7 @@ void ShaderCreateDialog::_load_exist() {
void ShaderCreateDialog::_type_changed(int p_language) {
current_type = p_language;
- ShaderTypeData shader_type_data = type_data[p_language];
+ ShaderTypeData shader_type_data = type_data.get(p_language);
String selected_ext = "." + shader_type_data.default_extension;
String path = file_path->get_text();
@@ -337,7 +342,7 @@ void ShaderCreateDialog::_browse_path() {
file_browse->set_disable_overwrite_warning(true);
file_browse->clear_filters();
- List<String> extensions = type_data[type_menu->get_selected()].extensions;
+ List<String> extensions = type_data.get(type_menu->get_selected()).extensions;
for (const String &E : extensions) {
file_browse->add_filter("*." + E);
@@ -392,7 +397,7 @@ void ShaderCreateDialog::_path_submitted(const String &p_path) {
void ShaderCreateDialog::config(const String &p_base_path, bool p_built_in_enabled, bool p_load_enabled, int p_preferred_type, int p_preferred_mode) {
if (!p_base_path.is_empty()) {
initial_base_path = p_base_path.get_basename();
- file_path->set_text(initial_base_path + "." + type_data[type_menu->get_selected()].default_extension);
+ file_path->set_text(initial_base_path + "." + type_data.get(type_menu->get_selected()).default_extension);
current_type = type_menu->get_selected();
} else {
initial_base_path = "";
@@ -445,8 +450,9 @@ String ShaderCreateDialog::_validate_path(const String &p_path) {
String extension = p.get_extension();
HashSet<String> extensions;
- for (int i = 0; i < SHADER_TYPE_MAX; i++) {
- for (const String &ext : type_data[i].extensions) {
+ List<ShaderCreateDialog::ShaderTypeData>::ConstIterator itr = type_data.begin();
+ for (int i = 0; i < SHADER_TYPE_MAX; ++itr, ++i) {
+ for (const String &ext : itr->extensions) {
if (!extensions.has(ext)) {
extensions.insert(ext);
}
@@ -459,7 +465,7 @@ String ShaderCreateDialog::_validate_path(const String &p_path) {
for (const String &ext : extensions) {
if (ext.nocasecmp_to(extension) == 0) {
found = true;
- for (const String &type_ext : type_data[current_type].extensions) {
+ for (const String &type_ext : type_data.get(current_type).extensions) {
if (type_ext.nocasecmp_to(extension) == 0) {
match = true;
break;
@@ -631,14 +637,14 @@ ShaderCreateDialog::ShaderCreateDialog() {
HBoxContainer *hb = memnew(HBoxContainer);
hb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
- hb->connect("sort_children", callable_mp(this, &ShaderCreateDialog::_path_hbox_sorted));
+ hb->connect(SceneStringName(sort_children), callable_mp(this, &ShaderCreateDialog::_path_hbox_sorted));
file_path = memnew(LineEdit);
file_path->connect("text_changed", callable_mp(this, &ShaderCreateDialog::_path_changed));
file_path->set_h_size_flags(Control::SIZE_EXPAND_FILL);
hb->add_child(file_path);
register_text_enter(file_path);
path_button = memnew(Button);
- path_button->connect("pressed", callable_mp(this, &ShaderCreateDialog::_browse_path));
+ path_button->connect(SceneStringName(pressed), callable_mp(this, &ShaderCreateDialog::_browse_path));
hb->add_child(path_button);
gc->add_child(memnew(Label(TTR("Path:"))));
gc->add_child(hb);