summaryrefslogtreecommitdiffstats
path: root/scene
diff options
context:
space:
mode:
Diffstat (limited to 'scene')
-rw-r--r--scene/gui/file_dialog.cpp8
-rw-r--r--scene/gui/menu_bar.cpp86
-rw-r--r--scene/gui/menu_bar.h2
-rw-r--r--scene/main/viewport.cpp1
-rw-r--r--scene/main/viewport.h1
-rw-r--r--scene/resources/compressed_texture.h24
-rw-r--r--scene/resources/resource_format_text.h30
-rw-r--r--scene/resources/shader.h14
-rw-r--r--scene/resources/shader_include.h14
9 files changed, 103 insertions, 77 deletions
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index 40ac87160c..c344272f38 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -197,15 +197,15 @@ void FileDialog::_notification(int p_what) {
dir_up->end_bulk_theme_override();
dir_prev->begin_bulk_theme_override();
- dir_prev->add_theme_color_override("icon_color_normal", theme_cache.icon_normal_color);
- dir_prev->add_theme_color_override("icon_color_hover", theme_cache.icon_hover_color);
+ dir_prev->add_theme_color_override("icon_normal_color", theme_cache.icon_normal_color);
+ dir_prev->add_theme_color_override("icon_hover_color", theme_cache.icon_hover_color);
dir_prev->add_theme_color_override("icon_focus_color", theme_cache.icon_focus_color);
dir_prev->add_theme_color_override("icon_color_pressed", theme_cache.icon_pressed_color);
dir_prev->end_bulk_theme_override();
dir_next->begin_bulk_theme_override();
- dir_next->add_theme_color_override("icon_color_normal", theme_cache.icon_normal_color);
- dir_next->add_theme_color_override("icon_color_hover", theme_cache.icon_hover_color);
+ dir_next->add_theme_color_override("icon_normal_color", theme_cache.icon_normal_color);
+ dir_next->add_theme_color_override("icon_hover_color", theme_cache.icon_hover_color);
dir_next->add_theme_color_override("icon_focus_color", theme_cache.icon_focus_color);
dir_next->add_theme_color_override("icon_color_pressed", theme_cache.icon_pressed_color);
dir_next->end_bulk_theme_override();
diff --git a/scene/gui/menu_bar.cpp b/scene/gui/menu_bar.cpp
index 8eb455d0ac..2ce12794a7 100644
--- a/scene/gui/menu_bar.cpp
+++ b/scene/gui/menu_bar.cpp
@@ -236,12 +236,12 @@ void MenuBar::bind_global_menu() {
RID submenu_rid = popups[i]->bind_global_menu();
if (!popups[i]->is_system_menu()) {
int index = nmenu->add_submenu_item(main_menu, menu_cache[i].name, submenu_rid, global_menu_tag + "#" + itos(i), global_start_idx + i);
- menu_cache.write[i].global_index = index;
+ menu_cache.write[i].submenu_rid = submenu_rid;
nmenu->set_item_hidden(main_menu, index, menu_cache[i].hidden);
nmenu->set_item_disabled(main_menu, index, menu_cache[i].disabled);
nmenu->set_item_tooltip(main_menu, index, menu_cache[i].tooltip);
} else {
- menu_cache.write[i].global_index = -1;
+ menu_cache.write[i].submenu_rid = RID();
}
}
}
@@ -257,11 +257,14 @@ void MenuBar::unbind_global_menu() {
Vector<PopupMenu *> popups = _get_popups();
for (int i = menu_cache.size() - 1; i >= 0; i--) {
if (!popups[i]->is_system_menu()) {
- popups[i]->unbind_global_menu();
- if (menu_cache[i].global_index >= 0) {
- nmenu->remove_item(main_menu, menu_cache[i].global_index);
+ if (menu_cache[i].submenu_rid.is_valid()) {
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[i].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->remove_item(main_menu, item_idx);
+ }
}
- menu_cache.write[i].global_index = -1;
+ popups[i]->unbind_global_menu();
+ menu_cache.write[i].submenu_rid = RID();
}
}
@@ -292,8 +295,11 @@ void MenuBar::_notification(int p_what) {
RID main_menu = is_global ? nmenu->get_system_menu(NativeMenu::MAIN_MENU_ID) : RID();
for (int i = 0; i < menu_cache.size(); i++) {
shape(menu_cache.write[i]);
- if (is_global && menu_cache[i].global_index >= 0) {
- nmenu->set_item_text(main_menu, menu_cache[i].global_index, atr(menu_cache[i].name));
+ if (is_global && menu_cache[i].submenu_rid.is_valid()) {
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[i].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->set_item_text(main_menu, item_idx, atr(menu_cache[i].name));
+ }
}
}
} break;
@@ -500,8 +506,11 @@ void MenuBar::_refresh_menu_names() {
if (!popups[i]->has_meta("_menu_name") && String(popups[i]->get_name()) != get_menu_title(i)) {
menu_cache.write[i].name = popups[i]->get_name();
shape(menu_cache.write[i]);
- if (is_global && menu_cache[i].global_index >= 0) {
- nmenu->set_item_text(main_menu, menu_cache[i].global_index, atr(menu_cache[i].name));
+ if (is_global && menu_cache[i].submenu_rid.is_valid()) {
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[i].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->set_item_text(main_menu, item_idx, atr(menu_cache[i].name));
+ }
}
}
}
@@ -554,8 +563,8 @@ void MenuBar::add_child_notify(Node *p_child) {
RID submenu_rid = pm->bind_global_menu();
if (!pm->is_system_menu()) {
- int index = nmenu->add_submenu_item(main_menu, atr(menu.name), submenu_rid, global_menu_tag + "#" + itos(menu_cache.size() - 1), _find_global_start_index() + menu_cache.size() - 1);
- menu_cache.write[menu_cache.size() - 1].global_index = index;
+ nmenu->add_submenu_item(main_menu, atr(menu.name), submenu_rid, global_menu_tag + "#" + itos(menu_cache.size() - 1), _find_global_start_index() + menu_cache.size() - 1);
+ menu_cache.write[menu_cache.size() - 1].submenu_rid = submenu_rid;
}
}
update_minimum_size();
@@ -589,13 +598,14 @@ void MenuBar::move_child_notify(Node *p_child) {
RID main_menu = nmenu->get_system_menu(NativeMenu::MAIN_MENU_ID);
int global_start = _find_global_start_index();
- if (menu.global_index >= 0) {
- nmenu->remove_item(main_menu, menu.global_index);
+ if (menu.submenu_rid.is_valid()) {
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu.submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->remove_item(main_menu, item_idx);
+ }
}
if (new_idx != -1) {
- RID submenu_rid = pm->bind_global_menu();
- int index = nmenu->add_submenu_item(main_menu, atr(menu.name), submenu_rid, global_menu_tag + "#" + itos(new_idx), global_start + new_idx);
- menu_cache.write[new_idx].global_index = index;
+ nmenu->add_submenu_item(main_menu, atr(menu.name), menu.submenu_rid, global_menu_tag + "#" + itos(new_idx), global_start + new_idx);
}
}
}
@@ -611,20 +621,22 @@ void MenuBar::remove_child_notify(Node *p_child) {
int idx = get_menu_idx_from_control(pm);
- menu_cache.remove_at(idx);
-
if (!global_menu_tag.is_empty()) {
if (!pm->is_system_menu()) {
- pm->unbind_global_menu();
- if (menu_cache[idx].global_index >= 0) {
+ if (menu_cache[idx].submenu_rid.is_valid()) {
NativeMenu *nmenu = NativeMenu::get_singleton();
RID main_menu = nmenu->get_system_menu(NativeMenu::MAIN_MENU_ID);
- nmenu->remove_item(main_menu, menu_cache[idx].global_index);
- menu_cache.write[idx].global_index = -1;
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[idx].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->remove_item(main_menu, item_idx);
+ }
}
+ pm->unbind_global_menu();
}
}
+ menu_cache.remove_at(idx);
+
p_child->remove_meta("_menu_name");
p_child->remove_meta("_menu_tooltip");
@@ -817,10 +829,13 @@ void MenuBar::set_menu_title(int p_menu, const String &p_title) {
}
menu_cache.write[p_menu].name = p_title;
shape(menu_cache.write[p_menu]);
- if (!global_menu_tag.is_empty() && menu_cache[p_menu].global_index >= 0) {
+ if (!global_menu_tag.is_empty() && menu_cache[p_menu].submenu_rid.is_valid()) {
NativeMenu *nmenu = NativeMenu::get_singleton();
RID main_menu = nmenu->get_system_menu(NativeMenu::MAIN_MENU_ID);
- nmenu->set_item_text(main_menu, menu_cache[p_menu].global_index, atr(menu_cache[p_menu].name));
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[p_menu].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->set_item_text(main_menu, item_idx, atr(menu_cache[p_menu].name));
+ }
}
update_minimum_size();
}
@@ -835,10 +850,13 @@ void MenuBar::set_menu_tooltip(int p_menu, const String &p_tooltip) {
PopupMenu *pm = get_menu_popup(p_menu);
pm->set_meta("_menu_tooltip", p_tooltip);
menu_cache.write[p_menu].tooltip = p_tooltip;
- if (!global_menu_tag.is_empty() && menu_cache[p_menu].global_index >= 0) {
+ if (!global_menu_tag.is_empty() && menu_cache[p_menu].submenu_rid.is_valid()) {
NativeMenu *nmenu = NativeMenu::get_singleton();
RID main_menu = nmenu->get_system_menu(NativeMenu::MAIN_MENU_ID);
- nmenu->set_item_tooltip(main_menu, menu_cache[p_menu].global_index, p_tooltip);
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[p_menu].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->set_item_tooltip(main_menu, item_idx, p_tooltip);
+ }
}
}
@@ -850,10 +868,13 @@ String MenuBar::get_menu_tooltip(int p_menu) const {
void MenuBar::set_menu_disabled(int p_menu, bool p_disabled) {
ERR_FAIL_INDEX(p_menu, menu_cache.size());
menu_cache.write[p_menu].disabled = p_disabled;
- if (!global_menu_tag.is_empty() && menu_cache[p_menu].global_index >= 0) {
+ if (!global_menu_tag.is_empty() && menu_cache[p_menu].submenu_rid.is_valid()) {
NativeMenu *nmenu = NativeMenu::get_singleton();
RID main_menu = nmenu->get_system_menu(NativeMenu::MAIN_MENU_ID);
- nmenu->set_item_disabled(main_menu, menu_cache[p_menu].global_index, p_disabled);
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[p_menu].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->set_item_disabled(main_menu, item_idx, p_disabled);
+ }
}
}
@@ -865,10 +886,13 @@ bool MenuBar::is_menu_disabled(int p_menu) const {
void MenuBar::set_menu_hidden(int p_menu, bool p_hidden) {
ERR_FAIL_INDEX(p_menu, menu_cache.size());
menu_cache.write[p_menu].hidden = p_hidden;
- if (!global_menu_tag.is_empty() && menu_cache[p_menu].global_index >= 0) {
+ if (!global_menu_tag.is_empty() && menu_cache[p_menu].submenu_rid.is_valid()) {
NativeMenu *nmenu = NativeMenu::get_singleton();
RID main_menu = nmenu->get_system_menu(NativeMenu::MAIN_MENU_ID);
- nmenu->set_item_hidden(main_menu, menu_cache[p_menu].global_index, p_hidden);
+ int item_idx = nmenu->find_item_index_with_submenu(main_menu, menu_cache[p_menu].submenu_rid);
+ if (item_idx >= 0) {
+ nmenu->set_item_hidden(main_menu, item_idx, p_hidden);
+ }
}
update_minimum_size();
}
diff --git a/scene/gui/menu_bar.h b/scene/gui/menu_bar.h
index 631b791e1b..04f6afc2fa 100644
--- a/scene/gui/menu_bar.h
+++ b/scene/gui/menu_bar.h
@@ -55,7 +55,7 @@ class MenuBar : public Control {
Ref<TextLine> text_buf;
bool hidden = false;
bool disabled = false;
- int global_index = -1;
+ RID submenu_rid;
Menu(const String &p_name) {
name = p_name;
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 41f3ff108c..4e1d2b3983 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -4841,6 +4841,7 @@ void Viewport::_bind_methods() {
BIND_ENUM_CONSTANT(RENDER_INFO_TYPE_VISIBLE);
BIND_ENUM_CONSTANT(RENDER_INFO_TYPE_SHADOW);
+ BIND_ENUM_CONSTANT(RENDER_INFO_TYPE_CANVAS);
BIND_ENUM_CONSTANT(RENDER_INFO_TYPE_MAX);
BIND_ENUM_CONSTANT(DEBUG_DRAW_DISABLED);
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 29ccdc5426..21832a454c 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -138,6 +138,7 @@ public:
enum RenderInfoType {
RENDER_INFO_TYPE_VISIBLE,
RENDER_INFO_TYPE_SHADOW,
+ RENDER_INFO_TYPE_CANVAS,
RENDER_INFO_TYPE_MAX
};
diff --git a/scene/resources/compressed_texture.h b/scene/resources/compressed_texture.h
index 5297d79cfe..439f7c097e 100644
--- a/scene/resources/compressed_texture.h
+++ b/scene/resources/compressed_texture.h
@@ -113,10 +113,10 @@ public:
class ResourceFormatLoaderCompressedTexture2D : public ResourceFormatLoader {
public:
- virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual String get_resource_type(const String &p_path) const;
+ virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE) override;
+ virtual void get_recognized_extensions(List<String> *p_extensions) const override;
+ virtual bool handles_type(const String &p_type) const override;
+ virtual String get_resource_type(const String &p_path) const override;
};
class CompressedTextureLayered : public TextureLayered {
@@ -178,10 +178,10 @@ public:
class ResourceFormatLoaderCompressedTextureLayered : public ResourceFormatLoader {
public:
- virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual String get_resource_type(const String &p_path) const;
+ virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE) override;
+ virtual void get_recognized_extensions(List<String> *p_extensions) const override;
+ virtual bool handles_type(const String &p_type) const override;
+ virtual String get_resource_type(const String &p_path) const override;
};
class CompressedTexture2DArray : public CompressedTextureLayered {
@@ -264,10 +264,10 @@ public:
class ResourceFormatLoaderCompressedTexture3D : public ResourceFormatLoader {
public:
- virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual String get_resource_type(const String &p_path) const;
+ virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE) override;
+ virtual void get_recognized_extensions(List<String> *p_extensions) const override;
+ virtual bool handles_type(const String &p_type) const override;
+ virtual String get_resource_type(const String &p_path) const override;
};
#endif // COMPRESSED_TEXTURE_H
diff --git a/scene/resources/resource_format_text.h b/scene/resources/resource_format_text.h
index 02898ce984..c05b7a24e1 100644
--- a/scene/resources/resource_format_text.h
+++ b/scene/resources/resource_format_text.h
@@ -139,17 +139,17 @@ public:
class ResourceFormatLoaderText : public ResourceFormatLoader {
public:
static ResourceFormatLoaderText *singleton;
- virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
- virtual void get_recognized_extensions_for_type(const String &p_type, List<String> *p_extensions) const;
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual void get_classes_used(const String &p_path, HashSet<StringName> *r_classes);
-
- virtual String get_resource_type(const String &p_path) const;
- virtual String get_resource_script_class(const String &p_path) const;
- virtual ResourceUID::ID get_resource_uid(const String &p_path) const;
- virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
- virtual Error rename_dependencies(const String &p_path, const HashMap<String, String> &p_map);
+ virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE) override;
+ virtual void get_recognized_extensions_for_type(const String &p_type, List<String> *p_extensions) const override;
+ virtual void get_recognized_extensions(List<String> *p_extensions) const override;
+ virtual bool handles_type(const String &p_type) const override;
+ virtual void get_classes_used(const String &p_path, HashSet<StringName> *r_classes) override;
+
+ virtual String get_resource_type(const String &p_path) const override;
+ virtual String get_resource_script_class(const String &p_path) const override;
+ virtual ResourceUID::ID get_resource_uid(const String &p_path) const override;
+ virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false) override;
+ virtual Error rename_dependencies(const String &p_path, const HashMap<String, String> &p_map) override;
static Error convert_file_to_binary(const String &p_src_path, const String &p_dst_path);
@@ -199,10 +199,10 @@ public:
class ResourceFormatSaverText : public ResourceFormatSaver {
public:
static ResourceFormatSaverText *singleton;
- virtual Error save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags = 0);
- virtual Error set_uid(const String &p_path, ResourceUID::ID p_uid);
- virtual bool recognize(const Ref<Resource> &p_resource) const;
- virtual void get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const;
+ virtual Error save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags = 0) override;
+ virtual Error set_uid(const String &p_path, ResourceUID::ID p_uid) override;
+ virtual bool recognize(const Ref<Resource> &p_resource) const override;
+ virtual void get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const override;
ResourceFormatSaverText();
};
diff --git a/scene/resources/shader.h b/scene/resources/shader.h
index ca889940ef..921143c219 100644
--- a/scene/resources/shader.h
+++ b/scene/resources/shader.h
@@ -96,17 +96,17 @@ VARIANT_ENUM_CAST(Shader::Mode);
class ResourceFormatLoaderShader : public ResourceFormatLoader {
public:
- virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual String get_resource_type(const String &p_path) const;
+ virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE) override;
+ virtual void get_recognized_extensions(List<String> *p_extensions) const override;
+ virtual bool handles_type(const String &p_type) const override;
+ virtual String get_resource_type(const String &p_path) const override;
};
class ResourceFormatSaverShader : public ResourceFormatSaver {
public:
- virtual Error save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags = 0);
- virtual void get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const;
- virtual bool recognize(const Ref<Resource> &p_resource) const;
+ virtual Error save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags = 0) override;
+ virtual void get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const override;
+ virtual bool recognize(const Ref<Resource> &p_resource) const override;
};
#endif // SHADER_H
diff --git a/scene/resources/shader_include.h b/scene/resources/shader_include.h
index a8949b327e..9fb4271623 100644
--- a/scene/resources/shader_include.h
+++ b/scene/resources/shader_include.h
@@ -58,17 +58,17 @@ public:
class ResourceFormatLoaderShaderInclude : public ResourceFormatLoader {
public:
- virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE);
- virtual void get_recognized_extensions(List<String> *p_extensions) const;
- virtual bool handles_type(const String &p_type) const;
- virtual String get_resource_type(const String &p_path) const;
+ virtual Ref<Resource> load(const String &p_path, const String &p_original_path = "", Error *r_error = nullptr, bool p_use_sub_threads = false, float *r_progress = nullptr, CacheMode p_cache_mode = CACHE_MODE_REUSE) override;
+ virtual void get_recognized_extensions(List<String> *p_extensions) const override;
+ virtual bool handles_type(const String &p_type) const override;
+ virtual String get_resource_type(const String &p_path) const override;
};
class ResourceFormatSaverShaderInclude : public ResourceFormatSaver {
public:
- virtual Error save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags = 0);
- virtual void get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const;
- virtual bool recognize(const Ref<Resource> &p_resource) const;
+ virtual Error save(const Ref<Resource> &p_resource, const String &p_path, uint32_t p_flags = 0) override;
+ virtual void get_recognized_extensions(const Ref<Resource> &p_resource, List<String> *p_extensions) const override;
+ virtual bool recognize(const Ref<Resource> &p_resource) const override;
};
#endif // SHADER_INCLUDE_H