From efdcf205d2b428580ee9b4a50572649bc06b4276 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Mon, 27 Jun 2016 13:17:20 -0300 Subject: Make most resources (save for packedscenes and scripts) reload if they change on disk. Closes #4059. --- core/resource.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'core/resource.cpp') diff --git a/core/resource.cpp b/core/resource.cpp index 97dee3e1d..b80ec7012 100644 --- a/core/resource.cpp +++ b/core/resource.cpp @@ -30,7 +30,7 @@ #include "core_string_names.h" #include #include "os/file_access.h" - +#include "io/resource_loader.h" void ResourceImportMetadata::set_editor(const String& p_editor) { @@ -218,14 +218,36 @@ String Resource::get_name() const { return name; } -bool Resource::can_reload_from_file() { +bool Resource::editor_can_reload_from_file() { - return false; + return true; //by default yes } void Resource::reload_from_file() { + String path=get_path(); + if (!path.is_resource_file()) + return; + + Ref s = ResourceLoader::load(path,get_type(),true); + + if (!s.is_valid()) + return; + + List pi; + s->get_property_list(&pi); + + for (List::Element *E=pi.front();E;E=E->next()) { + + if (!(E->get().usage&PROPERTY_USAGE_STORAGE)) + continue; + if (E->get().name=="resource/path") + continue; //do not change path + + set(E->get().name,s->get(E->get().name)); + + } } -- cgit v1.2.3-70-g09d2