| 2107 | } |
| 2108 | |
| 2109 | void do_task(int i, ScriptCacheTaskToken *tokens) { |
| 2110 | Ref<Script> script = ResourceCompatLoader::custom_load(tokens[i].orig_path, "", ResourceInfo::LoadType::REAL_LOAD, nullptr, false, ResourceFormatLoader::CACHE_MODE_REPLACE); |
| 2111 | if (script.is_valid()) { |
| 2112 | tokens[i].script = script; |
| 2113 | // { |
| 2114 | // "base": &"Node", |
| 2115 | // "class": &"AudioManager", |
| 2116 | // "icon": "", |
| 2117 | // "is_abstract": false, |
| 2118 | // "is_tool": false, |
| 2119 | // "language": &"GDScript", |
| 2120 | // "path": "res://source/audio/audio_manager.gd" |
| 2121 | // } |
| 2122 | auto global_name = script->get_global_name(); |
| 2123 | |
| 2124 | if (global_name.is_empty()) { |
| 2125 | return; // don't populate the cache for this script |
| 2126 | } |
| 2127 | |
| 2128 | Ref<FakeScript> fake_script = script; |
| 2129 | String icon_path; |
| 2130 | if (fake_script.is_valid()) { |
| 2131 | tokens[i].d.set("base", fake_script->get_direct_base_type()); |
| 2132 | icon_path = fake_script->get_icon_path(); |
| 2133 | } else { |
| 2134 | auto base_script = script->get_base_script(); |
| 2135 | if (base_script.is_valid()) { |
| 2136 | tokens[i].d.set("base", base_script->get_global_name()); |
| 2137 | } else { |
| 2138 | tokens[i].d.set("base", script->get_instance_base_type()); |
| 2139 | } |
| 2140 | } |
| 2141 | tokens[i].d.set("class", script->get_global_name()); |
| 2142 | tokens[i].d.set("icon", icon_path); |
| 2143 | tokens[i].d.set("is_abstract", script->is_abstract()); |
| 2144 | tokens[i].d.set("is_tool", script->is_tool()); |
| 2145 | tokens[i].d.set("language", tokens[i].is_gdscript ? SNAME("GDScript") : SNAME("C#")); |
| 2146 | tokens[i].d.set("path", tokens[i].orig_path); |
| 2147 | } |
| 2148 | } |
| 2149 | }; |
| 2150 | } //namespace |
| 2151 |
no test coverage detected