public static void XFile(string arg) { using (FileStream stream = new FileStream(arg, FileMode.Open)) using (BinaryReader reader = new BinaryReader(stream)) { XFile file = new XFile(reader); string modelFormat = Config.GetValueOrDefault("Models", "Format", "DAE"); if (modelFormat == "OBJ") { bool splitMaterials = Config.GetValueOrDefault("OBJ", "SplitByMaterial", "False").ToLower() == "true"; Console.WriteLine(" Writing OBJ file..."); XUtils.ExportOBJ(file.Objects[0][1].Object, Path.ChangeExtension(arg, ".obj"), SharpDX.Matrix.RotationX(-SharpDX.MathUtil.PiOverTwo), true, ".dds", splitMaterials); } else if (modelFormat == "DAE") { BHDFile bhd = null; if (File.Exists(Path.ChangeExtension(arg, ".bhd"))) { Console.WriteLine(" Reading BHD..."); bhd = new BHDFile(Path.ChangeExtension(arg, ".bhd")); } /*if (bhd == null) * { * Console.WriteLine("[ERROR]: No BHD file with matching name! Aborting."); * throw new Exception(); * }*/ Console.WriteLine(" Writing DAE file..."); bool stripUnusedMaterials = Config.GetValueOrDefault("DAE", "StripUnusedMaterials", "False").ToLower() == "true"; Collada.Utils.ExportCOLLADA(file, bhd, Path.ChangeExtension(arg, ".dae"), SharpDX.Matrix.RotationX(-SharpDX.MathUtil.PiOverTwo), true, ".dds", stripUnusedMaterials); } else if (modelFormat == "TXT") { Console.WriteLine(" Dumping X tokens..."); stream.Position = 0; XHeader header = new XHeader(reader); List <XTemplate> templates = new List <XTemplate>(); List <XObject> objects = new List <XObject>(); XReader xreader = new XReader(reader, header, templates, objects); using (StreamWriter writer = new StreamWriter(Path.ChangeExtension(arg, ".txt"))) { foreach (XToken token in xreader.Tokens) { writer.WriteLine(token.ToString()); } } } else { Console.WriteLine(" [ERROR]: Invalid model format specified in LOMNTool.ini! (LOMNTool.ini:[Models].Format)"); } } }