DebuggerManager.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //------------------------------------------------------------
  2. // Game Framework v3.x
  3. // Copyright © 2013-2017 Jiang Yin. All rights reserved.
  4. // Homepage: http://gameframework.cn/
  5. // Feedback: mailto:jiangyin@gameframework.cn
  6. //------------------------------------------------------------
  7. using System;
  8. namespace GameFramework.Debugger
  9. {
  10. /// <summary>
  11. /// 调试管理器。
  12. /// </summary>
  13. internal sealed partial class DebuggerManager : IDebuggerManager
  14. {
  15. private readonly DebuggerWindowGroup m_DebuggerWindowRoot;
  16. private bool m_ActiveWindow;
  17. /// <summary>
  18. /// 初始化调试管理器的新实例。
  19. /// </summary>
  20. public DebuggerManager()
  21. {
  22. m_DebuggerWindowRoot = new DebuggerWindowGroup();
  23. m_ActiveWindow = false;
  24. }
  25. /// <summary>
  26. /// 获取或设置调试窗口是否激活。
  27. /// </summary>
  28. public bool ActiveWindow
  29. {
  30. get
  31. {
  32. return m_ActiveWindow;
  33. }
  34. set
  35. {
  36. m_ActiveWindow = value;
  37. }
  38. }
  39. /// <summary>
  40. /// 调试窗口根节点。
  41. /// </summary>
  42. public IDebuggerWindowGroup DebuggerWindowRoot
  43. {
  44. get
  45. {
  46. return m_DebuggerWindowRoot;
  47. }
  48. }
  49. /// <summary>
  50. /// 调试管理器轮询。
  51. /// </summary>
  52. /// <param name="elapseSeconds">逻辑流逝时间,以秒为单位。</param>
  53. /// <param name="realElapseSeconds">真实流逝时间,以秒为单位。</param>
  54. internal void Update(float elapseSeconds, float realElapseSeconds)
  55. {
  56. if (!m_ActiveWindow)
  57. {
  58. return;
  59. }
  60. m_DebuggerWindowRoot.OnUpdate(elapseSeconds, realElapseSeconds);
  61. }
  62. /// <summary>
  63. /// 关闭并清理调试管理器。
  64. /// </summary>
  65. internal void Shutdown()
  66. {
  67. m_ActiveWindow = false;
  68. m_DebuggerWindowRoot.Shutdown();
  69. }
  70. /// <summary>
  71. /// 注册调试窗口。
  72. /// </summary>
  73. /// <param name="path">调试窗口路径。</param>
  74. /// <param name="debuggerWindow">要注册的调试窗口。</param>
  75. /// <param name="args">初始化调试窗口参数。</param>
  76. public void RegisterDebuggerWindow(string path, IDebuggerWindow debuggerWindow, params object[] args)
  77. {
  78. if (string.IsNullOrEmpty(path))
  79. {
  80. throw new ArgumentNullException("Path is invalid.");
  81. }
  82. if (debuggerWindow == null)
  83. {
  84. throw new ArgumentNullException("Debugger window is invalid.");
  85. }
  86. m_DebuggerWindowRoot.RegisterDebuggerWindow(path, debuggerWindow);
  87. debuggerWindow.Initialize(args);
  88. }
  89. /// <summary>
  90. /// 获取调试窗口。
  91. /// </summary>
  92. /// <param name="path">调试窗口路径。</param>
  93. /// <returns>要获取的调试窗口。</returns>
  94. public IDebuggerWindow GetDebuggerWindow(string path)
  95. {
  96. return m_DebuggerWindowRoot.GetDebuggerWindow(path);
  97. }
  98. }
  99. }