Program.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. using System;
  2. using System.IO;
  3. using System.Reflection;
  4. using BabylonExport.Exporters;
  5. namespace BabylonExport
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. try
  12. {
  13. if (args.Length < 2)
  14. {
  15. DisplayUsage();
  16. return;
  17. }
  18. // Parsing arguments
  19. string input = "";
  20. string output = "";
  21. bool skinned = false;
  22. foreach (var arg in args)
  23. {
  24. var order = arg.Substring(0, 3);
  25. switch (order)
  26. {
  27. case "/i:":
  28. input = arg.Substring(3);
  29. break;
  30. case "/o:":
  31. output = arg.Substring(3);
  32. break;
  33. case "/sk":
  34. skinned = true;
  35. break;
  36. default:
  37. DisplayUsage();
  38. return;
  39. }
  40. }
  41. if (string.IsNullOrEmpty(input) || string.IsNullOrEmpty(output))
  42. {
  43. DisplayUsage();
  44. return;
  45. }
  46. var extension = Path.GetExtension(input).ToLower();
  47. var outputName = Path.Combine(output, Path.GetFileNameWithoutExtension(input) + ".babylon");
  48. if (!Directory.Exists(output))
  49. {
  50. Directory.CreateDirectory(output);
  51. }
  52. // Browsing exporters
  53. foreach (var type in Assembly.GetExecutingAssembly().GetTypes())
  54. {
  55. var interf = type.GetInterface("BabylonExport.IExporter");
  56. if (interf != null)
  57. {
  58. var importer = (IExporter)Activator.CreateInstance(type);
  59. if (!importer.SupportedExtensions.Contains(extension))
  60. {
  61. continue;
  62. }
  63. Console.WriteLine("Using " + type);
  64. // Importation
  65. try
  66. {
  67. importer.OnImportProgressChanged += progress =>
  68. {
  69. Console.CursorLeft = 0;
  70. Console.Write("Generation....{0} %", progress);
  71. };
  72. Console.ForegroundColor = ConsoleColor.Green;
  73. Console.WriteLine("Generation of " + outputName + " started");
  74. Console.WriteLine();
  75. Console.ResetColor();
  76. importer.GenerateBabylonFile(input, outputName, skinned);
  77. Console.ForegroundColor = ConsoleColor.Green;
  78. Console.WriteLine();
  79. Console.WriteLine();
  80. Console.WriteLine("Generation of " + outputName + " successfull");
  81. Console.ResetColor();
  82. }
  83. catch (Exception ex)
  84. {
  85. Console.ForegroundColor = ConsoleColor.Red;
  86. Console.WriteLine();
  87. Console.WriteLine(ex.Message);
  88. Console.ResetColor();
  89. }
  90. }
  91. }
  92. }
  93. catch (ReflectionTypeLoadException ex)
  94. {
  95. Console.ForegroundColor = ConsoleColor.Red;
  96. Console.WriteLine("Fatal error encountered:");
  97. Console.WriteLine(ex.LoaderExceptions[0].Message);
  98. Console.ResetColor();
  99. }
  100. catch (Exception ex)
  101. {
  102. Console.ForegroundColor = ConsoleColor.Red;
  103. Console.WriteLine("Fatal error encountered:");
  104. Console.WriteLine(ex.Message);
  105. Console.ResetColor();
  106. }
  107. }
  108. static void DisplayUsage()
  109. {
  110. Console.WriteLine("Babylon Import usage: BabylonImport.exe /i:\"source file\" /o:\"output folder\" [/sk]");
  111. }
  112. }
  113. }