summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-05-27 14:18:40 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-05-27 14:19:11 -0300
commit8be2fabbe5cd846bac5e5a38e55f3fb70e73f2da (patch)
treea3e932282cdafdd13c4f02bdf21f72f9846adcbe /core
parenteb7227a20b27e91c6e2adfb1ded738f2dd7e453b (diff)
Changed import workflow
-Rearrange favorites in fs dock with drag and drop -Removed import -> sub-scene, moved to scenetree contextual menu -Removed import -> re-import , moved and integrated to FS dock -Added ability in FS dock to re-import more than one resource simultaneously -Added ability to drag from native filesystem explorer to Godot, only works on Windows though -Removed scene reimport merge options, never worked well. Eventually merging materials should be re-added -Added ability to set custom root node type when importing scenes -Re-Import is now automatic, can be configured back to manual in editor settings -Added resource previews in property list for many resource types
Diffstat (limited to 'core')
-rw-r--r--core/io/resource_loader.cpp1
-rw-r--r--core/object.cpp7
-rw-r--r--core/object.h2
-rw-r--r--core/os/main_loop.cpp10
-rw-r--r--core/os/main_loop.h2
-rw-r--r--core/resource.cpp27
-rw-r--r--core/resource.h4
7 files changed, 53 insertions, 0 deletions
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp
index abb1082256..b547dc0e85 100644
--- a/core/io/resource_loader.cpp
+++ b/core/io/resource_loader.cpp
@@ -243,6 +243,7 @@ Ref<ResourceImportMetadata> ResourceLoader::load_import_metadata(const String &p
break;
}
+
return ret;
}
diff --git a/core/object.cpp b/core/object.cpp
index 3cfc0329bc..d7878fd623 100644
--- a/core/object.cpp
+++ b/core/object.cpp
@@ -1756,6 +1756,7 @@ bool Object::is_queued_for_deletion() const {
void Object::set_edited(bool p_edited) {
_edited=p_edited;
+ _edited_version++;
}
bool Object::is_edited() const {
@@ -1763,6 +1764,11 @@ bool Object::is_edited() const {
return _edited;
}
+
+uint32_t Object::get_edited_version() const {
+
+ return _edited_version;
+}
#endif
Object::Object() {
@@ -1778,6 +1784,7 @@ Object::Object() {
#ifdef TOOLS_ENABLED
_edited=false;
+ _edited_version=0;
#endif
#ifdef DEBUG_ENABLED
diff --git a/core/object.h b/core/object.h
index 3945d1d0ba..4ed78d3226 100644
--- a/core/object.h
+++ b/core/object.h
@@ -388,6 +388,7 @@ friend void postinitialize_handler(Object*);
bool _can_translate;
#ifdef TOOLS_ENABLED
bool _edited;
+ uint32_t _edited_version;
#endif
ScriptInstance *script_instance;
RefPtr script;
@@ -589,6 +590,7 @@ public:
#ifdef TOOLS_ENABLED
void set_edited(bool p_edited);
bool is_edited() const;
+ uint32_t get_edited_version() const; //this function is used to check when something changed beyond a point, it's used mainly for generating previews
#endif
void set_script_instance(ScriptInstance *p_instance);
diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp
index 310bbaa3b8..e5feebfbfc 100644
--- a/core/os/main_loop.cpp
+++ b/core/os/main_loop.cpp
@@ -43,6 +43,7 @@ void MainLoop::_bind_methods() {
BIND_VMETHOD( MethodInfo("_initialize") );
BIND_VMETHOD( MethodInfo("_iteration",PropertyInfo(Variant::REAL,"delta")) );
BIND_VMETHOD( MethodInfo("_idle",PropertyInfo(Variant::REAL,"delta")) );
+ BIND_VMETHOD( MethodInfo("_drop_files",PropertyInfo(Variant::STRING_ARRAY,"files"),PropertyInfo(Variant::INT,"screen")) );
BIND_VMETHOD( MethodInfo("_finalize") );
BIND_CONSTANT(NOTIFICATION_WM_MOUSE_ENTER);
@@ -108,6 +109,15 @@ bool MainLoop::idle(float p_time) {
return false;
}
+
+void MainLoop::drop_files(const Vector<String>& p_files,int p_from_screen) {
+
+
+ if (get_script_instance())
+ get_script_instance()->call("_drop_files",p_files,p_from_screen);
+
+}
+
void MainLoop::finish() {
if (get_script_instance()) {
diff --git a/core/os/main_loop.h b/core/os/main_loop.h
index a34014983e..57185d9d3d 100644
--- a/core/os/main_loop.h
+++ b/core/os/main_loop.h
@@ -64,6 +64,8 @@ public:
virtual bool idle(float p_time);
virtual void finish();
+ virtual void drop_files(const Vector<String>& p_files,int p_from_screen=0);
+
void set_init_script(const Ref<Script>& p_init_script);
MainLoop();
diff --git a/core/resource.cpp b/core/resource.cpp
index 672e64b1bb..b7a5bad4b8 100644
--- a/core/resource.cpp
+++ b/core/resource.cpp
@@ -330,6 +330,31 @@ Ref<ResourceImportMetadata> Resource::get_import_metadata() const {
}
+#ifdef TOOLS_ENABLED
+
+uint32_t Resource::hash_edited_version() const {
+
+ uint32_t hash = hash_djb2_one_32(get_edited_version());
+
+ List<PropertyInfo> plist;
+ get_property_list(&plist);
+
+ for (List<PropertyInfo>::Element *E=plist.front();E;E=E->next()) {
+
+ if (E->get().type==Variant::OBJECT && E->get().hint==PROPERTY_HINT_RESOURCE_TYPE) {
+ RES res = get(E->get().name);
+ if (res.is_valid()) {
+ hash = hash_djb2_one_32(res->hash_edited_version(),hash);
+ }
+ }
+ }
+
+ return hash;
+
+}
+
+#endif
+
Resource::Resource() {
@@ -341,6 +366,8 @@ Resource::Resource() {
}
+
+
Resource::~Resource() {
if (path_cache!="")
diff --git a/core/resource.h b/core/resource.h
index 8bcdd6b4b7..958414f62b 100644
--- a/core/resource.h
+++ b/core/resource.h
@@ -142,8 +142,12 @@ public:
Ref<ResourceImportMetadata> get_import_metadata() const;
+
+
#ifdef TOOLS_ENABLED
+ uint32_t hash_edited_version() const;
+
virtual void set_last_modified_time(uint64_t p_time) { last_modified_time=p_time; }
uint64_t get_last_modified_time() const { return last_modified_time; }