Browse Source

tools: save importer settings for sprites

Daniele Bartolini 7 years ago
parent
commit
7faa64ef6c

+ 1 - 0
src/resource/data_compiler.cpp

@@ -586,6 +586,7 @@ int main_data_compiler(const DeviceOptions& opts)
 	// Add ignore globs
 	dc->add_ignore_glob("*.bak");
 	dc->add_ignore_glob("*.dds");
+	dc->add_ignore_glob("*.importer_settings");
 	dc->add_ignore_glob("*.ktx");
 	dc->add_ignore_glob("*.ogg");
 	dc->add_ignore_glob("*.png");

+ 26 - 0
tools/level_editor/project.vala

@@ -266,14 +266,38 @@ end
 
 		public void import_sprites(SList<string> filenames, string destination_dir)
 		{
+			Hashtable importer_settings = null;
+			string importer_settings_path = null;
+			{
+				GLib.File file_src = File.new_for_path(filenames.nth_data(0));
+				GLib.File file_dst = File.new_for_path(destination_dir + "/" + file_src.get_basename());
+
+				string resource_filename = _source_dir.get_relative_path(file_dst);
+				string resource_name     = resource_filename.substring(0, resource_filename.last_index_of_char('.'));
+
+				importer_settings_path = Path.build_filename(_source_dir.get_path(), resource_name) + ".importer_settings";
+			}
+
 			SpriteImportDialog sid = new SpriteImportDialog(filenames.nth_data(0));
 
+			if (File.new_for_path(importer_settings_path).query_exists())
+			{
+				importer_settings = SJSON.load(importer_settings_path);
+				sid.load(importer_settings);
+			}
+			else
+			{
+				importer_settings = new Hashtable();
+			}
+
 			if (sid.run() != Gtk.ResponseType.OK)
 			{
 				sid.destroy();
 				return;
 			}
 
+			sid.save(importer_settings);
+
 			int width     = (int)sid._pixbuf.width;
 			int height    = (int)sid._pixbuf.height;
 			int num_h     = (int)sid.cells_h.value;
@@ -308,6 +332,8 @@ end
 				string resource_filename = _source_dir.get_relative_path(file_dst);
 				string resource_name     = resource_filename.substring(0, resource_filename.last_index_of_char('.'));
 
+				SJSON.save(importer_settings, Path.build_filename(_source_dir.get_path(), resource_name) + ".importer_settings");
+
 				Hashtable textures = new Hashtable();
 				textures["u_albedo"] = resource_name;
 

+ 41 - 0
tools/level_editor/sprite_import_dialog.vala

@@ -485,6 +485,47 @@ public class SpriteImportDialog : Gtk.Dialog
 			break;
 		}
 	}
+
+	public void load(Hashtable importer_settings)
+	{
+		// Load settings
+		cells_h.value            = (double)importer_settings["num_h"];
+		cells_v.value            = (double)importer_settings["num_v"];
+		cell_w.value             = (double)importer_settings["cell_w"];
+		cell_h.value             = (double)importer_settings["cell_h"];
+		offset_x.value           = (double)importer_settings["offset_x"];
+		offset_y.value           = (double)importer_settings["offset_y"];
+		spacing_x.value          = (double)importer_settings["spacing_x"];
+		spacing_y.value          = (double)importer_settings["spacing_y"];
+		layer.value              = (double)importer_settings["layer"];
+		depth.value              = (double)importer_settings["depth"];
+		pivot.active             = (int)(double)importer_settings["pivot"];
+		collision_enabled.active = (bool)importer_settings["collision_enabled"];
+		collision_x.value        = (double)importer_settings["collision_x"];
+		collision_y.value        = (double)importer_settings["collision_y"];
+		collision_w.value        = (double)importer_settings["collision_w"];
+		collision_h.value        = (double)importer_settings["collision_h"];
+	}
+
+	public void save(Hashtable importer_settings)
+	{
+		importer_settings["num_h"]             = cells_h.value;
+		importer_settings["num_v"]             = cells_v.value;
+		importer_settings["cell_w"]            = cell_w.value;
+		importer_settings["cell_h"]            = cell_h.value;
+		importer_settings["offset_x"]          = offset_x.value;
+		importer_settings["offset_y"]          = offset_y.value;
+		importer_settings["spacing_x"]         = spacing_x.value;
+		importer_settings["spacing_y"]         = spacing_y.value;
+		importer_settings["layer"]             = layer.value;
+		importer_settings["depth"]             = depth.value;
+		importer_settings["pivot"]             = pivot.active;
+		importer_settings["collision_enabled"] = collision_enabled.active;
+		importer_settings["collision_x"]       = collision_x.value;
+		importer_settings["collision_y"]       = collision_y.value;
+		importer_settings["collision_w"]       = collision_w.value;
+		importer_settings["collision_h"]       = collision_h.value;
+	}
 }
 
 }