summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Roubinsky <chaosus89@gmail.com>2020-03-20 09:35:54 +0300
committerGitHub <noreply@github.com>2020-03-20 09:35:54 +0300
commitb0aecb466dbc8a8c67f8aefb8277447f7603e9a5 (patch)
tree37b6db7df2d802a177ae8aaf69326523c0d9b9ff
parent1a532d53ccfd11cae7efdda1d406fd26da5cdb1e (diff)
parent523dae6bbae303cba688846e8a7a67a02db38725 (diff)
Merge pull request #37171 from Chaosus/shader_fix_time
Fix shader TIME auto-completion
-rw-r--r--servers/visual/shader_language.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp
index 713b54e1ba..084ade8855 100644
--- a/servers/visual/shader_language.cpp
+++ b/servers/visual/shader_language.cpp
@@ -6722,18 +6722,27 @@ Error ShaderLanguage::complete(const String &p_code, const Map<StringName, Funct
block = block->parent_block;
}
- if (comp_ident && skip_function != StringName() && p_functions.has(skip_function)) {
+ if (comp_ident) {
+ if (p_functions.has("global")) {
+ for (Map<StringName, BuiltInInfo>::Element *E = p_functions["global"].built_ins.front(); E; E = E->next()) {
+ ScriptCodeCompletionOption::Kind kind = ScriptCodeCompletionOption::KIND_MEMBER;
+ if (E->get().constant) {
+ kind = ScriptCodeCompletionOption::KIND_CONSTANT;
+ }
+ matches.insert(E->key(), kind);
+ }
+ }
- for (Map<StringName, BuiltInInfo>::Element *E = p_functions[skip_function].built_ins.front(); E; E = E->next()) {
- ScriptCodeCompletionOption::Kind kind = ScriptCodeCompletionOption::KIND_MEMBER;
- if (E->get().constant) {
- kind = ScriptCodeCompletionOption::KIND_CONSTANT;
+ if (skip_function != StringName() && p_functions.has(skip_function)) {
+ for (Map<StringName, BuiltInInfo>::Element *E = p_functions[skip_function].built_ins.front(); E; E = E->next()) {
+ ScriptCodeCompletionOption::Kind kind = ScriptCodeCompletionOption::KIND_MEMBER;
+ if (E->get().constant) {
+ kind = ScriptCodeCompletionOption::KIND_CONSTANT;
+ }
+ matches.insert(E->key(), kind);
}
- matches.insert(E->key(), kind);
}
- }
- if (comp_ident) {
for (const Map<StringName, ShaderNode::Varying>::Element *E = shader->varyings.front(); E; E = E->next()) {
matches.insert(E->key(), ScriptCodeCompletionOption::KIND_VARIABLE);
}