private void Generate() { var tempPath = GetTempPath(); if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); } var tempFiles = Directory.GetFiles(tempPath); foreach (var file in tempFiles) { File.Delete(file); } var filesPng = Directory.GetFiles(_pngSource.Text, "*.png"); var filesJpeg = Directory.GetFiles(_pngSource.Text, "*.jpeg"); var filesJpg = Directory.GetFiles(_pngSource.Text, "*.jpg"); var filesList = new List <string>(); filesList.AddRange(filesPng); filesList.AddRange(filesJpeg); filesList.AddRange(filesJpg); var files = filesList.ToArray(); foreach (var file in files) { //var copy = Path.Combine(tempPath, Path.GetFileName(file)); var name = Path.GetFileNameWithoutExtension(file); if (name.EndsWith("bump")) { using (var source = new Bitmap(file)) using (var bitmap = CreateNormalMap(source)) SaveMipmap(bitmap, tempPath, name); } else { using (var bitmap = new Bitmap(file)) { using (var targetStream = File.Create(Path.Combine(tempPath, Path.GetFileNameWithoutExtension(file) + ".raw"))) using (var writer = new BinaryWriter(targetStream)) { SaveUncompressedRaw(bitmap, writer, 2048); } //SaveMipmap(bitmap, tempPath, name); } } } files = Directory.GetFiles(_pngSource.Text, "*.obj"); var meshes = new List <Mesh>(); foreach (var file in files) { var name = Path.GetFileNameWithoutExtension(file); using (var stringReader = new StreamReader(file)) { var localMeshes = ConvertObjToBinary(stringReader, tempPath, name); foreach (var localMesh in localMeshes) { meshes.Add(localMesh); } } } var meshBatch = new MeshBatch(meshes.ToArray()); using (var stream = File.Create(Path.Combine(tempPath, "batch_vb_big.3d"))) using (var writer = new BinaryWriter(stream)) meshBatch.WriteVertices(writer, true); using (var stream = File.Create(Path.Combine(tempPath, "batch_vb_lit.3d"))) using (var writer = new BinaryWriter(stream)) meshBatch.WriteVertices(writer, false); using (var stream = File.Create(Path.Combine(tempPath, "batch_ib_big.3d"))) using (var writer = new BinaryWriter(stream)) meshBatch.WriteIndices(writer, true); using (var stream = File.Create(Path.Combine(tempPath, "batch_ib_lit.3d"))) using (var writer = new BinaryWriter(stream)) meshBatch.WriteIndices(writer, false); using (var stream = File.Create(Path.Combine(tempPath, "batch_transforms_big.3d"))) using (var writer = new BinaryWriter(stream)) meshBatch.WriteTransforms(writer, true); using (var stream = File.Create(Path.Combine(tempPath, "batch_transforms_lit.3d"))) using (var writer = new BinaryWriter(stream)) meshBatch.WriteTransforms(writer, false); files = Directory.GetFiles(tempPath, "*.png"); foreach (var file in files) { if (!ExecuteCommand(_etc1Tool.Text, "\"" + file + "\"")) { return; } Application.DoEvents(); } files = Directory.GetFiles(_targetFolder.Text, "*.pkm"); foreach (var file in files) { File.Delete(file); Application.DoEvents(); } files = Directory.GetFiles(_targetFolder.Text, "*.3d"); foreach (var file in files) { File.Delete(file); Application.DoEvents(); } files = Directory.GetFiles(tempPath, "*.pkm"); foreach (var file in files) { var copy = Path.Combine(_targetFolder.Text, Path.GetFileName(file)); File.Copy(file, copy, true); Application.DoEvents(); } files = Directory.GetFiles(tempPath, "*.raw"); foreach (var file in files) { var copy = Path.Combine(_targetFolder.Text, Path.GetFileName(file)); File.Copy(file, copy, true); Application.DoEvents(); } files = Directory.GetFiles(tempPath, "*.3d"); foreach (var file in files) { var copy = Path.Combine(_targetFolder.Text, Path.GetFileName(file)); File.Copy(file, copy, true); Application.DoEvents(); } }