From da7cf8b49fe18fa1cb53891e53f0e1f83bbd4ca6 Mon Sep 17 00:00:00 2001 From: Chaosus Date: Fri, 28 Jun 2019 14:51:51 +0300 Subject: [PATCH] Added convertor from VisualShader to Shader --- editor/editor_node.cpp | 4 +++ .../plugins/visual_shader_editor_plugin.cpp | 27 +++++++++++++++++++ editor/plugins/visual_shader_editor_plugin.h | 9 +++++++ 3 files changed, 40 insertions(+) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 3d640b4d358..83d820ff0e8 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -6342,6 +6342,10 @@ EditorNode::EditorNode() { Ref particles_mat_convert; particles_mat_convert.instance(); resource_conversion_plugins.push_back(particles_mat_convert); + + Ref vshader_convert; + vshader_convert.instance(); + resource_conversion_plugins.push_back(vshader_convert); } update_spinner_step_msec = OS::get_singleton()->get_ticks_msec(); update_spinner_step_frame = Engine::get_singleton()->get_frames_drawn(); diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index b4200d56625..5f93d33ae04 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -2764,3 +2764,30 @@ void VisualShaderNodePortPreview::_bind_methods() { VisualShaderNodePortPreview::VisualShaderNodePortPreview() { } + +////////////////////////////////// + +String VisualShaderConversionPlugin::converts_to() const { + + return "Shader"; +} + +bool VisualShaderConversionPlugin::handles(const Ref &p_resource) const { + + Ref vshader = p_resource; + return vshader.is_valid(); +} + +Ref VisualShaderConversionPlugin::convert(const Ref &p_resource) const { + + Ref vshader = p_resource; + ERR_FAIL_COND_V(!vshader.is_valid(), Ref()); + + Ref shader; + shader.instance(); + + String code = vshader->get_code(); + shader->set_code(code); + + return shader; +} diff --git a/editor/plugins/visual_shader_editor_plugin.h b/editor/plugins/visual_shader_editor_plugin.h index 49a7a21ea75..fa72b5ec296 100644 --- a/editor/plugins/visual_shader_editor_plugin.h +++ b/editor/plugins/visual_shader_editor_plugin.h @@ -302,4 +302,13 @@ public: VisualShaderNodePortPreview(); }; +class VisualShaderConversionPlugin : public EditorResourceConversionPlugin { + GDCLASS(VisualShaderConversionPlugin, EditorResourceConversionPlugin); + +public: + virtual String converts_to() const; + virtual bool handles(const Ref &p_resource) const; + virtual Ref convert(const Ref &p_resource) const; +}; + #endif // VISUAL_SHADER_EDITOR_PLUGIN_H