//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ namespace GameFramework.Debugger { /// /// 调试器管理器。 /// internal sealed partial class DebuggerManager : GameFrameworkModule, IDebuggerManager { private readonly DebuggerWindowGroup m_DebuggerWindowRoot; private bool m_ActiveWindow; /// /// 初始化调试器管理器的新实例。 /// public DebuggerManager() { m_DebuggerWindowRoot = new DebuggerWindowGroup(); m_ActiveWindow = false; } /// /// 获取游戏框架模块优先级。 /// /// 优先级较高的模块会优先轮询,并且关闭操作会后进行。 internal override int Priority { get { return -1; } } /// /// 获取或设置调试器窗口是否激活。 /// public bool ActiveWindow { get { return m_ActiveWindow; } set { m_ActiveWindow = value; } } /// /// 调试器窗口根结点。 /// public IDebuggerWindowGroup DebuggerWindowRoot { get { return m_DebuggerWindowRoot; } } /// /// 调试器管理器轮询。 /// /// 逻辑流逝时间,以秒为单位。 /// 真实流逝时间,以秒为单位。 internal override void Update(float elapseSeconds, float realElapseSeconds) { if (!m_ActiveWindow) { return; } m_DebuggerWindowRoot.OnUpdate(elapseSeconds, realElapseSeconds); } /// /// 关闭并清理调试器管理器。 /// internal override void Shutdown() { m_ActiveWindow = false; m_DebuggerWindowRoot.Shutdown(); } /// /// 注册调试器窗口。 /// /// 调试器窗口路径。 /// 要注册的调试器窗口。 /// 初始化调试器窗口参数。 public void RegisterDebuggerWindow(string path, IDebuggerWindow debuggerWindow, params object[] args) { if (string.IsNullOrEmpty(path)) { throw new GameFrameworkException("Path is invalid."); } if (debuggerWindow == null) { throw new GameFrameworkException("Debugger window is invalid."); } m_DebuggerWindowRoot.RegisterDebuggerWindow(path, debuggerWindow); debuggerWindow.Initialize(args); } /// /// 解除注册调试器窗口。 /// /// 调试器窗口路径。 /// 是否解除注册调试器窗口成功。 public bool UnregisterDebuggerWindow(string path) { return m_DebuggerWindowRoot.UnregisterDebuggerWindow(path); } /// /// 获取调试器窗口。 /// /// 调试器窗口路径。 /// 要获取的调试器窗口。 public IDebuggerWindow GetDebuggerWindow(string path) { return m_DebuggerWindowRoot.GetDebuggerWindow(path); } /// /// 选中调试器窗口。 /// /// 调试器窗口路径。 /// 是否成功选中调试器窗口。 public bool SelectDebuggerWindow(string path) { return m_DebuggerWindowRoot.SelectDebuggerWindow(path); } } }