MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / _code_complete_script

Method _code_complete_script

editor/shader/text_shader_editor.cpp:439–481  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

437}
438
439void ShaderTextEditor::_code_complete_script(const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options) {
440 List<ScriptLanguage::CodeCompletionOption> pp_options;
441 List<ScriptLanguage::CodeCompletionOption> pp_defines;
442 ShaderPreprocessor preprocessor;
443 String code;
444 String resource_path = (shader.is_valid() ? shader->get_path() : shader_inc->get_path());
445 complete_from_path = resource_path.get_base_dir();
446 if (!complete_from_path.ends_with("/")) {
447 complete_from_path += "/";
448 }
449 preprocessor.preprocess(p_code, resource_path, code, nullptr, nullptr, nullptr, nullptr, &pp_options, &pp_defines, _complete_include_paths);
450 complete_from_path = String();
451 if (pp_options.size()) {
452 for (const ScriptLanguage::CodeCompletionOption &E : pp_options) {
453 r_options->push_back(E);
454 }
455 return;
456 }
457 for (const ScriptLanguage::CodeCompletionOption &E : pp_defines) {
458 r_options->push_back(E);
459 }
460
461 ShaderLanguage sl;
462 String calltip;
463 ShaderLanguage::ShaderCompileInfo comp_info;
464 comp_info.global_shader_uniform_type_func = _get_global_shader_uniform_type;
465
466 if (shader.is_null()) {
467 comp_info.is_include = true;
468
469 sl.complete(code, comp_info, r_options, calltip);
470 get_text_editor()->set_code_hint(calltip);
471 return;
472 }
473 _check_shader_mode();
474 comp_info.functions = ShaderTypes::get_singleton()->get_functions(RenderingServer::ShaderMode(shader->get_mode()));
475 comp_info.render_modes = ShaderTypes::get_singleton()->get_modes(RenderingServer::ShaderMode(shader->get_mode()));
476 comp_info.stencil_modes = ShaderTypes::get_singleton()->get_stencil_modes(RenderingServer::ShaderMode(shader->get_mode()));
477 comp_info.shader_types = ShaderTypes::get_singleton()->get_types();
478
479 sl.complete(code, comp_info, r_options, calltip);
480 get_text_editor()->set_code_hint(calltip);
481}
482
483void ShaderTextEditor::_validate_script() {
484 emit_signal(CoreStringName(script_changed)); // Ensure to notify that it changed, so it is applied

Callers

nothing calls this directly

Calls 14

ShaderModeEnum · 0.85
get_base_dirMethod · 0.80
ends_withMethod · 0.80
preprocessMethod · 0.80
completeMethod · 0.80
set_code_hintMethod · 0.80
sizeMethod · 0.65
StringClass · 0.50
is_validMethod · 0.45
get_pathMethod · 0.45
push_backMethod · 0.45
is_nullMethod · 0.45

Tested by

no test coverage detected