Skip to content

Commit

Permalink
2024.2
Browse files Browse the repository at this point in the history
Updates

* Documentation updates and improvements
* UI improvements and polish
* Removal of deprecated `GetTermsOfUseAsync`
* Addition of new `UModioSubsystem::SetLanguage` method - calling this as part of your plugin initialization flow will set the language for all REST API calls, eliminating the need to explicitly pass one to methods like `GetTermsOfUseAsync`
* NativeSDK updated to 2024.2

Bugfixes
* Profiling support will no longer be enabled in Test configuration as it utilised functionality not available there

Breaking Changes
* Deprecated version of `GetTermsOfUseAsync` has been removed
* `GetTermsOfUseAsync` no longer requires an explicit language parameter
  • Loading branch information
stephenwhittle committed Feb 28, 2024
1 parent f52863f commit c4de58f
Show file tree
Hide file tree
Showing 235 changed files with 869 additions and 485 deletions.
4 changes: 3 additions & 1 deletion Config/Defaultmodio.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[CoreRedirects]
+PropertyRedirects=(OldName="/Script/ModioUI5.ModioCommonFeaturedParamsSettings.AdditionalCategoryParams",NewName="/Script/ModioUI5.ModioCommonFeaturedParamsSettings.CategoryParams")
+PropertyRedirects=(OldName="/Script/ModioUI5.ModioCommonUISettings.FeaturedAdditionalParams",NewName="/Script/ModioUI5.ModioCommonUISettings.FeaturedParams")
+PackageRedirects=(OldName="/Script/ModioUI5", NewName="/Script/ModioUI")
+PackageRedirects=(OldName="/Script/ModioUI5", NewName="/Script/ModioUI")
+FunctionRedirects=(OldName="/Script/ModioUICore.ModioUISubsystem.ExecuteOnModBrowserClosedDelegate",NewName="/Script/ModioUICore.ModioUISubsystem.ExecuteOnModBrowserCloseRequestedDelegate")
+PropertyRedirects=(OldName="ModioUISubsystem.ShowModBrowserUIForPlayer.BrowserClosedDelegate",NewName="OnModBrowserCloseRequestedDelegate")
Binary file modified Content/GettingStarted/OnboardingGuideWidget.uasset
Binary file not shown.
Binary file removed Content/Tutorials/ModioAsyncCalls.uasset
Binary file not shown.
Binary file removed Content/Tutorials/ModioBrowsingMods.uasset
Binary file not shown.
Binary file removed Content/Tutorials/ModioEmailAuthentication.uasset
Binary file not shown.
Binary file removed Content/Tutorials/ModioInitialization.uasset
Binary file not shown.
Binary file removed Content/Tutorials/ModioModManagement.uasset
Binary file not shown.
Binary file removed Content/Tutorials/TutorialBP.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/UI5/Default/Styles/CheckBox/DefaultCheckBoxStyle.uasset
Binary file not shown.
Binary file modified Content/UI5/Default/Styles/CheckBox/DefaultCheckBoxTextStyle.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/UI5/Default/Styles/Tab/DefaultTabActiveTextStyle.uasset
Binary file not shown.
Binary file modified Content/UI5/Default/Styles/Tab/DefaultTabButtonStyle.uasset
Binary file not shown.
Binary file modified Content/UI5/Default/Styles/Tab/DefaultTabNormalTextStyle.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/UI5/Default/Widgets/Auth/W_ModioCommonAuthView.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/UI5/Default/Widgets/Dialog/W_ModioCommonDialogView.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/UI5/Default/Widgets/Report/W_ModioCommonReportView.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified Content/UI5/Default/Widgets/Tab/W_ModioCommonTabList.uasset
Binary file not shown.
Binary file modified Content/UI5/Default/Widgets/Tag/W_ModioCommonTagsEntry.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
728 changes: 472 additions & 256 deletions Doc/documentation.html

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions Doc/getting-started.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Once this is done, you can configure the plugin and get started.

The plugin requires some configuration information to behave correctly. You can access the configuration settings in the Project Settings window:

image::img/UE4/plugin_settings.png[]
image::img/plugin_settings.png[]

The settings have the following parameters:

Expand All @@ -26,6 +26,7 @@ The settings have the following parameters:
|[.paramname]#API Key#|Your mod.io-provided Game Id for the target environment (Live, or Test)
|[.paramname]#Environment#|Your current environment, Live or Test (check difference below)
|[.paramname]#Log Level#|The default logging level to use. Messages with a lower log level will be silently discarded.
|[.paramname]#Portal#|The default portal to use. This usually corresponds to the store your game will be being distributed through.
|[.paramname]#Use Background Thread#|Run the mod.io plugin on a managed background thread.

|===
Expand Down Expand Up @@ -647,7 +648,7 @@ image::img/query_user_subscriptions.png[]
[source,c++]
----
void UModioManager::FetchExternalUpdates()
void UModioManager::QueryUserSubscriptions()
{
if (GEngine->GetEngineSubsystem<UModioSubsystem>())
{
Expand Down
Binary file removed Doc/img/UE4/plugin_settings.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_authprovider.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_backgroundmaterial.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_categories.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_colorpresets.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_colorref.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_defaultstyle.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_editstyle.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_empty_taglist.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_glyphprovider.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_inputmapping.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_localized_tags.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_materialref.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_navconfig.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_roundedrectmaterial.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_select_palette_color.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_settings.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_specifiedmaterial.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_styleref.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_styleset.png
Binary file not shown.
Binary file removed Doc/img/UE4/plugin_ui_widgetstyleassets.png
Binary file not shown.
Binary file modified Doc/img/nd_img_BP_ListenForInputAction.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified Doc/img/nd_img_DisplayErrorDialog.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed Doc/img/nd_img_ExecuteOnModBrowserClosedDelegate.png
Binary file not shown.
Binary file removed Doc/img/nd_img_GetCurrentImageGalleryIndex.png
Diff not rendered.
Binary file modified Doc/img/nd_img_GetModID.png
Binary file added Doc/img/nd_img_GetSelectedImageGalleryIndex.png
Binary file modified Doc/img/nd_img_K2_GetMutedUsersAsync.png
Binary file modified Doc/img/nd_img_K2_GetTermsOfUseAsync.png
Binary file modified Doc/img/nd_img_K2_ListUserCreatedModsAsync.png
Binary file modified Doc/img/nd_img_K2_QueryUserProfile.png
Binary file added Doc/img/nd_img_K2_SetLanguage.png
Binary file modified Doc/img/nd_img_K2_SubmitNewModFileForMod.png
Binary file modified Doc/img/nd_img_RequestModInfoForModIDs.png
Binary file modified Doc/img/nd_img_SetInitialScreenVisibility.png
Binary file modified Doc/img/nd_img_SetIntegerArg.png
Binary file modified Doc/img/nd_img_SetNextButtonVisibility.png
Binary file modified Doc/img/nd_img_SetNoResultsVisibility.png
Binary file modified Doc/img/nd_img_SetPageNavigationVisibility.png
Binary file modified Doc/img/nd_img_SetPreviousButtonVisibility.png
Binary file added Doc/img/nd_img_SetShowTermsOfView.png
Binary file modified Doc/img/nd_img_SetTextArg.png
Binary file modified Doc/img/nd_img_ShowModBrowserUIForPlayer.png
Binary file added Doc/img/plugin_settings.png
Binary file added Doc/img/plugin_ui_browserquickaccess.png
Binary file added Doc/img/plugin_ui_closemodbrowser.png
Binary file added Doc/img/plugin_ui_closemodbrowser_2.png
Binary file modified Doc/img/plugin_ui_showforplayer.png
Binary file modified Doc/img/plugin_window.png
66 changes: 59 additions & 7 deletions Doc/ui-documentation.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@ These modules are optional - you can remove them, the UI folder in the Plugin Co

=== Displaying the Mod Browser

The main Mod Browser widget is located at `/Modio/UI/Browser/Views/ModioModBrowserWidget.ModioModBrowserWidget`. After the Plugin has been initialized, you can show the Mod Browser via a new UI-focused subsystem `UModioUISubsystem` using the function `ShowModBrowserUIForPlayer()`.
The main Mod Browser widget is located at `Modio/Content/UI5/Default/Widgets/ModBrowser/W_ModioCommonModBrowser`. After the Plugin has been initialized, you can show the Mod Browser via a new UI-focused subsystem `UModioUISubsystem` using the function `ShowModBrowserUIForPlayer()`.
Currently the mod browser does not support being embedded inside your own UI hierarchy, so you must load it directly (for instance, from a button on your main menu).

NOTE: When showing the Mod Browser UI, you can pass in a `FOnModBrowserCloseRequested` delegate. You can use this delegate first to check conditions before finally closing the browser, more details below in <<Closing the Mod Browser>>.

.Blueprint Example
[%collapsible]
====
Expand All @@ -46,9 +48,9 @@ if (UModioUISubsystem* Subsystem = GEngine->GetEngineSubsystem<UModioUISubsystem
if (APlayerController* PC = CurrentWorld->GetFirstPlayerController())
{
// Create and bind a delegate to be invoked when the browser is closed
FOnModBrowserClosed BrowserClosedDelegate;
// OnModBrowserClosed needs to be marked UFUNCTION()
BrowserClosedDelegate.BindDynamic(this, &ASomeActor::OnModBrowserClosed);
FOnModBrowserCloseRequested OnBrowserCloseRequestedDelegate;
// OnModBrowserCloseRequested needs to be marked UFUNCTION()
OnBrowserCloseRequestedDelegate.BindDynamic(this, &ASomeActor::OnModBrowserCloseRequested);
// Get a reference to the mod browser implementation (this will be exposed in the UI Settings object
// in a future release)
Expand All @@ -59,7 +61,7 @@ if (UModioUISubsystem* Subsystem = GEngine->GetEngineSubsystem<UModioUISubsystem
{
// Request the browser widget be instantiated and displayed
UModioMenu* MenuWidget =
Subsystem->ShowModBrowserUIForPlayer(ReferencedClass, PC, BrowserClosedDelegate);
Subsystem->ShowModBrowserUIForPlayer(ReferencedClass, PC, OnBrowserCloseRequestedDelegate);
if (MenuWidget)
{
// Focus the user on the browser
Expand All @@ -72,6 +74,56 @@ if (UModioUISubsystem* Subsystem = GEngine->GetEngineSubsystem<UModioUISubsystem
----
====

You can close the Mod Browser by calling `CloseModBrowserUI()` on the ModioUISubsystem.

include::ui5-documentation.adoc[]
=== Closing the Mod Browser

The Mod Browser can currently be closed from within the Quick Access tab - accessed by via the user profile icon at the top right of the window - and clicking on the 'Main Game Menu' button.
This widget is located at `/Modio/Content/UI5/Default/Widgets/QuickAccess/W_ModioCommonQuickAccessTabView`, containing a `MainGameMenuButton` button, the input action for which can be customized in:

`Project Settings -> Modio Common UI Settings -> QuickAccess -> Quick Access Params -> MainGameMenuInputAction`

image::img/plugin_ui_browserquickaccess.png[]

NOTE: As mentioned in the <<Displaying the Mod Browser>> section a `FOnModBrowserCloseRequested` delegate is passed in, which is what is being called by the back button above.

The Mod Browser can be closed by calling `CloseModBrowserUI()` on the ModioUISubsystem, or conditionally after receiving the `FOnModBrowserCloseRequested` delegate callback.

.Blueprint Example
[%collapsible]
====
From Blueprint, you can use the <<CloseModBrowserUI>> node to manually close the mod browser.
image::img/plugin_ui_closemodbrowser.png[]
Or to perform the same logic being done with the back button, use <<ExecuteOnModBrowserCloseRequestedDelegate>> and then handle that callback to finally close the UI as above.
image::img/plugin_ui_closemodbrowser_2.png[]
====

.C++ Example
[%collapsible]
====
[source,c++, subs="+macros"]
----
if (UModioUISubsystem* Subsystem = GEngine->GetEngineSubsystem<UModioUISubsystem>())
{
Subsystem->CloseModBrowserUI();
}
----
Or to perform the same logic being done with the back button, use <<ExecuteOnModBrowserCloseRequestedDelegate>> and then handle that callback to finally close the UI as above.
[source,c++, subs="+macros"]
----
if (UModioUISubsystem* Subsystem = GEngine->GetEngineSubsystem<UModioUISubsystem>())
{
Subsystem->ExecuteOnModBrowserCloseRequestedDelegate();
}
----
====

include::ui5-documentation.adoc[]
3 changes: 2 additions & 1 deletion README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Once this is done, you can configure the plugin and get started.

The plugin requires some configuration information to behave correctly. You can access the configuration settings in the Project Settings window:

image::Doc/img/UE4/plugin_settings.png[]
image::Doc/img/plugin_settings.png[]

The settings have the following parameters:

Expand All @@ -88,6 +88,7 @@ The settings have the following parameters:
|[.paramname]#Environment#|Your current environment, Live or Test (check difference below)
|[.paramname]#Log Level#|The default logging level to use. Messages with a lower log level will be silently discarded.
|[.paramname]#Portal#|The default portal to use. This usually corresponds to the store your game will be being distributed through.
|[.paramname]#Use Background Thread#|Run the mod.io plugin on a managed background thread.
|===

==== Endpoint Environment
Expand Down
2 changes: 1 addition & 1 deletion Source/Modio/Modio.Build.cs
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,7 @@ private void AddCommonDefinitions()
}

// Enable Modio Profiling in non-shipping builds
if (Target.Configuration != UnrealTargetConfiguration.Shipping && DoesPlatformSupportProfiling(Target.Platform))
if (Target.Configuration != UnrealTargetConfiguration.Shipping && Target.Configuration != UnrealTargetConfiguration.Test && DoesPlatformSupportProfiling(Target.Platform))
{
PrivateDefinitions.Add("MODIO_ENABLE_PROFILING=1");
PrivateDefinitions.Add("MODIO_UNREAL_PROFILING_SUPPORT=1");
Expand Down
27 changes: 15 additions & 12 deletions Source/Modio/Private/Internal/ModioConvert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ std::map<std::string, std::string> ToModio(const TMap<FString, FString>& StringM

std::chrono::system_clock::time_point ToModioDateTime(FDateTime Time)
{
return std::chrono::system_clock::time_point(std::chrono::system_clock::duration(Time.ToUnixTimestamp()));
std::chrono::seconds DurationSinceEpoch(Time.ToUnixTimestamp());
return std::chrono::system_clock::time_point(DurationSinceEpoch);
}

int64 ToUnreal(std::int64_t Value)
Expand Down Expand Up @@ -153,6 +154,8 @@ Modio::GallerySize ToModio(EModioGallerySize GallerySize)
return Modio::GallerySize::Original;
case EModioGallerySize::Thumb320:
return Modio::GallerySize::Thumb320;
case EModioGallerySize::Thumb1280:
return Modio::GallerySize::Thumb1280;
}

checkf(false, TEXT("Missed a case in ToModio(EModioGallerySize GallerySize)"));
Expand Down Expand Up @@ -360,15 +363,15 @@ EModioModfilePlatform ToUnreal(const Modio::ModfilePlatform& PlatformIn)

EModioModChangeType ToUnreal(const Modio::UserSubscriptionList::ChangeType& In)
{
switch (In)
{
case Modio::UserSubscriptionList::ChangeType::Added:
return EModioModChangeType::Added;
case Modio::UserSubscriptionList::ChangeType::Removed:
return EModioModChangeType::Removed;
case Modio::UserSubscriptionList::ChangeType::Updated:
return EModioModChangeType::Updated;
default:
return EModioModChangeType::Removed;
}
switch (In)
{
case Modio::UserSubscriptionList::ChangeType::Added:
return EModioModChangeType::Added;
case Modio::UserSubscriptionList::ChangeType::Removed:
return EModioModChangeType::Removed;
case Modio::UserSubscriptionList::ChangeType::Updated:
return EModioModChangeType::Updated;
default:
return EModioModChangeType::Removed;
}
}
2 changes: 2 additions & 0 deletions Source/Modio/Private/Libraries/ModioImageLibrary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ FVector2D UModioImageLibrary::GetGallerySize(UTexture* GalleryImage, EModioGalle
: FVector2D(EForceInit::ForceInitToZero);
case EModioGallerySize::Thumb320:
return FVector2D(320, 180);
case EModioGallerySize::Thumb1280:
return FVector2D(1280, 720);
}

return FVector2D(EForceInit::ForceInitToZero);
Expand Down
45 changes: 29 additions & 16 deletions Source/Modio/Private/ModioSubsystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -788,35 +788,33 @@ void UModioSubsystem::K2_AuthenticateUserExternalAsync(const FModioAuthenticatio
User, Provider,
FOnErrorOnlyDelegateFast::CreateLambda([Callback](FModioErrorCode ec) { Callback.ExecuteIfBound(ec); }));
}
// Deprecated
void UModioSubsystem::GetTermsOfUseAsync(EModioAuthenticationProvider Provider, EModioLanguage Locale,
FOnGetTermsOfUseDelegateFast Callback)
{
GetTermsOfUseAsync(Locale, Callback);
}

void UModioSubsystem::GetTermsOfUseAsync(EModioLanguage Locale, FOnGetTermsOfUseDelegateFast Callback)
void UModioSubsystem::GetTermsOfUseAsync(FOnGetTermsOfUseDelegateFast Callback)
{
Modio::GetTermsOfUseAsync(ToModio(Locale), [Callback](Modio::ErrorCode ec, Modio::Optional<Modio::Terms> Terms) {
Modio::GetTermsOfUseAsync( [Callback](Modio::ErrorCode ec, Modio::Optional<Modio::Terms> Terms) {
AsyncTask(ENamedThreads::GameThread,
([Callback, ec, Terms]() { Callback.ExecuteIfBound(ec, ToUnrealOptional<FModioTerms>(Terms)); }));
});
}
// Deprecated
void UModioSubsystem::K2_GetTermsOfUseAsync_DEPRECATED(EModioAuthenticationProvider Provider, EModioLanguage Locale,
FOnGetTermsOfUseDelegate Callback)
{
K2_GetTermsOfUseAsync(Locale, Callback);
}

void UModioSubsystem::K2_GetTermsOfUseAsync(EModioLanguage Locale, FOnGetTermsOfUseDelegate Callback)
void UModioSubsystem::K2_GetTermsOfUseAsync( FOnGetTermsOfUseDelegate Callback)
{
GetTermsOfUseAsync(Locale, FOnGetTermsOfUseDelegateFast::CreateLambda(
GetTermsOfUseAsync(FOnGetTermsOfUseDelegateFast::CreateLambda(
[Callback](FModioErrorCode ec, TOptional<FModioTerms> Terms) {
Callback.ExecuteIfBound(ec, ToBP<FModioOptionalTerms>(Terms));
}));
}

void UModioSubsystem::SetLanguage(EModioLanguage Locale)
{
Modio::SetLanguage(ToModio(Locale));
}

void UModioSubsystem::K2_SetLanguage(EModioLanguage Locale)
{
SetLanguage(Locale);
}

void UModioSubsystem::ClearUserDataAsync(FOnErrorOnlyDelegateFast Callback)
{
Modio::ClearUserDataAsync([Callback](Modio::ErrorCode ec) {
Expand Down Expand Up @@ -1140,6 +1138,21 @@ bool UModioSubsystem::IsUsingBackgroundThread()
return bUseBackgroundThread;
}

FString UModioSubsystem::GetDefaultModInstallationDirectory(FModioGameID GameID)
{
return ToUnreal(Modio::GetDefaultModInstallationDirectory(ToModio(GameID)));
}

FString UModioSubsystem::GetDefaultModInstallationDirectory(int64 GameID)
{
return GetDefaultModInstallationDirectory(FModioGameID(GameID));
}

FString UModioSubsystem::K2_GetDefaultModInstallationDirectory(FModioGameID GameID)
{
return GetDefaultModInstallationDirectory(GameID);
}

EModioLanguage UModioSubsystem::ConvertLanguageCodeToModio(FString LanguageCode)
{
if (LanguageMap.Contains(LanguageCode))
Expand Down
Loading

0 comments on commit c4de58f

Please sign in to comment.