in Source/RiderSourceCodeAccess/Private/RiderSourceCodeAccessorModule.cpp [62:91]
void FRiderSourceCodeAccessModule::GenerateUprojectAccessors(const TArray<FInstallInfo>& InstallInfos)
{
TArray<TArray<FInstallInfo>::ElementType> UprojectInfos = InstallInfos.FilterByPredicate([](const FInstallInfo& Item) -> bool
{
return Item.SupportUprojectState != FInstallInfo::ESupportUproject::None;
});
if(UprojectInfos.Num() == 0) return;
if(UprojectInfos.Num() > 1)
{
for (const FInstallInfo& UprojectInfo : UprojectInfos)
{
TSharedRef<FRiderSourceCodeAccessor> RiderSourceCodeAccessor = MakeShareable(new FRiderSourceCodeAccessor());
RiderSourceCodeAccessor->Init(UprojectInfo, FRiderSourceCodeAccessor::EProjectModel::Uproject);
IModularFeatures::Get().RegisterModularFeature(FRiderSourceCodeAccessor::FeatureType(), &RiderSourceCodeAccessor.Get());
RiderSourceCodeAccessors.Add(RiderSourceCodeAccessor->GetFName(), RiderSourceCodeAccessor);
}
}
const TSharedRef<FRiderSourceCodeAccessor> RiderSourceCodeAccessor = MakeShareable(new FRiderSourceCodeAccessor());
RiderSourceCodeAccessor->Init(InstallInfos.Last(), FRiderSourceCodeAccessor::EProjectModel::Uproject,
FRiderSourceCodeAccessor::EAccessType::Aggregate);
IModularFeatures::Get().RegisterModularFeature(FRiderSourceCodeAccessor::FeatureType(), &RiderSourceCodeAccessor.Get());
FString AccessorName = TEXT("Rider uproject");
if(InstallInfos.Last().SupportUprojectState == FInstallInfo::ESupportUproject::Beta)
AccessorName += TEXT(" (experimental)");
RiderSourceCodeAccessors.Add(*AccessorName, RiderSourceCodeAccessor);
}