using System; using System.IO; using System.Collections.Generic; using NW4RTools; using OpenTK; using OpenTK.Graphics; using OpenTK.Graphics.OpenGL; namespace TestApp { class MainClass { public static void Main(string[] args) { string mdlPath = "/home/me/Games/Newer/ModelRev/"; //skawo(); return; //oldBehaviour(); return; // Going to create a model! //string filename = "crapmap", resmdlname = "CrapMap"; /*string filename = "SMGoldwood"; ResFile rf = new ResFile(); ObjImporter.ImportModel(mdlPath, File.OpenText(mdlPath + "GoldwoodBase.obj"), rf, "GoldwoodBase", ObjImporter.LightmapType.Map); ObjImporter.ImportModel(mdlPath, File.OpenText(mdlPath + "BrownTree.obj"), rf, "BrownTree", ObjImporter.LightmapType.MapObj); ObjImporter.ImportModel(mdlPath, File.OpenText(mdlPath + "RedTree.obj"), rf, "RedTree", ObjImporter.LightmapType.MapObj); File.WriteAllBytes(mdlPath + "SMGoldwood.brres", BrresWriter.WriteFile(rf));*/ for (int i = 0; i < 10; i++) { string filename = "MMFullWorld"; string resmdlname = "WorldBase"; ResFile rf = new ResFile(); ObjImporter.ImportModel(mdlPath, File.OpenText(mdlPath + "fullworld-tree-fbx.obj"), rf, resmdlname, ObjImporter.LightmapType.Map); var m = rf.GetModelGroup()["WorldBase"]; var bc = m.Bytecode["DrawOpa"]; // trash most entries var newList = new List(); for (int j = 0; j < i; j++) { newList.Add(bc.Instructions[j]); } newList.Add(new NW4RTools.Models.ByteCode.DoneInstruction()); bc.Instructions = newList; File.WriteAllBytes(mdlPath + "base" + i.ToString() + ".brres", BrresWriter.WriteFile(rf)); } /*ResFile rf2 = BrresReader.LoadFile(File.ReadAllBytes(mdlPath + filename + ".brres")); using (var gw = new RenderWindow()) { gw.Title = filename; gw.SetModel(rf2, resmdlname); gw.Run(1, 1); } //*/ /*var texs = rf.GetGroup("Textures(NW4R)"); // wtf C#?! foreach (var kv in (IEnumerable>)texs) { kv.Value.BaseImage.Save(mdlPath + "images/" + kv.Key + ".png"); } //var objFile = File.Open(mdlPath + mdlName + ".obj", FileMode.OpenOrCreate); var objFile = File.Open(mdlPath + mdlName + ".dae", FileMode.OpenOrCreate); //var sw = new StreamWriter(objFile); //ObjWriter.WriteModel(sw, rf, mdlName); ColladaWriter.WriteModel(objFile, rf, mdlName + whatever); objFile.Close();*/ } private static void skawo() { string mdlPath = "/home/me/Games/Newer/ModelRev/"; string skawopath = "/home/me/Dropbox/NEWERsmbw/Nowy folder/obj/"; ResFile rf = new ResFile(); ObjImporter.ImportModel(skawopath, File.OpenText(skawopath + "edited.obj"), rf, "Skawo"); File.WriteAllBytes(skawopath + "skawo.brres", BrresWriter.WriteFile(rf)); ResFile rf2 = BrresReader.LoadFile(File.ReadAllBytes(skawopath + "skawo.brres")); using (var gw = new RenderWindow()) { gw.Title = "Skawo"; gw.SetModel(rf2, "Skawo"); gw.Run(1, 1); } } private static void oldBehaviour() { string mdlPath = "/home/me/Games/Newer/ModelRev/"; string mdlName = "cobKinokoRed"; //string mdlName = "lift_han_wood"; //string mdlName = "bgB_4502"; //string mdlName = "cobKoopaCastle"; //string mdlName = "waterPlate_W4boss"; //mdlName = "test_lift"; string whatever = (mdlName == "CS_W2" || mdlName == "CS_W3" || mdlName == "CS_W6") ? "a" : ""; byte[] file = File.ReadAllBytes(mdlPath + mdlName + ".brres"); ResFile rf = BrresReader.LoadFile(file); using (var gw = new RenderWindow()) { gw.Title = mdlName; gw.SetModel(rf, mdlName); gw.Run(1, 1); } //File.WriteAllBytes(mdlPath + mdlName + "_rewritten.brres", BrresWriter.WriteFile(rf)); var texs = rf.GetGroup("Textures(NW4R)"); // wtf C#?! foreach (var kv in (IEnumerable>)texs) { kv.Value.Images[0].Save(mdlPath + "images/" + kv.Key + ".png"); } //var objFile = File.Open(mdlPath + "lift_han_wood_M.dae", FileMode.OpenOrCreate); //ColladaExporter.WriteModel(objFile, rf, "lift_han_wood_M"); //objFile.Close(); } } }