#include "Misc/CookSideEffectCollector.h" #include "UObject/SavePackage/SavePackageUtilities.h" static ICookSideEffectCollector::FFactoryFunction CookSideEffectFactory; thread_local ICookSideEffectCollector* ThreadCookCollectorInstance = nullptr; void ICookSideEffectCollector::SetFactory(FFactoryFunction InFactory) { CookSideEffectFactory = InFactory; } void ICookSideEffectCollector::SetInstance(ICookSideEffectCollector* InInstance) { ThreadCookCollectorInstance = InInstance; } ICookSideEffectCollector* ICookSideEffectCollector::GetInstance() { if (!ThreadCookCollectorInstance && CookSideEffectFactory) { ThreadCookCollectorInstance = CookSideEffectFactory(); } return ThreadCookCollectorInstance; } void ICookSideEffectCollector::HandleCookSideEffects(FCookSideEffects& SideEffects) { FEDLCookChecker& EDLCookChecker = FEDLCookChecker::Get(); for (auto& ExportPath: SideEffects.EdlExports) { EDLCookChecker.AddExport_Path(ExportPath); } for (auto& Import: SideEffects.EdlImports) { EDLCookChecker.AddImport_Path(Import.Path, Import.Package); } for (auto& Arcs: SideEffects.EdlArcs) { EDLCookChecker.AddArc_Path(Arcs.DepObjectPath, Arcs.bDepIsSerialize, Arcs.ExportObjectPath, Arcs.bExportIsSerialize); } }