namespace TEngine { /// /// 调试器管理器。 /// [UpdateModule] internal sealed partial class DebuggerManager : ModuleImp, IDebuggerManager { private readonly DebuggerWindowGroup _debuggerWindowRoot; private bool _activeWindow; /// /// 初始化调试器管理器的新实例。 /// public DebuggerManager() { _debuggerWindowRoot = new DebuggerWindowGroup(); _activeWindow = false; } /// /// 获取游戏框架模块优先级。 /// /// 优先级较高的模块会优先轮询,并且关闭操作会后进行。 internal override int Priority { get { return -1; } } /// /// 获取或设置调试器窗口是否激活。 /// public bool ActiveWindow { get { return _activeWindow; } set { _activeWindow = value; } } /// /// 调试器窗口根结点。 /// public IDebuggerWindowGroup DebuggerWindowRoot { get { return _debuggerWindowRoot; } } /// /// 调试器管理器轮询。 /// /// 逻辑流逝时间,以秒为单位。 /// 真实流逝时间,以秒为单位。 internal override void Update(float elapseSeconds, float realElapseSeconds) { if (!_activeWindow) { return; } _debuggerWindowRoot.OnUpdate(elapseSeconds, realElapseSeconds); } /// /// 关闭并清理调试器管理器。 /// internal override void Shutdown() { _activeWindow = false; _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."); } _debuggerWindowRoot.RegisterDebuggerWindow(path, debuggerWindow); debuggerWindow.Initialize(args); } /// /// 解除注册调试器窗口。 /// /// 调试器窗口路径。 /// 是否解除注册调试器窗口成功。 public bool UnregisterDebuggerWindow(string path) { return _debuggerWindowRoot.UnregisterDebuggerWindow(path); } /// /// 获取调试器窗口。 /// /// 调试器窗口路径。 /// 要获取的调试器窗口。 public IDebuggerWindow GetDebuggerWindow(string path) { return _debuggerWindowRoot.GetDebuggerWindow(path); } /// /// 选中调试器窗口。 /// /// 调试器窗口路径。 /// 是否成功选中调试器窗口。 public bool SelectDebuggerWindow(string path) { return _debuggerWindowRoot.SelectDebuggerWindow(path); } } }