Init.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using System;
  2. using System.Collections.Generic;
  3. using CommandLine;
  4. using MemoryPack;
  5. namespace ET
  6. {
  7. public static class Init
  8. {
  9. private static VProcess vProcess;
  10. public static void Start()
  11. {
  12. try
  13. {
  14. AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
  15. {
  16. Log.Error(e.ExceptionObject.ToString());
  17. };
  18. // 命令行参数
  19. Parser.Default.ParseArguments<Options>(System.Environment.GetCommandLineArgs())
  20. .WithNotParsed(error => throw new Exception($"命令行格式错误! {error}"))
  21. .WithParsed(World.Instance.AddSingleton);
  22. World.Instance.AddSingleton<Logger>().ILog = new NLogger(Options.Instance.AppType.ToString(), Options.Instance.Process, "../Config/NLog/NLog.config");
  23. ETTask.ExceptionHandler += Log.Error;
  24. World.Instance.AddSingleton<VProcessSingleton>();
  25. World.Instance.AddSingleton<EventSystem>();
  26. World.Instance.AddSingleton<ObjectPool>();
  27. ThreadPoolScheduler threadPoolScheduler = World.Instance.AddSingleton<ThreadPoolScheduler>();
  28. threadPoolScheduler.ThreadCount = 10;
  29. vProcess = VProcessSingleton.Instance.Create();
  30. // 异步方法全部会回掉到主线程
  31. vProcess.AddSingleton<MainThreadSynchronizationContext>();
  32. vProcess.AddSingleton<TimeInfo>();
  33. vProcess.AddSingleton<IdGenerater>();
  34. vProcess.AddSingleton<TimerComponent>();
  35. vProcess.AddSingleton<CoroutineLockComponent>();
  36. Log.Console($"{Parser.Default.FormatCommandLine(Options.Instance)}");
  37. vProcess.AddSingleton<CodeLoader>().Start();
  38. }
  39. catch (Exception e)
  40. {
  41. Log.Error(e);
  42. }
  43. }
  44. public static void Update()
  45. {
  46. vProcess.Update();
  47. }
  48. public static void LateUpdate()
  49. {
  50. vProcess.LateUpdate();
  51. }
  52. public static void FrameFinishUpdate()
  53. {
  54. vProcess.FrameFinishUpdate();
  55. }
  56. }
  57. }