Merge pull request #92576 from aaronfranke/shader-lang-editors

Make shader language editors inherit the same base class
This commit is contained in:
Rémi Verschelde 2024-08-16 23:44:57 +02:00
commit d6175a43da
No known key found for this signature in database
GPG key ID: C3336907360768E1
8 changed files with 120 additions and 61 deletions

View file

@ -1508,17 +1508,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));
@ -1545,6 +1546,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();
@ -6053,8 +6067,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);
@ -7561,7 +7574,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;
}