summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Rubinsky <chaosus89@gmail.com>2022-07-23 09:38:59 +0300
committerYuri Rubinsky <chaosus89@gmail.com>2022-07-23 09:38:59 +0300
commit6d992abb541d4e772ef1fbc16d0b82ca3a6b343d (patch)
treec1b6dcbe8301cb5d1cc081ef6f5ef497bca6f774
parentfe929d4787b2b11390891fb03da1dda78b18eb65 (diff)
Fix some errors after shader preprocessor PR
-rw-r--r--editor/plugins/shader_editor_plugin.cpp6
-rw-r--r--servers/rendering/shader_preprocessor.cpp44
-rw-r--r--servers/rendering/shader_preprocessor.h2
3 files changed, 12 insertions, 40 deletions
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index e7e7751f3b..4af44da35b 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -381,7 +381,7 @@ void ShaderTextEditor::_validate_script() {
//preprocessor error
ERR_FAIL_COND(err_positions.size() == 0);
- String error_text;
+ String error_text = error_pp;
int error_line = err_positions.front()->get().line;
if (err_positions.size() == 1) {
// Error in main file
@@ -1198,12 +1198,12 @@ void ShaderEditorPlugin::edit(Object *p_object) {
Ref<VisualShader> vs = es.shader;
if (vs.is_valid()) {
es.visual_shader_editor = memnew(VisualShaderEditor);
- es.visual_shader_editor->edit(vs.ptr());
shader_tabs->add_child(es.visual_shader_editor);
+ es.visual_shader_editor->edit(vs.ptr());
} else {
es.shader_editor = memnew(ShaderEditor);
- es.shader_editor->edit(s);
shader_tabs->add_child(es.shader_editor);
+ es.shader_editor->edit(s);
es.shader_editor->connect("validation_changed", callable_mp(this, &ShaderEditorPlugin::_update_shader_list_status));
}
}
diff --git a/servers/rendering/shader_preprocessor.cpp b/servers/rendering/shader_preprocessor.cpp
index 9623d11010..a7b274b3e2 100644
--- a/servers/rendering/shader_preprocessor.cpp
+++ b/servers/rendering/shader_preprocessor.cpp
@@ -344,41 +344,23 @@ void ShaderPreprocessor::process_directive(Tokenizer *p_tokenizer) {
}
if (directive == "if") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_if(p_tokenizer);
- }
+ process_if(p_tokenizer);
} else if (directive == "ifdef") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_ifdef(p_tokenizer);
- }
+ process_ifdef(p_tokenizer);
} else if (directive == "ifndef") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_ifndef(p_tokenizer);
- }
+ process_ifndef(p_tokenizer);
} else if (directive == "else") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_else(p_tokenizer);
- }
+ process_else(p_tokenizer);
} else if (directive == "endif") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_endif(p_tokenizer);
- }
+ process_endif(p_tokenizer);
} else if (directive == "define") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_define(p_tokenizer);
- }
+ process_define(p_tokenizer);
} else if (directive == "undef") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_undef(p_tokenizer);
- }
+ process_undef(p_tokenizer);
} else if (directive == "include") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_include(p_tokenizer);
- }
+ process_include(p_tokenizer);
} else if (directive == "pragma") {
- if (check_directive_before_type(p_tokenizer, directive)) {
- process_pragma(p_tokenizer);
- }
+ process_pragma(p_tokenizer);
} else {
set_error(RTR("Unknown directive."), p_tokenizer->get_line());
}
@@ -880,14 +862,6 @@ void ShaderPreprocessor::set_error(const String &p_error, int p_line) {
}
}
-bool ShaderPreprocessor::check_directive_before_type(Tokenizer *p_tokenizer, const String &p_directive) {
- if (p_tokenizer->get_index() < state->shader_type_pos) {
- set_error(vformat(RTR("`#%s` may not be defined before `shader_type`."), p_directive), p_tokenizer->get_line());
- return false;
- }
- return true;
-}
-
ShaderPreprocessor::Define *ShaderPreprocessor::create_define(const String &p_body) {
ShaderPreprocessor::Define *define = memnew(Define);
define->body = p_body;
diff --git a/servers/rendering/shader_preprocessor.h b/servers/rendering/shader_preprocessor.h
index 9bac706049..a93fb680dd 100644
--- a/servers/rendering/shader_preprocessor.h
+++ b/servers/rendering/shader_preprocessor.h
@@ -136,7 +136,6 @@ private:
int include_depth = 0;
String current_include;
String current_shader_type;
- int shader_type_pos = -1;
String error;
List<FilePosition> include_positions;
RBMap<String, Vector<SkippedCondition *>> skipped_conditions;
@@ -179,7 +178,6 @@ private:
String next_directive(Tokenizer *p_tokenizer, const Vector<String> &p_directives);
void add_to_output(const String &p_str);
void set_error(const String &p_error, int p_line);
- bool check_directive_before_type(Tokenizer *p_tokenizer, const String &p_directive);
static Define *create_define(const String &p_body);