Files
XCEngine/docs/api/XCEngine/Editor/Application/Initialize.md

50 lines
1.5 KiB
Markdown

# Application::Initialize
**命名空间**: `XCEngine::Editor`
**类型**: `method`
**源文件**: `editor/src/Application.h`
## 签名
```cpp
bool Initialize(HWND hwnd);
```
## 作用
完成当前 Editor 宿主壳的启动编排,包括日志、项目根解析、窗口渲染宿主、资源系统、`EditorContext`、脚本运行时、ImGui 和 `EditorLayer` 挂接。
## 当前实现行为
- 启动早期会先执行:
- `InstallCrashExceptionFilter()`
- `RedirectStderrToExecutableLog()`
- `ConfigureEditorLogging(exeDir)`
- 然后解析当前编辑器项目根目录,并尝试切换工作目录到该路径。
- 之后缓存主窗口句柄 `m_hwnd`,并调用 `InitializeWindowRenderer(hwnd)`
- 窗口渲染宿主成功后,会初始化全局 `ResourceManager` 并把资源根设置到项目根目录。
- 接着按顺序初始化:
- `EditorContext`
- 脚本运行时
- ImGui session / backend / 内置图标 / `ViewportHostService`
- `EditorLayer`
- 最后清空上一帧时间戳状态并把 `m_renderReady` 设为 `true`
## 失败路径
- 任一关键步骤失败时,当前会直接返回 `false`
- `InitializeWindowRenderer(...)` 失败时还会弹出 Win32 `MessageBoxW` 错误框。
## 当前实现边界
- 当前启动路径默认只面向单窗口 Win32 + D3D12 宿主。
- 项目根目录由宿主启动时自动解析,不要求外部先传入项目路径。
## 相关文档
- [Application](Application.md)
- [Shutdown](Shutdown.md)
- [SwitchProject](SwitchProject.md)