EM_Task/CoreUObject/Private/Misc/CookSideEffectCollector.cpp

42 lines
1.3 KiB
C++
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
#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);
}
}