diff options
Diffstat (limited to 'editor/editor_data.cpp')
-rw-r--r-- | editor/editor_data.cpp | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp index c98635d16b..4855d3f69d 100644 --- a/editor/editor_data.cpp +++ b/editor/editor_data.cpp @@ -481,7 +481,7 @@ EditorPlugin *EditorData::get_editor_plugin(int p_idx) { void EditorData::add_custom_type(const String &p_type, const String &p_inherits, const Ref<Script> &p_script, const Ref<Texture> &p_icon) { - ERR_FAIL_COND(p_script.is_null()); + ERR_FAIL_COND_MSG(p_script.is_null(), "It's not a reference to a valid Script object."); CustomType ct; ct.name = p_type; ct.icon = p_icon; @@ -870,7 +870,7 @@ bool EditorData::script_class_is_parent(const String &p_class, const String &p_i if (!ScriptServer::is_global_class(p_class)) return false; String base = script_class_get_base(p_class); - Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(p_class), "Script"); + Ref<Script> script = script_class_load_script(p_class); Ref<Script> base_script = script->get_base_script(); while (p_inherits != base) { @@ -889,12 +889,7 @@ bool EditorData::script_class_is_parent(const String &p_class, const String &p_i StringName EditorData::script_class_get_base(const String &p_class) const { - if (!ScriptServer::is_global_class(p_class)) - return StringName(); - - String path = ScriptServer::get_global_class_path(p_class); - - Ref<Script> script = ResourceLoader::load(path, "Script"); + Ref<Script> script = script_class_load_script(p_class); if (script.is_null()) return StringName(); @@ -910,7 +905,7 @@ Object *EditorData::script_class_instance(const String &p_class) { if (ScriptServer::is_global_class(p_class)) { Object *obj = ClassDB::instance(ScriptServer::get_global_class_native_base(p_class)); if (obj) { - RES script = ResourceLoader::load(ScriptServer::get_global_class_path(p_class)); + Ref<Script> script = script_class_load_script(p_class); if (script.is_valid()) obj->set_script(script.get_ref_ptr()); return obj; @@ -919,6 +914,15 @@ Object *EditorData::script_class_instance(const String &p_class) { return NULL; } +Ref<Script> EditorData::script_class_load_script(const String &p_class) const { + + if (!ScriptServer::is_global_class(p_class)) + return Ref<Script>(); + + String path = ScriptServer::get_global_class_path(p_class); + return ResourceLoader::load(path, "Script"); +} + void EditorData::script_class_set_icon_path(const String &p_class, const String &p_icon_path) { _script_class_icon_paths[p_class] = p_icon_path; } @@ -1142,6 +1146,16 @@ List<Node *> &EditorSelection::get_selected_node_list() { return selected_node_list; } +List<Node *> EditorSelection::get_full_selected_node_list() { + + List<Node *> node_list; + for (Map<Node *, Object *>::Element *E = selection.front(); E; E = E->next()) { + node_list.push_back(E->key()); + } + + return node_list; +} + void EditorSelection::clear() { while (!selection.empty()) { |