public void SavePoseToFile() { foreach (TMOAnimItem item in items) { TMOFile tmo = GetTmo(item); if (tmo.frames != null) { /* * string tmo_file = item.GetTmoPath(); * Console.WriteLine("Save File: " + tmo_file); * Directory.CreateDirectory(Path.GetDirectoryName(tmo_file)); * tmo.Save(tmo_file); */ string png_file = item.GetPngPath(); Console.WriteLine("Save File: " + png_file); PNGFile png = CreatePNGFile(item); png.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); WritePose(pw, tmo); }; png.Save(png_file); } } }
public void Save(string dest_file) { png.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); WriteHsav(pw); }; png.Save(dest_file); }
public void SavePoseToFile(TMOFile tmo, string dest_file) { if (tmo.frames != null) { PNGFile png = CreatePNGFile(); png.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); WritePose(pw, tmo); }; Debug.WriteLine("Save File: " + dest_file); png.Save(dest_file); } }
public int Compose(string dest_path) { this.dest_path = dest_path; PNGFile png = new PNGFile(); string source_type = ReadSourceType(dest_path + @"\TDCG.txt"); Console.WriteLine("This is {0} Save File", source_type); png.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); WriteHsavOrPoseOrScne(pw, source_type); }; png.Load(dest_path + @"\thumbnail.png"); string dest_file = Path.ChangeExtension(dest_path, @".new" + Path.GetExtension(dest_path) + @".png"); Console.WriteLine("Save File: " + dest_file); png.Save(dest_file); return(0); }
public bool Process(string source_file) { List <TSOFigure> fig_list = new List <TSOFigure>(); Console.WriteLine("Load File: " + source_file); PNGFile source = new PNGFile(); string source_type = ""; try { TSOFigure fig = null; TMOFile tmo = null; source.Hsav += delegate(string type) { source_type = type; fig = new TSOFigure(); fig_list.Add(fig); }; source.Pose += delegate(string type) { source_type = type; }; source.Scne += delegate(string type) { source_type = type; }; source.Cami += delegate(Stream dest, int extract_length) { cami = new byte[extract_length]; dest.Read(cami, 0, extract_length); }; source.Lgta += delegate(Stream dest, int extract_length) { byte[] lgta = new byte[extract_length]; dest.Read(lgta, 0, extract_length); fig = new TSOFigure(); fig.lgta = lgta; fig_list.Add(fig); }; source.Ftmo += delegate(Stream dest, int extract_length) { tmo = new TMOFile(); tmo.Load(dest); fig.tmo = tmo; }; source.Figu += delegate(Stream dest, int extract_length) { byte[] figu = new byte[extract_length]; dest.Read(figu, 0, extract_length); fig.figu = figu; }; source.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { byte[] ftso = new byte[extract_length]; dest.Read(ftso, 0, extract_length); TSOData tso = new TSOData(); tso.opt1 = BitConverter.ToUInt32(opt1, 0); tso.ftso = ftso; fig.TSOList.Add(tso); }; source.Load(source_file); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } foreach (TSOFigure fig in fig_list) { TSOFigureList.Add(fig); } TDCG.TMOFlip.TMOFlipProcessor processor = new TDCG.TMOFlip.TMOFlipProcessor(); foreach (TSOFigure fig in TSOFigureList) { if (fig.tmo != null) { if (fig.tmo.nodes[0].Path == "|W_Hips") { processor.Process(fig.tmo); } } } string dest_path = Path.GetDirectoryName(source_file); string dest_file = Path.GetFileNameWithoutExtension(source_file) + @".new.png"; Console.WriteLine("Save File: " + dest_file); source.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); switch (source_type) { case "HSAV": WriteHsav(pw); break; case "POSE": WritePose(pw); break; case "SCNE": WriteScne(pw); break; } }; source.Save(dest_file); return(true); }
public bool Process(Stream png_stream, Stream ret_stream) { List <TSOFigure> fig_list = new List <TSOFigure>(); PNGFile png = new PNGFile(); string source_type = ""; { TSOFigure fig = null; TMOFile tmo = null; png.Hsav += delegate(string type) { source_type = type; fig = new TSOFigure(); fig_list.Add(fig); }; png.Pose += delegate(string type) { source_type = type; }; png.Scne += delegate(string type) { source_type = type; }; png.Cami += delegate(Stream dest, int extract_length) { cami = new byte[extract_length]; dest.Read(cami, 0, extract_length); }; png.Lgta += delegate(Stream dest, int extract_length) { byte[] lgta = new byte[extract_length]; dest.Read(lgta, 0, extract_length); fig = new TSOFigure(); fig.lgta = lgta; fig_list.Add(fig); }; png.Ftmo += delegate(Stream dest, int extract_length) { tmo = new TMOFile(); tmo.Load(dest); if (fig == null) { source_type = "PTMO"; fig = new TSOFigure(); fig.lgta = null; fig_list.Add(fig); } fig.tmo = tmo; }; png.Figu += delegate(Stream dest, int extract_length) { byte[] figu = new byte[extract_length]; dest.Read(figu, 0, extract_length); fig.figu = figu; }; png.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { byte[] ftso = new byte[extract_length]; dest.Read(ftso, 0, extract_length); TSOData tso = new TSOData(); tso.opt1 = BitConverter.ToUInt32(opt1, 0); tso.ftso = ftso; fig.TSOList.Add(tso); }; png.Load(png_stream); png_stream.Close(); } foreach (TSOFigure fig in fig_list) { TSOFigureList.Add(fig); } foreach (TSOFigure fig in TSOFigureList) { if (fig.tmo != null) { if (fig.tmo.nodes[0].Path == "|W_Hips") { tmo_Transform(fig.tmo); } } } png.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); switch (source_type) { case "HSAV": WriteHsav(pw); break; case "POSE": WritePose(pw); break; case "SCNE": WriteScne(pw); break; case "PTMO": WritePtmo(pw); break; } }; png.Save(ret_stream); TSOFigureList.Clear(); return(true); }
public int Extract(string source_file, string dest_path) { try { Directory.CreateDirectory(dest_path); } catch (Exception) { Console.WriteLine("Error: Cannot prepare destination directory for file writing."); return(-1); } PNGFile png = new PNGFile(); string source_type = null; png.Hsav += delegate(string type) { Console.WriteLine("This is {0} Save File", type); DumpSourceType(dest_path + @"\TDCG.txt", type); source_type = type; string figure_path = dest_path + @"\" + numTMO; if (!System.IO.Directory.Exists(figure_path)) { System.IO.Directory.CreateDirectory(figure_path); } }; png.Pose += delegate(string type) { Console.WriteLine("This is {0} Save File", type); DumpSourceType(dest_path + @"\TDCG.txt", type); source_type = type; }; png.Scne += delegate(string type) { Console.WriteLine("This is {0} Save File", type); DumpSourceType(dest_path + @"\TDCG.txt", type); source_type = type; }; png.Cami += delegate(Stream dest, int extract_length) { byte[] buf = new byte[extract_length]; dest.Read(buf, 0, extract_length); string dest_file = dest_path + @"\Camera.txt"; Console.WriteLine("CAMI Save File: " + dest_file); using (StreamWriter sw = new StreamWriter(dest_file)) for (int offset = 0; offset < extract_length; offset += sizeof(float)) { float flo = BitConverter.ToSingle(buf, offset); sw.WriteLine(flo); } }; png.Lgta += delegate(Stream dest, int extract_length) { numTMO++; byte[] buf = new byte[extract_length]; dest.Read(buf, 0, extract_length); string dest_file = dest_path + @"\LightA" + numTMO + ".txt"; Console.WriteLine("LGTA Save File: " + dest_file); using (StreamWriter sw = new StreamWriter(dest_file)) for (int offset = 0; offset < extract_length; offset += sizeof(float)) { float flo = BitConverter.ToSingle(buf, offset); sw.WriteLine(flo); } }; png.Figu += delegate(Stream dest, int extract_length) { byte[] buf = new byte[extract_length]; dest.Read(buf, 0, extract_length); string dest_file = dest_path + @"\Figure" + numTMO + ".txt"; Console.WriteLine("FIGU Save File: " + dest_file); using (StreamWriter sw = new StreamWriter(dest_file)) for (int offset = 0; offset < extract_length; offset += sizeof(float)) { float flo = BitConverter.ToSingle(buf, offset); sw.WriteLine(flo); } string figure_path = dest_path + @"\" + numTMO; if (!System.IO.Directory.Exists(figure_path)) { System.IO.Directory.CreateDirectory(figure_path); } }; png.Ftmo += delegate(Stream dest, int extract_length) { string dest_file = dest_path + @"\" + numTMO + ".tmo"; Console.WriteLine("TMO Save File: " + dest_file); using (FileStream file = File.Create(dest_file)) { byte[] buf = new byte[4096]; StreamUtils.Copy(dest, file, buf); } }; png.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < 1; i++) { sb.Append(string.Format("{0:X2}", opt1[i])); } string code = sb.ToString(); string dest_file = dest_path + @"\" + numTMO + @"\" + code + ".tso"; Console.WriteLine("TSO Save File: " + dest_file); using (FileStream file = File.Create(dest_file)) { byte[] buf = new byte[4096]; StreamUtils.Copy(dest, file, buf); } }; png.Load(source_file); png.Save(dest_path + @"\thumbnail.png"); if (source_type == "HSAV") { BMPSaveData data = new BMPSaveData(); using (Stream stream = File.OpenRead(dest_path + @"\thumbnail.png")) data.Read(stream); string dest_file = dest_path + @"\thumbnail.txt"; Console.WriteLine("dump bmp save data: " + dest_file); DumpBmpSaveData(data, dest_file); } return(0); }
public bool CopyNode(string source_file, string motion_file, string node_name) { List <TSOFigure> fig_list = new List <TSOFigure>(); Console.WriteLine("Load File: " + source_file); PNGFile source = new PNGFile(); string source_type = ""; try { TSOFigure fig = null; TMOFile tmo = null; source.Hsav += delegate(string type) { source_type = type; fig = new TSOFigure(); fig_list.Add(fig); }; source.Pose += delegate(string type) { source_type = type; }; source.Scne += delegate(string type) { source_type = type; }; source.Cami += delegate(Stream dest, int extract_length) { cami = new byte[extract_length]; dest.Read(cami, 0, extract_length); }; source.Lgta += delegate(Stream dest, int extract_length) { byte[] lgta = new byte[extract_length]; dest.Read(lgta, 0, extract_length); fig = new TSOFigure(); fig.lgta = lgta; fig_list.Add(fig); }; source.Ftmo += delegate(Stream dest, int extract_length) { tmo = new TMOFile(); tmo.Load(dest); fig.tmo = tmo; }; source.Figu += delegate(Stream dest, int extract_length) { byte[] figu = new byte[extract_length]; dest.Read(figu, 0, extract_length); fig.figu = figu; }; source.Ftso += delegate(Stream dest, int extract_length, byte[] opt1) { byte[] ftso = new byte[extract_length]; dest.Read(ftso, 0, extract_length); TSOData tso = new TSOData(); tso.opt1 = BitConverter.ToUInt32(opt1, 0); tso.ftso = ftso; fig.TSOList.Add(tso); }; source.Load(source_file); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } foreach (TSOFigure fig in fig_list) { TSOFigureList.Add(fig); } Console.WriteLine("Load File: " + motion_file); PNGFile motion = new PNGFile(); TMOFile motion_tmo = null; try { motion.Ftmo += delegate(Stream dest, int extract_length) { motion_tmo = new TMOFile(); motion_tmo.Load(dest); }; motion.Load(motion_file); } catch (Exception ex) { Console.WriteLine(ex.Message); return(false); } if (motion_tmo != null) { foreach (TSOFigure fig in TSOFigureList) { if (fig.tmo != null) { fig.tmo.CopyNodeFrom(motion_tmo, node_name); } } } string dest_file = source_file + ".tmp"; Console.WriteLine("Save File: " + dest_file); source.WriteTaOb += delegate(BinaryWriter bw) { PNGWriter pw = new PNGWriter(bw); switch (source_type) { case "HSAV": WriteHsav(pw); break; case "POSE": WritePose(pw); break; case "SCNE": WriteScne(pw); break; } }; source.Save(dest_file); File.Delete(source_file); File.Move(dest_file, source_file); Console.WriteLine("updated " + source_file); return(true); }