mirror of
https://github.com/godotengine/godot.git
synced 2024-11-10 14:12:51 +00:00
C# script reload fixed
Co-authored-by: Michael Bickel <mib@developium.net> Co-authored-by: Germanrc <german_1995a@hotmail.com>
This commit is contained in:
parent
3ae8eda1ed
commit
4a339dc8fd
@ -3009,6 +3009,7 @@ void CSharpScript::initialize_for_managed_type(Ref<CSharpScript> p_script, GDMon
|
||||
CRASH_COND(p_script->native == nullptr);
|
||||
|
||||
p_script->valid = true;
|
||||
p_script->reload_invalidated = false;
|
||||
|
||||
update_script_class_info(p_script);
|
||||
|
||||
@ -3365,13 +3366,13 @@ MethodInfo CSharpScript::get_method_info(const StringName &p_method) const {
|
||||
}
|
||||
|
||||
Error CSharpScript::reload(bool p_keep_state) {
|
||||
bool has_instances;
|
||||
{
|
||||
MutexLock lock(CSharpLanguage::get_singleton()->script_instances_mutex);
|
||||
has_instances = instances.size();
|
||||
if (!reload_invalidated) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
ERR_FAIL_COND_V(!p_keep_state && has_instances, ERR_ALREADY_IN_USE);
|
||||
// In the case of C#, reload doesn't really do any script reloading.
|
||||
// That's done separately via domain reloading.
|
||||
reload_invalidated = false;
|
||||
|
||||
GD_MONO_SCOPE_THREAD_ATTACH;
|
||||
|
||||
@ -3558,6 +3559,7 @@ void CSharpScript::_update_name() {
|
||||
void CSharpScript::_clear() {
|
||||
tool = false;
|
||||
valid = false;
|
||||
reload_invalidated = true;
|
||||
|
||||
base = nullptr;
|
||||
native = nullptr;
|
||||
|
@ -101,6 +101,7 @@ private:
|
||||
|
||||
bool tool = false;
|
||||
bool valid = false;
|
||||
bool reload_invalidated = false;
|
||||
|
||||
bool builtin;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user