// Copyright Epic Games, Inc. All Rights Reserved. #include "GeometryProcessingInterfacesModule.h" #include "CoreGlobals.h" #include "Features/IModularFeatures.h" #include "Modules/ModuleManager.h" #include "GeometryProcessingInterfaces/ApproximateActors.h" #include "GeometryProcessingInterfaces/MeshAutoUV.h" IMPLEMENT_MODULE(FGeometryProcessingInterfacesModule, GeometryProcessingInterfaces); void FGeometryProcessingInterfacesModule::StartupModule() { } void FGeometryProcessingInterfacesModule::ShutdownModule() { ApproximateActors = nullptr; CombineMeshInstances = nullptr; MeshAutoUV = nullptr; } namespace { template TModularFeatureInterface* GetModularFeatureImplementation() { TArray AvailableImplementations = IModularFeatures::Get().GetModularFeatureImplementations(TModularFeatureInterface::GetModularFeatureName()); return (AvailableImplementations.Num() > 0) ? AvailableImplementations[0] : nullptr; } } IGeometryProcessing_ApproximateActors* FGeometryProcessingInterfacesModule::GetApproximateActorsImplementation() { if (ApproximateActors == nullptr) { ApproximateActors = GetModularFeatureImplementation(); } return ApproximateActors; } IGeometryProcessing_MeshAutoUV* FGeometryProcessingInterfacesModule::GetMeshAutoUVImplementation() { if (MeshAutoUV == nullptr) { MeshAutoUV = GetModularFeatureImplementation(); } return MeshAutoUV; }