diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2020-12-29 15:05:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-29 15:05:06 +0100 |
commit | 4486aa8014f67db752ac9edb6e2f02117c6f19eb (patch) | |
tree | 8688c203075e523a2c1fdbbc07d38309f0728f09 /editor | |
parent | 55c295c5d7ecafff1572e094bd406f3313d69f66 (diff) | |
parent | d2d29c42f280d38511aed673ef9c90ad5492bb30 (diff) |
Merge pull request #44794 from RandomShaper/fix_inst_resource
Fix instantiation of resource as property value
Diffstat (limited to 'editor')
-rw-r--r-- | editor/editor_properties.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 972fd0723a..9c27b50a9a 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -2546,10 +2546,12 @@ void EditorPropertyResource::_menu_option(int p_which) { } Object *obj = nullptr; + RES res_temp; if (ScriptServer::is_global_class(intype)) { obj = ClassDB::instance(ScriptServer::get_global_class_native_base(intype)); if (obj) { + res_temp = obj; Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(intype)); if (script.is_valid()) { obj->set_script(Variant(script)); @@ -2557,21 +2559,21 @@ void EditorPropertyResource::_menu_option(int p_which) { } } else { obj = ClassDB::instance(intype); + res_temp = obj; } if (!obj) { obj = EditorNode::get_editor_data().instance_custom_type(intype, "Resource"); + res_temp = obj; } - ERR_BREAK(!obj); - Resource *resp = Object::cast_to<Resource>(obj); - ERR_BREAK(!resp); + ERR_BREAK(!res_temp.is_valid()); if (get_edited_object() && base_type != String() && base_type == "Script") { //make visual script the right type - resp->call("set_instance_base_type", get_edited_object()->get_class()); + res_temp->call("set_instance_base_type", get_edited_object()->get_class()); } - res = Ref<Resource>(resp); + res = res_temp; emit_changed(get_edited_property(), res); update_property(); |