summaryrefslogtreecommitdiffstats
path: root/editor/plugins/visual_shader_editor_plugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/plugins/visual_shader_editor_plugin.cpp')
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp27
1 files changed, 20 insertions, 7 deletions
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index 2da9d66d9a..cd80273d67 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -1509,17 +1509,18 @@ Vector2 VisualShaderEditor::selection_center;
List<VisualShaderEditor::CopyItem> VisualShaderEditor::copy_items_buffer;
List<VisualShader::Connection> VisualShaderEditor::copy_connections_buffer;
-void VisualShaderEditor::edit(VisualShader *p_visual_shader) {
+void VisualShaderEditor::edit_shader(const Ref<Shader> &p_shader) {
bool changed = false;
- if (p_visual_shader) {
+ VisualShader *visual_shader_ptr = Object::cast_to<VisualShader>(p_shader.ptr());
+ if (visual_shader_ptr) {
if (visual_shader.is_null()) {
changed = true;
} else {
- if (visual_shader.ptr() != p_visual_shader) {
+ if (visual_shader.ptr() != visual_shader_ptr) {
changed = true;
}
}
- visual_shader = Ref<VisualShader>(p_visual_shader);
+ visual_shader = p_shader;
graph_plugin->register_shader(visual_shader.ptr());
visual_shader->connect_changed(callable_mp(this, &VisualShaderEditor::_update_preview));
@@ -1546,6 +1547,19 @@ void VisualShaderEditor::edit(VisualShader *p_visual_shader) {
}
}
+void VisualShaderEditor::apply_shaders() {
+ // Stub. TODO: Implement apply_shaders in visual shaders for parity with text shaders.
+}
+
+bool VisualShaderEditor::is_unsaved() const {
+ // Stub. TODO: Implement is_unsaved in visual shaders for parity with text shaders.
+ return false;
+}
+
+void VisualShaderEditor::save_external_data(const String &p_str) {
+ ResourceSaver::save(visual_shader, visual_shader->get_path());
+}
+
void VisualShaderEditor::validate_script() {
if (visual_shader.is_valid()) {
_update_nodes();
@@ -6054,8 +6068,7 @@ VisualShaderEditor::VisualShaderEditor() {
graph = memnew(GraphEdit);
graph->get_menu_hbox()->set_h_size_flags(SIZE_EXPAND_FILL);
- graph->set_v_size_flags(SIZE_EXPAND_FILL);
- graph->set_h_size_flags(SIZE_EXPAND_FILL);
+ graph->set_anchors_and_offsets_preset(Control::PRESET_FULL_RECT);
graph->set_grid_pattern(GraphEdit::GridPattern::GRID_PATTERN_DOTS);
int grid_pattern = EDITOR_GET("editors/visual_editors/grid_pattern");
graph->set_grid_pattern((GraphEdit::GridPattern)grid_pattern);
@@ -7562,7 +7575,7 @@ void EditorPropertyVisualShaderMode::_option_selected(int p_which) {
if (!shader_editor) {
return;
}
- VisualShaderEditor *editor = shader_editor->get_visual_shader_editor(visual_shader);
+ VisualShaderEditor *editor = Object::cast_to<VisualShaderEditor>(shader_editor->get_shader_editor(visual_shader));
if (!editor) {
return;
}