虚幻4 加载蓝图过程(2)——读取文件过程
来源:互联网 发布:mac 无线传文件 安卓 编辑:程序博客网 时间:2024/05/21 06:16
读取文件过程
/UnrealEngine/Engine/Source/Runtime/CoreUObject/Private/UObject/LinkerLoad.cpp
/** * Ticks an in-flight linker and spends InTimeLimit seconds on creation. This is a soft time limit used * if bInUseTimeLimit is true. * * @paramInTimeLimitSoft time limit to use if bInUseTimeLimit is true * @parambInUseTimeLimitWhether to use a (soft) timelimit * @parambInUseFullTimeLimitWhether to use the entire time limit, even if blocked on I/O * * @returntrue if linker has finished creation, false if it is still in flight */FLinkerLoad::ELinkerStatus FLinkerLoad::Tick( float InTimeLimit, bool bInUseTimeLimit, bool bInUseFullTimeLimit ){ELinkerStatus Status = LINKER_Loaded;if( bHasFinishedInitialization == false ){// Store variables used by functions below.TickStartTime= FPlatformTime::Seconds();bTimeLimitExceeded= false;bUseTimeLimit= bInUseTimeLimit;bUseFullTimeLimit= bInUseFullTimeLimit;TimeLimit= InTimeLimit;do{bool bCanSerializePackageFileSummary = false;if (GEventDrivenLoaderEnabled){check(Loader || bDynamicClassLinker);bCanSerializePackageFileSummary = true;}else{// Create loader, aka FArchive used for serialization and also precache the package file summary.// false is returned until any precaching is complete.SCOPED_LOADTIMER(LinkerLoad_CreateLoader);Status = CreateLoader(TFunction<void()>([]() {}));bCanSerializePackageFileSummary = (Status == LINKER_Loaded);}// Serialize the package file summary and presize the various arrays (name, import & export map)if (bCanSerializePackageFileSummary){SCOPED_LOADTIMER(LinkerLoad_SerializePackageFileSummary);Status = SerializePackageFileSummary();}// Serialize the name map and register the names.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_SerializeNameMap);Status = SerializeNameMap();}// Serialize the gatherable text data map.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_SerializeGatherableTextDataMap);Status = SerializeGatherableTextDataMap();}// Serialize the import map.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_SerializeImportMap);Status = SerializeImportMap();}// Serialize the export map.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_SerializeExportMap);Status = SerializeExportMap();}// Fix up import map for backward compatible serialization.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_FixupImportMap);Status = FixupImportMap();}// Fix up export map for object class conversion if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_FixupExportMap);Status = FixupExportMap();}// Serialize the dependency map.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_SerializeDependsMap);Status = SerializeDependsMap();}// Hash exports.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_CreateExportHash);Status = CreateExportHash();}// Find existing objects matching exports and associate them with this linker.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_FindExistingExports);Status = FindExistingExports();}if (Status == LINKER_Loaded){SCOPED_LOADTIMER(LinkerLoad_SerializePreloadDependencies);Status = SerializePreloadDependencies();}// Finalize creation process.if( Status == LINKER_Loaded ){SCOPED_LOADTIMER(LinkerLoad_FinalizeCreation);Status = FinalizeCreation();}}// Loop till we are done if no time limit is specified, or loop until the real time limit is up if we want to use full timewhile (Status == LINKER_TimedOut && (!bUseTimeLimit || (bUseFullTimeLimit && !IsTimeLimitExceeded(TEXT("Checking Full Timer")))));}if (Status == LINKER_Failed){LinkerRoot->LinkerLoad = nullptr;#if WITH_EDITORdelete LoadProgressScope;LoadProgressScope = nullptr;#endif}// Return whether we completed or not.return Status;}
阅读全文
0 0
- 虚幻4 加载蓝图过程(2)——读取文件过程
- 虚幻4 加载蓝图的的过程(1)——读取文件头
- 虚幻4——蓝图在脚本之间的交互
- 虚幻4 渲染staticmesh过程。
- 虚幻4蓝图:Hello World
- 【虚幻4】学习总结2-蓝图入门1
- 【虚幻4】学习总结3-蓝图入门2
- 虚幻4 材质的编译2 真正的编译过程
- 虚幻4 D3D渲染过程的笔记
- 虚幻4 渲染一个BOX的过程
- 虚幻4 蓝图被编译成的蓝图汇编代码
- HDFS读取文件过程
- 虚幻4蓝图:流程控制(一)
- 虚幻4C++向蓝图发送消息。
- 从虚幻4蓝图到VisualFunction
- 虚幻4退出游戏蓝图节点
- 虚幻4地形混合材质蓝图连接
- 虚幻4菜单编辑蓝图笔记
- iOS编程学习八
- PHP中利用PHPMailer实现发邮件
- 《UNIX环境高级编程》第17章 高级进程间通信
- appium+Python真机运行测试demo的方法
- 字符的编码方式
- 虚幻4 加载蓝图过程(2)——读取文件过程
- 创建Servlet时在web.xml的中配置
- 格式化处理
- ARM按键控制LED
- Linux的总线、设备、驱动模型蕴含的思想
- 循环素数
- 设置画布的大小
- 3452. 【NOIP2013中秋节模拟】长方形(rectangle)
- Nginx-Tomcat服务器集群架构 Tomcat直接返回结果给客户端小思路