Files
UnrealEngineUWP/Engine/Source/Developer/Datasmith/DatasmithFacade/Private/DatasmithFacadeDirectLink.cpp
Marc Audy 8f73cd7fa9 Merge UE5/Release-Engine-Staging @ 15630841 to UE5/Main
This represents UE4/Main @ 15601601

[CL 15631170 by Marc Audy in ue5-main branch]
2021-03-05 19:27:14 -04:00

70 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "DatasmithFacadeDirectLink.h"
#include "DatasmithFacadeLog.h"
#include "DatasmithFacadeScene.h"
#include "DatasmithExporterManager.h"
#include "Modules/ModuleManager.h"
#include "Misc/CommandLine.h"
#include "DatasmithDirectLink.h"
bool FDatasmithFacadeDirectLink::Init()
{
return Init(false, nullptr);
}
bool FDatasmithFacadeDirectLink::Init(bool bUseDatasmithExporterUI, const TCHAR* RemoteEngineDirPath)
{
FDatasmithExporterManager::FInitOptions Options;
Options.bEnableMessaging = true; // DirectLink requires the Messaging service.
Options.bSuppressLogs = false; // Log are useful, don't suppress them
Options.bUseDatasmithExporterUI = bUseDatasmithExporterUI;
Options.RemoteEngineDirPath = RemoteEngineDirPath;
// #ue_directlink_cleanup it's not our role to init/deinit exporter manager here. See also Shutdown()
if (!FDatasmithExporterManager::Initialize(Options))
{
UE_LOG(LogDatasmithFacade, Error, TEXT("Fail to initialize FDatasmithExporterManager"));
return false;
}
if (int32 ErrorCode = FDatasmithDirectLink::ValidateCommunicationSetup())
{
UE_LOG(LogDatasmithFacade, Error, TEXT("Communication setup issue: ErrorCode=%d"), ErrorCode);
return false;
}
UE_LOG(LogDatasmithFacade, Display, TEXT("FDatasmithFacadeDirectLink Init OK"));
return true;
}
bool FDatasmithFacadeDirectLink::Shutdown()
{
FDatasmithDirectLink::Shutdown();
FDatasmithExporterManager::Shutdown();
return true;
}
bool FDatasmithFacadeDirectLink::InitializeForScene(FDatasmithFacadeScene* FacadeScene)
{
if (FacadeScene)
{
TSharedRef<IDatasmithScene> Scene = FacadeScene->GetScene();
return Impl.InitializeForScene(Scene);
}
return false;
}
bool FDatasmithFacadeDirectLink::UpdateScene(FDatasmithFacadeScene* FacadeScene)
{
if (FacadeScene)
{
TSharedRef<IDatasmithScene> Scene = FacadeScene->GetScene();
return Impl.UpdateScene(Scene);
}
return false;
}