public static void dbgme(string path, string acpath, divamodgen divamods) { foreach (string file in Directory.EnumerateFiles(path + "temp", "*p1_00.mot", SearchOption.AllDirectories)) { int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3)); var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid)); Logs.WriteLine("motions: Created new PV at id " + pvid); check2 = divamods.Divamods.Where(c => c.pvid == pvid).First(); } } foreach (string file in Directory.EnumerateFiles(path + "temp", "*p2_00.mot", SearchOption.AllDirectories)) { int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3)); var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid)); Logs.WriteLine("motions: Created new PV at id " + pvid); check2 = divamods.Divamods.Where(c => c.pvid == pvid).First(); } check2.duet = true; } }
public static void ExtractA3D(string path, string acpath, a3ds a3db, divamodgen divamods = null) { Directory.CreateDirectory("a3d"); //Directory.CreateDirectory("a3d\\common"); foreach (string file in Directory.EnumerateFiles(path, "effstgpv*.farc", SearchOption.TopDirectoryOnly)) { if (!file.Contains("ptc")) { Tools.Extract(file, "a3d\\" + Path.GetFileNameWithoutExtension(file).Replace("effstgpv0", "EFFSTGPV8").ToUpper() + "\\"); var check = a3db.a3d_dbs.Any(c => c.rawrows.Any(d => d.Contains(Path.GetFileNameWithoutExtension(file).Replace("effstgpv", "EFFSTGPV").ToUpper()))); if (!check) { a3d newa3d = new a3d(0); newa3d.id = a3db.a3d_dbs.Max(c => c.id) + 1; newa3d.rawrows.Add(".value=" + Path.GetFileNameWithoutExtension(file).Replace("effstgpv", "EFFSTGPV").ToUpper()); a3db.a3d_dbs.Add(newa3d); } } } foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories)) { File.Move(file, Path.GetDirectoryName(file) + "\\" + Path.GetFileNameWithoutExtension(file).ToUpper().Replace("STGPV0", "STGPV8") + ".a3da"); } foreach (string file in Directory.EnumerateFiles(path, "a3d_effpv*.farc", SearchOption.TopDirectoryOnly)) { Tools.Extract(file, "a3d\\" + Path.GetFileNameWithoutExtension(file).Replace("a3d_effpv", "EFFSTGPV").ToUpper() + "\\"); var check = a3db.a3d_dbs.Any(c => c.rawrows.Any(d => d.Contains(Path.GetFileNameWithoutExtension(file).Replace("effstgpv", "EFFSTGPV").ToUpper()))); if (!check) { a3d newa3d = new a3d(0); newa3d.id = a3db.a3d_dbs.Max(c => c.id) + 1; newa3d.rawrows.Add(".value=" + Path.GetFileNameWithoutExtension(file).Replace("a3d_effpv", "EFFSTGPV").ToUpper()); a3db.a3d_dbs.Add(newa3d); } } foreach (string file in Directory.EnumerateFiles(path, "CAMPV*.farc", SearchOption.TopDirectoryOnly)) { Tools.Extract(file, "a3d\\" + Path.GetFileNameWithoutExtension(file).ToUpper() + "\\"); var check = a3db.a3d_dbs.Any(c => c.rawrows.Any(d => d.Contains(Path.GetFileNameWithoutExtension(file).ToUpper()))); if (!check) { a3d newa3d = new a3d(0); newa3d.id = a3db.a3d_dbs.Max(c => c.id) + 1; newa3d.rawrows.Add(".value=" + Path.GetFileNameWithoutExtension(file).ToUpper()); a3db.a3d_dbs.Add(newa3d); } } foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories)) { File.Move(file, Path.GetDirectoryName(file) + "\\" + Path.GetFileNameWithoutExtension(file).ToUpper().Replace("EFFPV", "STGPV") + ".a3da"); } }
public static void ConvertA3D(string path, string acpath, a3ds a3db, divamodgen divamods = null) { maxWorker = Environment.ProcessorCount - 2; foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories)) { while (currentWorker > maxWorker) { Thread.Sleep(33); } new Thread(() => { string ext = Path.GetExtension(file); string filepath = file.Replace(ext, ""); KKtMain.Format Format = KKtMain.Format.FT; KKtA3DA A = new KKtA3DA(); A.A3DAReader(filepath); bool MP = false; if (!MP || Format > KKtMain.Format.NULL) { A.IO = KKtLib.IO.OpenWriter(filepath + ".a3da", true); } if (Format > KKtMain.Format.NULL) { if (A.Data.Header.Format < KKtMain.Format.F2LE) { A.Data._.CompressF16 = Format == KKtMain.Format.MGF ? 2 : 1; } A.Data.Header.Format = Format; } if (!MP && A.Data.Header.Format > KKtMain.Format.DT && A.Data.Header.Format != KKtMain.Format.FT) { A.A3DCWriter(filepath); } else if (!MP || Format > KKtMain.Format.NULL) { A.A3DC = false; A.A3DAWriter(filepath); } else { A.MsgPackWriter(filepath); } Interlocked.Decrement(ref currentWorker); }).Start(); Interlocked.Increment(ref currentWorker); } while (currentWorker != 0) { Thread.Sleep(33); } }
public static void ConvertDSC(string path, string acpath, divamodgen divamods) { foreach (string file in Directory.EnumerateFiles(path, "pv_*_common.farc", SearchOption.TopDirectoryOnly)) { Tools.Extract(file, "dsc\\common\\"); } foreach (string file in Directory.EnumerateFiles(path, "*.dsc", SearchOption.TopDirectoryOnly)) { File.Copy(file, "dsc\\" + Path.GetFileName(file), true); } foreach (string file in Directory.EnumerateFiles("dsc\\", "*.*", SearchOption.TopDirectoryOnly)) { PD_Tool.DIVAFILE.Decrypt(0, file); } Console.Title = "LYB DIVA X"; foreach (string file in Directory.EnumerateFiles(path, "*.dsc", SearchOption.TopDirectoryOnly)) { List <string> args = new List <string>(); args.Add("-i:x"); args.Add(file); args.Add("-o:a"); args.Add(acpath + "\\rom\\script\\" + Path.GetFileName(file)); int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(3, 3)); string dexfile = path + "exp_pv" + string.Format("{0:000}", pvid) + ".dex"; if (File.Exists(dexfile)) { args.Add("-e"); args.Add(dexfile); Logs.WriteLine("PD_TOOL: DexReader: " + Path.GetFileName(dexfile)); } var check = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault(); if (check == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid)); Logs.WriteLine("DSC: Created new PV at id " + (pvid)); check = divamods.Divamods.Where(c => c.pvid == pvid).First(); } if (Path.GetFileName(file).Contains("easy")) { check.easy = true; } if (Path.GetFileName(file).Contains("normal")) { check.normal = true; } if (Path.GetFileName(file).Contains("hard")) { check.hard = true; } if (Path.GetFileName(file).Contains("extreme")) { check.extreme = true; } bool duet = false; { if (check.duet) { duet = true; Logs.WriteLine("DSC: " + pvid + " FORCEDUET"); } } DSC.duet = duet; DSC.Convert(args.ToArray()); } }
public static a3ds CreateDBEntries(string acpath, a3ds a3db, divamodgen divamods) { foreach (string file in Directory.EnumerateFiles("a3d\\", "*.a3da", SearchOption.AllDirectories)) { string[] a3da_lines = File.ReadAllLines(file); StreamWriter outp = new StreamWriter(file, false, Encoding.ASCII); outp.NewLine = "\n"; foreach (var i in a3da_lines) { var u = i.Replace("EFFPV", "STGPV").Replace("STGPV0", "STGPV8"); outp.WriteLine(u); } outp.Close(); if ((divamods != null) && (file.Contains("STGPV"))) { int pvid = int.Parse(Path.GetFileName(file).Substring(5, 3)); if (pvid < 200) { pvid = pvid + 800; } { var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid)); Logs.WriteLine("a3da: Created new PV at id " + (pvid)); check2 = divamods.Divamods.Where(c => c.pvid == pvid).First(); } check2.a3da.Add(Path.GetFileNameWithoutExtension(file)); Logs.WriteLine("a3da: Added a3d for PV at id " + pvid + "," + Path.GetFileNameWithoutExtension(file)); } if (pvid >= 800) { if (!Path.GetFileNameWithoutExtension(file).Contains("effpv")) { var check2 = divamods.Divamods.Where(c => c.pvid == (pvid)).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid - 100)); Logs.WriteLine("a3da: Created new PV at id " + (pvid - 100)); check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).First(); } Logs.WriteLine("a3da: Added a3d for PV at id " + (pvid - 100) + "," + Path.GetFileNameWithoutExtension(file)); check2.a3da.Add(Path.GetFileNameWithoutExtension(file)); } } } a3dfixer a3Dfixer = new a3dfixer(); a3d newa3d = new a3d(0); newa3d.id = a3db.a3d_dbs_uid.Max(c => c.id) + 1; var lepath = Path.GetDirectoryName(file).Split('\\'); { newa3d.rawrows.Add(".category=" + lepath[lepath.Count() - 1]); newa3d.rawrows.Add(".size=" + a3Dfixer.getSize(file)); newa3d.rawrows.Add(".value=A " + Path.GetFileNameWithoutExtension(file).ToUpper()); a3db.a3d_dbs_uid.Add(newa3d); } } Logs.WriteLine("Packing farcs..."); Tools.MassPackFolders("a3d", acpath + @"\rom\auth_3d\"); return(a3db); }
public static void Convert(string path, string acpath, string mot_db, divamodgen divamods) { if (Directory.Exists(path + "temp")) { Directory.Delete(path + "temp", true); } if (Directory.Exists(path + "temp2")) { Directory.Delete(path + "temp2", true); } if (Directory.Exists(acpath + "\\rom\\rob_temp")) { Directory.Delete(acpath + "\\rom\\rob_temp", true); } Directory.CreateDirectory(path + "temp"); Directory.CreateDirectory(path + "temp2"); Directory.CreateDirectory(acpath + "\\rom\\rob_temp"); MotionDatabase acmot = new MotionDatabase(); BoneDatabase acbone = new BoneDatabase(); acbone.Load(acpath + "\\rom\\bone_data.bin"); var skeletonEntry = acbone.Skeletons[0]; using (var farcArchive = BinaryFile.Load <FarcArchive>(mot_db)) using (var entryStream = farcArchive.Open(farcArchive.Entries.First(), EntryStreamMode.MemoryStream)) acmot.Load(entryStream); foreach (string file in Directory.EnumerateFiles(path, "mot_pv*.farc", SearchOption.TopDirectoryOnly)) { Tools.Extract(file, path + "temp\\"); //Console.WriteLine("Extracted " + Path.GetFileName(file)); } var maxid = acmot.MotionSets.Max(c => c.Id); var maxid2 = -1; foreach (var i in acmot.MotionSets) { if (i.Id > maxid2) { maxid2 = i.Id; } } foreach (string file in Directory.EnumerateFiles(path + "temp", "*p1_00.mot", SearchOption.AllDirectories)) { Directory.CreateDirectory(path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)); var moti = CombineBone(path, file, path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_p1.mot"); MotionSet motion = new MotionSet(); if (File.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin")) { motion.Load(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin"); } motion.Motions.Add(moti); if (!Directory.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3))) { Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)); } motion.Save(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin", skeletonEntry, acmot); maxid++; maxid2++; var check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).FirstOrDefault(); if (check == null) { var motset = new MotionSetEntry(); motset.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3); motset.Id = maxid + 1; acmot.MotionSets.Add(motset); check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).First(); } var motentry = new MotionEntry(); motentry.Id = maxid2 + 1; motentry.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_P1"; check.Motions.Add(motentry); int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3)); var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid)); Logs.WriteLine("Motion: Created new PV at id " + (pvid)); check2 = divamods.Divamods.Where(c => c.pvid == pvid).First(); } Console.WriteLine("Converted " + Path.GetFileName(file)); GC.Collect(); GC.WaitForPendingFinalizers(); } foreach (string file in Directory.EnumerateFiles(path + "temp", "*p2_00.mot", SearchOption.AllDirectories)) { Directory.CreateDirectory(path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)); var moti = CombineBone(path, file, path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_p2.mot"); MotionSet motion = new MotionSet(); if (File.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin")) { motion.Load(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin"); } motion.Motions.Add(moti); if (!Directory.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3))) { Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)); } motion.Save(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin", skeletonEntry, acmot); Console.WriteLine("Converted " + Path.GetFileName(file)); maxid++; maxid2++; var check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).FirstOrDefault(); if (check == null) { var motset = new MotionSetEntry(); motset.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3); motset.Id = maxid; acmot.MotionSets.Add(motset); check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).First(); } var motentry = new MotionEntry(); motentry.Id = maxid2; motentry.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_P2"; check.Motions.Add(motentry); int pvid = int.Parse(Path.GetFileNameWithoutExtension(file).Substring(2, 3)); var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid)); Logs.WriteLine("Motion: Created new PV at id " + (pvid)); check2 = divamods.Divamods.Where(c => c.pvid == pvid).First(); //check2.duet = true; } check2.duet = true; GC.Collect(); GC.WaitForPendingFinalizers(); } foreach (string file in Directory.EnumerateFiles(path + "temp", "*p3_00.mot", SearchOption.AllDirectories)) { Directory.CreateDirectory(path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)); var moti = CombineBone(path, file, path + "temp2\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_p3.mot"); MotionSet motion = new MotionSet(); if (File.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin")) { motion.Load(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin"); } motion.Motions.Add(moti); if (!Directory.Exists(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3))) { Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)); } motion.Save(acpath + "\\rom\\rob_temp\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "\\mot_PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + ".bin", skeletonEntry, acmot); Console.WriteLine("Converted " + Path.GetFileName(file)); maxid++; maxid2++; var check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).FirstOrDefault(); if (check == null) { var motset = new MotionSetEntry(); motset.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3); motset.Id = maxid; acmot.MotionSets.Add(motset); check = acmot.MotionSets.Where(c => c.Name == "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3)).First(); } var motentry = new MotionEntry(); motentry.Id = maxid2; motentry.Name = "PV" + Path.GetFileNameWithoutExtension(file).Substring(2, 3) + "_P3"; check.Motions.Add(motentry); GC.Collect(); GC.WaitForPendingFinalizers(); } Directory.CreateDirectory(acpath + "\\rom\\rob_temp\\mot_db"); acmot.Save(acpath + "\\rom\\rob_temp\\mot_db\\mot_db.bin"); Console.WriteLine("Packing farcs..."); Tools.MassPackFolders(acpath + "\\rom\\rob_temp", acpath + "\\rom\\rob\\"); GC.Collect(); GC.WaitForPendingFinalizers(); }
public void GenerateObjSet(string filePath, Model stgpv, ObjectDatabase objdb, TextureDatabase texturedb, StageDatabase staged, string acpath, divamodgen divamods, bool doProcess = true, bool debug = false) { /* * var stgpv = new Model(); * var textures = new MikuMikuLibrary.Textures.TextureSet(); * var texdb = new TextureDatabase(); * * using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath)) * using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txi")).First(), EntryStreamMode.MemoryStream)) * texdb.Load(entryStream); * * if (debug) * { * string farcpath = acpath + "\\rom\\objset\\" + Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + ".farc"; * * using (var farcArchive = BinaryFile.Load<FarcArchive>(farcpath)) * using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("tex")).First(), EntryStreamMode.MemoryStream)) * textures.Load(entryStream); * * } * else * { * using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath)) * using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txd")).First(), EntryStreamMode.MemoryStream)) * textures.Load(entryStream); * * using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath)) * using (var entryStream = farcArchive.Open(farcArchive.Entries.First(), EntryStreamMode.MemoryStream)) * stgpv.Load(entryStream, textures, texdb); * } * */ if (Path.GetFileNameWithoutExtension(filePath).Contains("effpv")) { filePath = Path.GetDirectoryName(filePath) + "\\" + Path.GetFileNameWithoutExtension(filePath).Replace("effpv", "stgpv") + "hrc2.farc"; } var texdb = new TextureDatabase(); //using (var farcArchive = BinaryFile.Load<FarcArchive>(filePath)) //using (var entryStream = farcArchive.Open(farcArchive.Entries.Where(c => c.Contains("txi")).First(), EntryStreamMode.MemoryStream)) // texdb.Load(entryStream); var objentry = new ObjectEntry(); objentry.ArchiveFileName = Path.GetFileName(filePath).Replace("stgpv0", "stgpv8"); objentry.FileName = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_obj.bin"; objentry.Id = FindUnusedID(objdb); objentry.Name = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8").ToUpper(); objentry.TextureFileName = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_tex.bin"; int ground_id = -1; ushort counter = 1; foreach (var meshes in stgpv.Meshes) { meshes.SubMeshes.RemoveAll(x => x.Vertices == null || x.Vertices.Length == 0); meshes.Name = meshes.Name.Replace("STGPV0", "STGPV8"); meshes.Name = meshes.Name.Replace("EFFPV", "STGPV"); if (Path.GetFileName(filePath).Contains("hrc")) { int pvid = int.Parse(Path.GetFileName(filePath).Substring(5, 3)); if (pvid < 200) { pvid = pvid + 800; } { var check2 = divamods.Divamods.Where(c => c.pvid == pvid).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid)); Logs.WriteLine("objset: Created new PV at id " + pvid); check2 = divamods.Divamods.Where(c => c.pvid == pvid).First(); } check2.item_pv.Add(meshes.Name); Logs.WriteLine("objset: Added item_pv for PV at id " + pvid + "," + meshes.Name); } if (pvid >= 800) { var check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).FirstOrDefault(); if (check2 == null) { divamods.Divamods.Add(new pdaconversion.divamods(pvid - 100)); Logs.WriteLine("objset: Created new PV at id " + (pvid - 100)); check2 = divamods.Divamods.Where(c => c.pvid == (pvid - 100)).First(); } check2.item_pv.Add(meshes.Name); Logs.WriteLine("objset: Added item_pv for PV at id " + (pvid - 100) + "," + meshes.Name); } } var meshentry = new MeshEntry(); meshes.Id = counter; meshentry.Id = (ushort)meshes.Id; meshentry.Name = meshes.Name; if (meshes.Name.Contains("GND")) { ground_id = meshes.Id; } objentry.Meshes.Add(meshentry); if (doProcess) { if (!debug) { /* * foreach (var submeshes in meshes.SubMeshes) * { * foreach (var indexTable in submeshes.IndexTables) * { * ushort[] triangleStrip = Stripifier.Stripify(indexTable.Indices); * if (triangleStrip != null) * { * indexTable.PrimitiveType = PrimitiveType.TriangleStrip; * indexTable.Indices = triangleStrip; * } * } * } */ } //foreach (var textures in M) foreach (var material in meshes.Materials) { if ((Path.GetFileName(filePath).Contains("hrc2")) || (Path.GetFileName(filePath).Contains("hrc"))) { material.Shader = "ITEM"; material.IsAlphaEnabled = false; //material.Field00 = 0x00000001; //material.Field02 = 0x00000A80; //material.Diffuse.Field00 = 0x00000000; //material.Diffuse.Field01 = 0x016400E1; //material.Diffuse.Field02 = 0x000000F1; MikuMikuLibrary.Misc.Color asdf = new MikuMikuLibrary.Misc.Color(0, 0, 0, 0); material.SpecularColor = asdf; //material.AmbientColor = asdf; //material.EmissionColor = asdf; //material.SpecularColor = asdf; //material.Shininess = 1; //material.Diffuse.Field00 = 0x00000000; //material.Diffuse.Field01 = 0x002400E0; //material.Diffuse.Field02 = 0x000000F1; if (material.Ambient.TextureId == 1509989155) { material.Ambient.TextureId = -1; } if (material.Normal.TextureId == 1509989155) { material.Normal.TextureId = -1; } if (material.Specular.TextureId == 1509989155) { material.Specular.TextureId = -1; material.SpecularColor = asdf; } //else { material.Field00 = 0x0000002D; } /* * * // this blacken the screen on STAGE SHADER * material.Specular.Field01 = 0x002418C3; * material.Specular.Field02 = 0x000000F3; * material.Specular.Field05 = 1; * material.Specular.Field06 = 1; * material.Specular.Field11 = 1; * material.Specular.Field16 = 1; * material.Specular.Field21 = 1; * * * material.Specular.TextureId = -1; * material.Specular.Field01 = 0x00000000; * material.Specular.Field02 = 0x000000F0; * material.Specular.Field05 = 1; * material.Specular.Field06 = 0; * material.Specular.Field11 = 0; * material.Specular.Field16 = 0; * material.Specular.Field21 = 0; * * material.Reflection.TextureId = -1; * material.Reflection.Field01 = 0x00000000; * material.Reflection.Field02 = 0x000000F0; * material.Reflection.Field05 = 1; * material.Reflection.Field06 = 0; * material.Reflection.Field11 = 0; * material.Reflection.Field16 = 0; * material.Reflection.Field21 = 0; */ if (material.Reflection.TextureId == 1509989155) { material.Reflection.TextureId = -1; } if (material.ToonCurve.TextureId == 1509989155) { material.ToonCurve.TextureId = -1; } if (material.SpecularPower.TextureId == 1509989155) { material.SpecularPower.TextureId = -1; } if (material.Texture08.TextureId == 1509989155) { material.Texture08.TextureId = -1; } } else { material.Shader = "BLINN"; //material.Field00 = 0x0000000D; //material.Field02 = 0x00000A80; MikuMikuLibrary.Misc.Color asdf = new MikuMikuLibrary.Misc.Color(0, 0, 0, 0); //material.AmbientColor = asdf; //material.EmissionColor = asdf; //material.Shininess = 1; //material.Diffuse.Field00 = 0x00000230; //material.Diffuse.Field02 = 0x002418C3; if (material.Ambient.TextureId == 1509989155) { material.Ambient.TextureId = -1; } if (material.Normal.TextureId == 1509989155) { material.Normal.TextureId = -1; } if (material.Specular.TextureId == 1509989155) { material.Specular.TextureId = -1; material.SpecularColor = asdf; } //else { material.Field00 = 0x0000002D; } /* * * // this blacken the screen on STAGE SHADER * material.Specular.Field01 = 0x002418C3; * material.Specular.Field02 = 0x000000F3; * material.Specular.Field05 = 1; * material.Specular.Field06 = 1; * material.Specular.Field11 = 1; * material.Specular.Field16 = 1; * material.Specular.Field21 = 1; * */ /* * material.Specular.TextureId = -1; * material.Specular.Field01 = 0x00000000; * material.Specular.Field02 = 0x000000F0; * material.Specular.Field05 = 5; * material.Specular.Field06 = 0; * material.Specular.Field11 = 0; * material.Specular.Field16 = 0; * material.Specular.Field21 = 0; * * * material.Normal.Field01 = 0x00000000; * material.Normal.Field02 = 0x000000F0; * material.Normal.Field05 = 5; * material.Normal.Field06 = 0; * material.Normal.Field11 = 0; * material.Normal.Field16 = 0; * material.Normal.Field21 = 0; * * * material.ToonCurve.TextureId = -1; * material.ToonCurve.Field01 = 0x00000000; * material.ToonCurve.Field02 = 0x000000F0; * material.ToonCurve.Field05 = 5; * material.ToonCurve.Field06 = 0; * material.ToonCurve.Field11 = 0; * material.ToonCurve.Field16 = 0; * material.ToonCurve.Field21 = 0; */ if (material.Reflection.TextureId == 1509989155) { material.Reflection.TextureId = -1; } if (material.ToonCurve.TextureId == 1509989155) { material.ToonCurve.TextureId = -1; } if (material.SpecularPower.TextureId == 1509989155) { material.SpecularPower.TextureId = -1; } if (material.Texture08.TextureId == 1509989155) { material.Texture08.TextureId = -1; } } } } counter++; } stgpv.TextureSet.Format = BinaryFormat.DT; stgpv.Format = BinaryFormat.DT; if (doProcess) { stgpv.Save("temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_obj.bin", null, texturedb, null); } objdb.Objects.Add(objentry); if (Path.GetFileNameWithoutExtension(filePath).Count() == 8) { StageEntry stage = new StageEntry(); stage.Id = FindUnusedID(staged); stage.Name = Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8").ToUpper(); stage.ObjectGroundId = (short)ground_id; stage.ObjectGroundIdFlag = (short)objentry.Id; stage.ObjectId3 = -1; stage.ObjectIdFlag3 = -1; stage.ObjectId5 = -1; stage.ObjectIdFlag5 = -1; stage.ObjectId7 = -1; stage.ObjectIdFlag7 = -1; stage.RingRectangleX = -8; stage.RingRectangleY = -8; stage.RingRectangleWidth = 16; stage.RingRectangleHeight = 16; stage.RingRingHeight = 0; stage.RingOutHeight = -1000; stage.Field00 = 1; stage.Field11 = -1; stage.Field02 = -1; stage.LensFlareScaleX = -1; stage.LensFlareScaleY = -1; stage.LensFlareScaleZ = -1; stage.ObjectSkyId = -1; stage.ObjectSkyIdFlag = -1; stage.ObjectReflectId = -1; stage.ObjectReflectIdFlag = -1; stage.CollisionFilePath = @"rom/STGTST_COLI.000.bin"; stage.ObjectId1 = (short)objentry.Id; stage.StageEffect1 = StageEntry.StageEffect.Empty; stage.Auth3dName = "EFF" + stage.Name; staged.Stages.Add(stage); } if (doProcess) { var newfarc = new FarcArchive(); newfarc.Add(Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_obj.bin", "temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_obj.bin"); newfarc.Add(Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + "_tex.bin", "temp\\" + Path.GetFileNameWithoutExtension(filePath) + "_tex.bin"); newfarc.Alignment = 16; newfarc.IsCompressed = false; newfarc.Save(acpath + "\\rom\\objset\\" + Path.GetFileNameWithoutExtension(filePath).Replace("stgpv0", "stgpv8") + ".farc"); } }