WinMain
1 记录实例句柄及包名称
2 生成Log文件路径名称-存于Log.Filename
3 app初始化-appInit
3.1 文件管理器GFileManager
3.2 初始化 CRC 表-GCRCTable
3.3 初始化Log表-GLogs
3.4 记录命令行-GCmdLine
3.5 初始化错误信息-GErrorHist
3.6 内存分配器初始化-FMallocWindows.Init
3.6.1 获取页面大小
3.6.2 初始化一系列表:OsTable、PoolTable、MemSizeToPoolTable、PoolIndirect
3.7 初始化命名系统-FName::StaticInit()
3.7.1 初始化Hash表:NameHash
3.7.2 定义两个宏用于注册Name:REGISTER_NAME、REG_NAME_HIGH
3.7.3 验证NameHash中是否有重复
3.8 运行平台版本信息初始化-appPlatformPreInit():将版本信息存于GRunningOS
3.9 GFileManager->Init(1); GFileManager->SetDefaultDirectory( appBaseDir() );
3.10 将Default.ini中内容拷贝到:包名.ini(GIni存路径)中
3.11 将DefUser.ini中内容拷贝到User.ini(GUserIni存路径)中
3.12 初始化Config信息-由GIni和GUserIni来初始化,并存于GConfig
3.13 设置语法格式-UObject::SetLanguage
3.14 初始化Obj管理器、-UObject::StaticInit()
3.14.1 初始化Obj哈希表-GObjHash
3.14.2 注册class-ProcessRegistrants()
3.14.3 新建一个临时Package-GObjTransientPkg 新建一个Package的Map-GObjPackageRemap
3.15 内存栈GMem初始化大小65536-FMemStack::Init
3.16 文件流GFileStream初始化-FFileStream::Init
3.17 运行平台详细信息初始化-appPlatformInit() 记录详细的硬件信息:GSys、GPageSize、GProcessorCount、GMachineCPU、GSecondsPerCycle、GPhysicalMemory
4 窗体初始化-InitWindowing
4.1 新建一个窗体管理器-GWindowManager
4.2 将GWindowManager作为根窗体
5 注册所有的窗体类(从WWindow派生的类)
6 创建一个MdiFrame窗体-Frame
7 Frame.OpenWindow()
7.1 创建窗体-PerformCreateWindowEx
7.1.1 从NewCQClient.ini中读窗体位置([WindowPositions]标签)
7.1.2 把该窗体的指针加入到全局的窗体列表中-_Windows
8 初始化闪屏封面-InitSplash
8.1 导入图片EdSplash.bmp
8.2 创建一个对话框窗体(对应资源IDDIALOG_Splash)
9 初始化LogWindow-GLogWindow
10 初始化Engine,并将Engine指针存于GUnrealEd、GEditor-InitUnrealEdEngine()
10.1 设置Exec hook - GExec
10.2 加载类"UnrealEd.UnrealEdEngine"并存于EngineClass-UObject::StaticLoadClass
10.2.1 UObject::StaticLoadObject
10.3 由EngineClass构造一个Object对象:Engine - ConstructObject
10.4 Engine->Init()
10.4.1 UEditorEngine::Init()
初始化GEditor为this
初始化Editor - UEditorEngine::InitEditor()
UEngine::Init()
从NewCQClient.ini中读取[URL]的数据 - FURL::StaticInit()
引擎内存栈GEngineMem初始化分配65536
缓冲区GCache初始化
引擎状态管理器GEngineStats初始化
随机数生成器初始化
GStatGraph、GTempLineBatcher、Cylinder、GGlobalTempObjects新建对象
g_pTerrainGridBrush新建对象
从NewCQClient.ini中读取[D3D9Drv.D3D9RenderDevice]中的视口参数
初始化音频 - UEngine::InitAudio()
初始化Topic表 - FGlobalTopicTable::Init()
编辑器其他参数初始化
创建transaction - Trans
加载Package - LoadPackage
初始化Client
10.4.2 设置EditorModel为:EM_ViewportMove
11 设置CQShell
12 创建一个游戏接口指针 - g_pUnInterface
13 g_pUnInterface->Init - UnInterface::Init
13.1 新建一个UnRepresentShell对象,并设置视口
13.2 新建Npc的Map - m_Npcs
13.3 加载技能相关数据
14 初始化CQShell的Name构造宏 - UCQShell::InitCQShellNames()
15 设置编辑器的主窗体句柄 - 存于GUnrealEd->hWndMain、GhwndEditorFrame
16 为主窗体启动一个计时器 - 每一分钟一次,用于自动保存
17 若没有UnrealEd.ini,就从DefUnrealEd.ini拷贝一份到UnrealEd.ini
18 初始化GLastDir数组,用于记录上次使用的资源的路径
19 从UnrealEd2.ini中读取地图资源的扩展名,存于GMapExt,并让UnravelEdEngine执行命令:MODE MAPEXT,已设置地图资源的扩展名
20 初始化Input - UInput::StaticInitInput()
21 初始化编辑器的一系列Tools: GTerrainTools、GRebuildTools、GEdModeTools、GEdModeTools、GTBOptions、 GMaterialTools、GTexAlignTools、GMatineeTools、GButtonBar
22 创建浏览器总窗体 - GBrowserMaster,并设置好它的一系列子窗体的指针
23 创建一些面板:GBuildSheet、GSurfPropSheet、GTerrainEditSheet、 GDlgMapBlockEditor、GMatineeSheet、GCodeFrame
24 编辑器主框架打开LevelView - Frame.OpenLevelView()
25 从配置文件UnrealEd.ini中读取,浏览器的各个子窗体的是否显示和停靠方式
26 设置RepresentShell的视口及主窗口句柄
27 加载菜单IDMENU_MainMenu到主框架上
28 往菜单上添加“最近使用的地图”,数据来源于UnrealEd.ini中的[MRU]
29 Main Topic