mirror of
https://github.com/godotengine/godot.git
synced 2024-11-25 05:33:11 +00:00
Fixed resource loader using not fully loaded scripts
This commit is contained in:
parent
7c383767a2
commit
fd5fc9f3ee
@ -1057,6 +1057,26 @@ void GDScript::_bind_methods() {
|
|||||||
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "new", &GDScript::_new, MethodInfo("new"));
|
ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "new", &GDScript::_new, MethodInfo("new"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GDScript::set_path_cache(const String &p_path) {
|
||||||
|
if (ResourceCache::has(p_path)) {
|
||||||
|
set_path(p_path, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_root_script()) {
|
||||||
|
Script::set_path_cache(p_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
String old_path = path;
|
||||||
|
path = p_path;
|
||||||
|
path_valid = true;
|
||||||
|
GDScriptCache::move_script(old_path, p_path);
|
||||||
|
|
||||||
|
for (KeyValue<StringName, Ref<GDScript>> &kv : subclasses) {
|
||||||
|
kv.value->set_path_cache(p_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GDScript::set_path(const String &p_path, bool p_take_over) {
|
void GDScript::set_path(const String &p_path, bool p_take_over) {
|
||||||
if (is_root_script()) {
|
if (is_root_script()) {
|
||||||
Script::set_path(p_path, p_take_over);
|
Script::set_path(p_path, p_take_over);
|
||||||
|
@ -300,6 +300,7 @@ public:
|
|||||||
|
|
||||||
virtual Error reload(bool p_keep_state = false) override;
|
virtual Error reload(bool p_keep_state = false) override;
|
||||||
|
|
||||||
|
virtual void set_path_cache(const String &p_path) override;
|
||||||
virtual void set_path(const String &p_path, bool p_take_over = false) override;
|
virtual void set_path(const String &p_path, bool p_take_over = false) override;
|
||||||
String get_script_path() const;
|
String get_script_path() const;
|
||||||
Error load_source_code(const String &p_path);
|
Error load_source_code(const String &p_path);
|
||||||
|
@ -311,7 +311,7 @@ Ref<GDScript> GDScriptCache::get_shallow_script(const String &p_path, Error &r_e
|
|||||||
|
|
||||||
Ref<GDScript> script;
|
Ref<GDScript> script;
|
||||||
script.instantiate();
|
script.instantiate();
|
||||||
script->set_path(p_path, true);
|
script->set_path_cache(p_path);
|
||||||
if (remapped_path.get_extension().to_lower() == "gdc") {
|
if (remapped_path.get_extension().to_lower() == "gdc") {
|
||||||
Vector<uint8_t> buffer = get_binary_tokens(remapped_path);
|
Vector<uint8_t> buffer = get_binary_tokens(remapped_path);
|
||||||
if (buffer.is_empty()) {
|
if (buffer.is_empty()) {
|
||||||
@ -358,6 +358,7 @@ Ref<GDScript> GDScriptCache::get_full_script(const String &p_path, Error &r_erro
|
|||||||
return script;
|
return script;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
script->set_path(p_path, true);
|
||||||
|
|
||||||
if (p_update_from_disk) {
|
if (p_update_from_disk) {
|
||||||
if (p_path.get_extension().to_lower() == "gdc") {
|
if (p_path.get_extension().to_lower() == "gdc") {
|
||||||
|
Loading…
Reference in New Issue
Block a user