42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
|
|
#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);
|
||
|
|
}
|
||
|
|
}
|