Browse Source

Merge pull request #13989 from vnen/gdnative-singleton

GDNative: Save singletons only if there's a change
Rémi Verschelde 7 năm trước cách đây
mục cha
commit
3a503f62af
1 tập tin đã thay đổi với 20 bổ sung2 xóa
  1. 20 2
      modules/gdnative/register_types.cpp

+ 20 - 2
modules/gdnative/register_types.cpp

@@ -103,16 +103,34 @@ static void actual_discoverer_handler() {
 
 	Set<String> file_paths = get_gdnative_singletons(dir);
 
+	bool changed = false;
+	Array current_files = ProjectSettings::get_singleton()->get("gdnative/singletons");
 	Array files;
 	files.resize(file_paths.size());
 	int i = 0;
 	for (Set<String>::Element *E = file_paths.front(); E; i++, E = E->next()) {
+		if (!current_files.has(E->get())) {
+			changed = true;
+		}
 		files.set(i, E->get());
 	}
 
-	ProjectSettings::get_singleton()->set("gdnative/singletons", files);
+	// Check for removed files
+	if (!changed) {
+		for (int i = 0; i < current_files.size(); i++) {
+			if (!file_paths.has(current_files[i])) {
+				changed = true;
+				break;
+			}
+		}
+	}
 
-	ProjectSettings::get_singleton()->save();
+	if (changed) {
+
+		ProjectSettings::get_singleton()->set("gdnative/singletons", files);
+
+		ProjectSettings::get_singleton()->save();
+	}
 }
 
 static GDNativeSingletonDiscover *discoverer = NULL;